IPC速度和比较

Lil*_*ily 9 sockets ipc real-time pipe shared-memory

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

这是我的情况:

  • 我已经隔离了IPC部分,以便将来可以改变其他方式.
  • 我有3周的时间来实现另一个更快的版本.;-(
  • IPC应该很快,但也比较容易上手

我一直在研究不同的IPC方法:套接字,管道,共享内存.但是,我没有IPC的经验,我绝对没有办法在3周内让这个演示失败......哪种IPC是安全的开始?

谢谢.百合

小智 5

我自己也面临着类似的问题。

我发现以下页面很有用-IPC性能:Windows上本地IPC的命名管道与套接字(特别是)和套接字与命名管道?

听起来好像已经达成共识:如果您确实关心性能,那么共享内存是您的最佳选择,但是如果您当前使用的系统是一个消息队列,那么它可能是一个相当不同的结构。套接字和/或命名管道可能更易于实现,如果符合您的规范,就可以在这里完成。


chr*_*xor 5

共享内存解决方案将为您带来最佳结果。

最近,我遇到了相同的IPC基准测试。而且我认为我的结果对所有想比较IPC性能的人都会有用。

管道基准:

Message size:       128
Message count:      1000000
Total duration:     27367.454 ms
Average duration:   27.319 us
Minimum duration:   5.888 us
Maximum duration:   15763.712 us
Standard deviation: 26.664 us
Message rate:       36539 msg/s
Run Code Online (Sandbox Code Playgroud)

FIFO(命名管道)基准:

Message size:       128
Message count:      1000000
Total duration:     38100.093 ms
Average duration:   38.025 us
Minimum duration:   6.656 us
Maximum duration:   27415.040 us
Standard deviation: 91.614 us
Message rate:       26246 msg/s
Run Code Online (Sandbox Code Playgroud)

消息队列基准:

Message size:       128
Message count:      1000000
Total duration:     14723.159 ms
Average duration:   14.675 us
Minimum duration:   3.840 us
Maximum duration:   17437.184 us
Standard deviation: 53.615 us
Message rate:       67920 msg/s
Run Code Online (Sandbox Code Playgroud)

共享内存基准测试:

Message size:       128
Message count:      1000000
Total duration:     261.650 ms
Average duration:   0.238 us
Minimum duration:   0.000 us
Maximum duration:   10092.032 us
Standard deviation: 22.095 us
Message rate:       3821893 msg/s
Run Code Online (Sandbox Code Playgroud)

TCP套接字基准:

Message size:       128
Message count:      1000000
Total duration:     44477.257 ms
Average duration:   44.391 us
Minimum duration:   11.520 us
Maximum duration:   15863.296 us
Standard deviation: 44.905 us
Message rate:       22483 msg/s
Run Code Online (Sandbox Code Playgroud)

Unix域套接字基准测试:

Message size:       128
Message count:      1000000
Total duration:     24579.846 ms
Average duration:   24.531 us
Minimum duration:   2.560 us
Maximum duration:   15932.928 us
Standard deviation: 37.854 us
Message rate:       40683 msg/s
Run Code Online (Sandbox Code Playgroud)

ZeroMQ基准:

Message size:       128
Message count:      1000000
Total duration:     64872.327 ms
Average duration:   64.808 us
Minimum duration:   23.552 us
Maximum duration:   16443.392 us
Standard deviation: 133.483 us
Message rate:       15414 msg/s
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

9833 次

最近记录:

6 年,10 月 前