2010-05-18 94 views
6

我试图实现跨越不同模块的IPC实时应用程序。这些模块正在进行一些数据密集型处理。我在原型中使用消息队列作为IPC的主干(Activemq),这很容易(考虑到我是一个完全IPC新手),但它非常慢。IPC速度和比较

这里是我的情况:

  • 我已分离出IPC部分,这样我可以在未来改变它的其他方式。
  • 我有3个星期来实现另一个更快的版本。 ;-(
  • IPC应该是快,但也比较容易拿起

我一直在寻找到不同的IPC方法:插座,管道,共享内存。然而,我在IPC没有经验,肯定是有没有办法,我能不能在3周内该演示...这IPC将是安全的方式开始吗?

感谢。 百合

回答

4

面临着类似的问题,我去过。

我有发现以下页面有帮助 - IPC performance: Named Pipe vs Socket(特别是)和Sockets vs named pipes for local IPC on Windows?

这听起来像共识是共享内存是如果你真的想关注性能,但如果你有当前系统是消息队列它可能是一个相当不同的结构。一个套接字和/或命名管道可能更容易实现,如果要么符合你的规格,那么你就完成了。

3

在Windows上,您可以使用WM_COPYDATA,这是一种特殊的基于共享内存的IPC。这是一种古老而简单的技术:“进程A”发送一条消息,其中包含一个指向内存中某些数据的指针,并等待“进程B”处理(遗憾)消息,例如创建数据的本地副本。这种方法非常快,并且也可以在Windows 8 Developer Preview上使用(请参阅我的benchmark)。任何类型的数据都可以通过这种方式传输,通过在发送方上序列化,并在接收端进行反序列化。实现发送方和接收方消息队列也很简单,以使通信异步。

+0

根据你的标杆,我只是想知道,为什么WIN7有如此糟糕的表现。 – stanleyxu2005 2012-05-22 14:12:06

+1

,因为它是一个相对较慢的上网本,单核Atom CPU – kol 2012-05-25 11:52:16

3

您可以检查出这篇博客https://publicwork.wordpress.com/2016/07/17/endurox-vs-zeromq/

基本上它比较耐力赛/ X,这是建立在POSIX队列(内核队列IPC)与ZeroMQ,这可能在几个不同的运输类同时提供短信,含。 tcp://(网络套接字),ipc://,inproc://pgm://epgm://

从图表中可以看到,在某些点上,队列上运行的Enduro/X数据包较大,胜过套接字。

这两个系统都运行良好,每秒消息大约为400000条,但使用5KB消息时,内核队列运行得更好。

Source: https://publicwork.wordpress.com/2016/07/17/endurox-vs-zeromq/

(图片来源:https://publicwork.wordpress.com/2016/07/17/endurox-vs-zeromq/


UPDATE: 另一个更新的答案吼叫评论,我做了重新检测到ipc://运行ZeroMQ也看到了图片:

Source: https://publicwork.wordpress.com/2016/07/17/endurox-vs-zeromq/

正如我们所看到的ZeroMQ ipc://较好,但同样在一定范围内耐力赛/ X显示了较好的效果,然后再ZeroMQ接管。

因此我可以说,IPC选择取决于你打算做的工作。

注意ZeroMQ IPC对POSIX管道运行。 Enduro/x在POSIX队列上运行。

+1

让我问一下,你有没有注意到,**引用的测试/比较**是**没有在相同的传输类上使用** ZeroMQ **'tcp://'** to **'ipc://'**)?你能够**提供一个公平的苹果到苹果的比较结果** ** ** Enduro/X和ZeroMQ都使用**'IPC' **? – user3666197 2016-11-15 11:35:22

+1

请参阅上面的内容,我已使用ipc:// – 2016-11-15 13:29:16

+0

+1进行了重新测试,以获得照顾。 Enduro/X如何在多个传输类混合使用的分布式系统中处理BLOB的情况下工作:'tcp://'(对于集群分布式SIG)+'inproc://'(用于最快/最低延迟进程内消息传递)+'epgm://' (用于最终内容流)?性能缩放如何工作 - 一旦在给定数量的I/O线程('.Context()'引擎可以操作的情况下添加2,4,8,16,32,64,128,256,512,1024对等点)? – user3666197 2016-11-15 15:43:16