gpt4 book ai didi

c++11 - 对于 IPC 共享对象 -ZeroMQ 或 Boost::interprocess 哪个更快?

转载 作者:行者123 更新时间:2023-12-04 23:36:52 74 4
gpt4 key购买 nike

我正在考虑自定义对象的进程间共享。我当前的实现使用 ZeroMQ,其中对象被打包成一条消息并从进程 A 发送到进程 B。

我想知道使用 boost::interprocess 实现并发容器是否会更快(其中进程 A 将插入到容器中,进程 B 将从中检索)。不确定这是否比在进程 A 中序列化对象然后在进程 B 中反序列化它更快。

只是想知道是否有人做过基准测试?比较两者在概念上是否正确?

最佳答案

原则上,ZeroMq 应该更慢,因为它使用的比喻是消息的传递。这些类型的库不是为了共享内存区域,也不是为了让不同的进程能够同时修改它们。

具体来说,您提到了“包装”。在共享内存区域时,您可以 - 理想情况下 - 避免任何打包并按原样处理数据(当然,在并发使用相同的数据结构时需要小心,使用偏移量而不是指针等)

还要注意的是,即使共享是一个单向的来回(即一次只有一个进程访问任何数据),ZeroMq也只能匹配IPC共享内存的使用,如果它支持一路零复制下。从 zero-copying 上的常见问题解答页面我不清楚这一点。 (但无论如何都可能是这种情况)。

关于c++11 - 对于 IPC 共享对象 -ZeroMQ 或 Boost::interprocess 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51981558/

74 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com