2011-10-16 163 views
1

我只是跑了zeroMQ Hello World示例和定時請求 - 響應延遲。它使用IPC協議平均運行約0.1ms。這聽起來對我來說很慢....這聽起來是對的嗎?消息延遲

 long start=System.nanoTime(); 
     socket.send(request, 0); 
     // Get the reply. 
     byte[] reply = socket.recv(0); 
     System.out.println((System.nanoTime()-start)/1000000.0); 
+1

你意識到你的輸出是十分之幾毫秒,是嗎? –

+3

您有超過30個問題沒有被接受的答案。也許你可以查看你給出的答案,看看他們是否可以接受。 –

+0

Thx Brian ....我糾正了我原來的帖子...它的0.1ms不是1毫秒。 –

回答

3

我假設你的平均值有一個以上的樣本?在進行平均測試之前,我會運行測試至少2-10秒。同一進程/線程中的平均延遲可能會引起誤解。

我會創造呼應的一切它得到,如果你不這樣做已經是第二個過程。 (除非你需要RTT等待時間,將延遲除以2)

普通套接字在典型的多核心盒子上可以獲得20微秒的RTT等待時間,我期望IPC更快。在一臺快速PC上,使用插座可以獲得9微秒的典型RTT延遲。如果你想延遲遠低於此,我會考慮在一個進程或一個線程中做所有事情(如果可以的話),在這種情況下,方法調用的成本約爲10納秒(如果沒有內聯;)

+0

如果我在mac os x上運行並且有很多其他線程正在運行,這個數字會發生多少變化?線程在運行之前是否必須等待其時間片? –

+0

操作系統不會有太大的變化。只要你有一個免費的核心,運行的線程數量並不重要。 –

+0

我跑了10秒左右,最低的RTT約爲53微秒......我認爲zeromq應該是快速的?與你提到的20微秒標記相差甚遠。 –