标签: real-time

Haskell的GC性能如何用于游戏等软实时应用程序?

因为我意识到游戏规则逻辑应该处理巨大的复杂性,我正在考虑在游戏领域中使用非典型语言作为游戏中的逻辑脚本语言.游戏中脚本的原因是用较少的代码表示复杂的逻辑.因此需要极其抽象的语言.

但大多数提取良好的语言都使用GC.通常,GC会产生CPU突发负载.基本上它推迟了清除内存操作,并立即执行.对包括游戏和GUI在内的实时图形至关重要.

AFAIK,Haskell的GC与其他基于GC的语言略有不同,因为它是不可变的属性.很难想象.我没有详细找到任何文件.

有什么不同?对于长时间运行的程序,CPU是否可以免费使用?(随着时间的推移分布均匀,可以为每个滴答调用手动完成GC命令)

performance garbage-collection haskell real-time soft-real-time

23
推荐指数
1
解决办法
2187
查看次数

FB Realtime API没有/不一致地通知某些连接(音乐,电影,书籍,电视)

我目前遇到了Facebook的实时API问题.

我希望订阅用户个人资料中的一些内容,包括他们在音乐,书籍,电视和电影类别中的"喜欢".

当我通过FQL和Graph查询时,我得到了正确的信息,但是当这些条目在用户配置文件上发生更改时,Facebook没有ping我的通知端点.

订阅和验证都很好.以下是来自我的App的Facebook的有效订阅:

["object"]=> string(4) "user"
  ["callback_url"]=> <correct callback URL>/facebook/update/"
  ["fields"]=>array(11) {
    [0]=> string(13) "birthday_date"
    [1]=> string(5) "books"
    [2]=> string(10) "first_name"
    [3]=> string(7) "friends"
    [4]=> string(5) "likes"
    [5]=> string(6) "movies"
    [6]=> string(5) "music"
    [7]=> string(4) "name"
    [8]=> string(3) "sex"
    [9]=> string(2) "tv"
    [10]=> string(8) "username"
  }
  ["active"]=> bool(true)
Run Code Online (Sandbox Code Playgroud)

起初我没有订阅,likes但补充说,看看它是否解决了问题......它没有.

文件说:

以下是您可以订阅的用户连接列表:供稿,朋友,活动,兴趣,音乐,书籍,电影,电视,喜欢,签到

我得到通知,当任何数据变化(包括friends),这仅仅是music,books,moviestelevision.

也许更奇怪的是,当我"喜欢"一个随机的Facebook页面(即使用类似按钮,而不是将其添加到我的个人资料中的字段)时,我会在该like字段上触发通知.当我不像同一页上,我得到的通知触发likes,music,books,moviestelevision! …

facebook real-time facebook-fql facebook-graph-api

23
推荐指数
1
解决办法
1178
查看次数

什么语言用于实时系统编程?

我没有找到任何关于实时系统的编程语言的有用信息.我发现的只有实时系统和编程语言:Ada 95,实时Java和实时C/POSIX(这里有一些pdf),它似乎谈论了实时系统的Java和C扩展(我不知道)有书要读).此外,该书于2001年出版,现在信息可能已经过时.

所以,我怀疑这些语言是否用于现实世界的应用程序,或者现实世界中的实时系统是否用其他语言制作,如DSL.

如果第二个选项适合您,您使用的语言的突出特点是什么?

programming-languages real-time

22
推荐指数
6
解决办法
4万
查看次数

实时数据从服务器推送到iOS设备而无需APNS

我正在构建一个需要从服务器进行实时更新的iOS应用程序,我想在没有轮询的情况下完成此任务.

有没有人知道有助于实现这一功能的技术,工具,产品或库?

push real-time ios

22
推荐指数
1
解决办法
1万
查看次数

如何从linux调度程序屏蔽cpu(防止它将线程调度到该cpu)?

可以使用sched_setaffinity将线程固定到cpu,从而提高性能(在某些情况下)

从linux手册页:

限制在单个CPU上运行的进程还可以避免在进程停止在一个CPU上执行然后重新开始在另一个CPU上执行时发生的高速缓存失效导致的性能成本

此外,如果我想要更实时的响应,我可以将该线程的调度程序策略更改为SCHED_FIFO,并将优先级更高为某个高值(最多sched_get_priority_max),这意味着所讨论的线程应始终抢占任何其他运行的线程在它准备就绪的cpu上.

但是,此时,在实时线程刚刚抢占的cpu上运行的线程可能已经驱逐了大部分实时线程的1级缓存条目.

我的问题如下:

  1. 是否可以阻止调度程序将任何线程调度到给定的cpu上?(例如:要么完全从调度程序中隐藏cpu,要么以其他方式)
  2. 是否有一些线程绝对必须能够在该CPU上运行?(例如:内核线程/中断线程)
  3. 如果我需要在该cpu上运行内核线程,那么使用什么是合理的最大优先级值,这样我就不会匮乏内核线程?

linux performance scheduling real-time

22
推荐指数
2
解决办法
2万
查看次数

高性能网络的Netty替代品有哪些?

我正在选择一个网络库来实现一个不能消耗任何微秒的客户端/服务器系统.它将实现自己的协议来发送和接收消息.我正在寻找一个好的NIO框架,这将允许我轻松开发服务器和客户端,而不必过多担心低级别的选择器细节.每个人都建议我使用Netty,但在向团队提交框架之前,我想尝试2或3个其他选择.我不太喜欢Netty的一件事是它如何使用自己的ByteBuf实现和引用计数来处理ByteBuffers.谁能分享你的想法和选择?

java networking nio real-time netty

22
推荐指数
3
解决办法
3万
查看次数

Lisp在嵌入式平台上

有没有适合实时嵌入式应用程序的开源Lisp编译器?即增量垃圾收集,可定制内存处理,占用空间小等.

编辑:

为了澄清,"编译器"我的意思是本机代码,而不是字节码解释器(尽管建议的微控制器解释实现比我想象的要小得多!).

lisp embedded real-time

21
推荐指数
3
解决办法
1万
查看次数

如何优雅地中断urllib2下载?

我用urllib2的是build_opener()创造一个OpenerDirector.我正在使用它OpenerDirector来获取慢速页面,因此它有一个很大的超时.

到现在为止还挺好.

但是,在另一个线程中,我被告知要中止下载 - 假设用户已经选择退出GUI中的程序.

有没有办法发出urllib2下载应该退出的信号?

python real-time urllib2

21
推荐指数
1
解决办法
2436
查看次数

在C++中vtable查找的性能损失

我正在评估将一个实时软件从C /汇编语言重写为C++ /汇编语言(由于与代码问题无关的原因,在汇编时绝对需要这样做).

中断带有3 kHz频率,对于每个中断,大约200个不同的事情将按顺序完成.处理器以300 MHz运行,为我们提供100,000个周期来完成这项工作.这已在C中用函数指针数组求解:

// Each function does a different thing, all take one parameter being a pointer
// to a struct, each struct also being different.
void (*todolist[200])(void *parameters);

// Array of pointers to structs containing each function's parameters.
void *paramlist[200];

void realtime(void)
{
  int i;
  for (i = 0; i < 200; i++)
    (*todolist[i])(paramlist[i]);
}
Run Code Online (Sandbox Code Playgroud)

速度很重要.上述200次迭代每秒完成3000次,因此实际上我们每秒进行600,000次迭代.上面的for循环每次迭代编译为五个周期,总成本为每秒3,000,000个周期,即1%的CPU负载.汇编程序优化可能会将其降低到四个指令,但是我担心由于内存访问彼此接近等原因,我们可能会得到一些额外的延迟.简而言之,我相信这五个周期非常理想.

现在进行C++重写.我们做的那200件事情彼此有关.有一个参数的子集,它们都需要和使用,并具有各自的结构.在C++实现中,它们可以被巧妙地视为从公共基类继承:

class Base
{
  virtual void Execute();
  int something_all_things_need;
}
class Derived1 : Base
{
  void Execute() { …
Run Code Online (Sandbox Code Playgroud)

c c++ virtual-functions real-time vtable

21
推荐指数
4
解决办法
6704
查看次数

如何解决背板扩展中SignalR的局限性

我使用ASP.NET MVC和C#.我发现SignalR实时传输数据,但signalR有一些限制.

根据这个问题:

使用背板时,最大消息吞吐量低于客户端直接与单个服务器节点通信时的吞吐量.这是因为背板将每条消息转发到每个节点,因此背板可能成为瓶颈.此限制是否存在问题取决于应用程序.例如,以下是一些典型的SignalR场景:

  • 服务器广播(例如,股票代码):背板适用于此场景,因为服务器控制消息的发送速率.
  • 客户端到客户端(例如,聊天):在这种情况下,如果消息数量与客户端数量成比例,则背板可能成为瓶颈; 也就是说,如果消息的速率随着更多客户端的加入而成比例增长.
  • 高频实时(例如,实时游戏):不建议在这种情况下使用背板.

我的项目需要高频实时(例如,实时游戏).

我还需要实时视频聊天

我的情景:

我有一个主服务器和多个从服务器,客户端连接到从服务器和ans从服务器连接到主服务器.

示例:服务器Slave-1和服务器Slave-2连接到主服务器,客户端A和客户端B连接到Slave-1,客户端C和客户端D连接到Slave-2,

客户端-A发送消息或数据或与客户端-D进行实时聊天

我如何实现这种情况?

[更新-1]

如果我没有使用signalR来解决这个问题,那么我应该使用什么?

[更新-2]

在我的场景中,主服务器就像一个路由器,而奴隶服务器就像一个交换机.连接到交换机和交换机的客户端连接到路由器.如果客户端-A发送数据包到客户端C,数据包应该发送到路由器和路由器处理数据包.超过2000个可能数量的从服务器和每个服务器的用户数量它超过10,000.

谢谢.

.net c# asp.net real-time signalr

21
推荐指数
1
解决办法
1万
查看次数