据我所知,0MQ应该比集群环境中的TCP套接字快,我可以看到情况就是这样(我认为这就是他们所说的“比TCP更快,对于集群产品”和“超级计算”在0MQ网站上)。但是,我是否会看到使用0MQ而不是TCP套接字在同一台机器上运行的两个进程之间进行通信的任何加速?
答案 0 :(得分:6)
嗯,简短的版本是试一试。
稍微长一点的版本是编写TCP套接字可能很难,有很多东西很容易出现问题,但0MQ保证消息将完整传递。它也是由网络套接字的专家编写的,在世界上最好的意愿,你可能不是,他们使用一些先进的技巧来加快速度。
答案 1 :(得分:4)
您实际上并未在一台计算机上运行,因为VM被视为一台单独的计算机。这意味着TCP套接字必须贯穿整个网络堆栈,并且不能像在一台机器上的进程之间进行通信时那样采用快捷方式。
但是,您可以尝试在ZeroMQ下进行UDP多播,看看是否可以加速您的应用程序。 UDP在广域网上的可靠性较低,但在VM与其主机通信的封闭环境中,您可以安全地跳过所有TCP可靠性内容。
答案 2 :(得分:1)
我想IPC应该比TCP更快。如果您愿意转向单一流程,INPROC肯定会更快。
答案 3 :(得分:0)
我认为(尚未测试)答案是错误的,因为ZMQ可能使用相同的标准C lib并添加了一些消息头。
同样适用于UDP。
同样适用于IPC管道。
ZMQ可能同样快,但由于它添加标题不太可能。
现在,如果你真的需要某种标题并且ZMQ比你更好地实现它,那么它可能是一个不同的故事。喜欢消息大小或类型,但我离题了。