2010-05-18 121 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