我刚刚运行了 zeroMQ hello world 示例并对请求-响应延迟进行了计时。使用 IPC 协议(protocol)运行平均大约 0.1 毫秒。这对我来说听起来很慢....这听起来对吗?
long start=System.nanoTime();
socket.send(request, 0);
// Get the reply.
byte[] reply = socket.recv(0);
System.out.println((System.nanoTime()-start)/1000000.0);
最佳答案
我假设你的平均值有一个以上的样本?在取平均值之前,我会运行测试至少 2-10 秒。同一进程/线程中的平均延迟可能会产生误导。
如果您还没有这样做,我会创建第二个进程来回显它得到的所有内容。 (除非你想要 RTT 延迟,否则将延迟一分为二)
Plain Sockets 在典型的多核盒子上可以获得 20 微秒的 RTT 延迟,我希望 IPC 更快。在高速 PC 上,使用套接字可以获得 9 微秒的典型 RTT 延迟。
如果您希望延迟比这低得多,我会考虑在一个进程或一个线程中执行所有操作(如果可以的话),在这种情况下,方法调用的成本约为 10 ns(如果它不是内联的;)
关于java - Java 中的消息传递延迟(使用 zeromq),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7786287/