gpt4 book ai didi

c++ - 进程间映射与映射/无序映射

转载 作者:行者123 更新时间:2023-11-30 01:30:31 24 4
gpt4 key购买 nike

关于 std::map 和 boost::unordered_map 之间的区别有很多讨论。但是 boost::interprocess::map 呢?

有人在 boost::interprocess::map 和 std::map 之间进行过性能测试吗?

我没有经常使用 interprocess::map 但我感觉超过 1M 个元素,它变得非常慢。

谢谢

最佳答案

Boost 进程间容器是带有自定义分配器的标准容器。

原因:当两个进程共享内存时,内存在两个进程中被映射到不同的地址。为了能够使用指向共享内存对象的指针,不能使用绝对地址,而必须使用相对偏移量(这在两个进程中是相同的)。

所以与 boost::interprocess 相关的分配器类在取消引用时涉及额外的算术。他们定义了一个自定义的 pointer 类型,使用起来比普通指针稍微重一些。

除此之外,容器与标准容器完全相同。同样的复杂性,并且元素访问的开销很小(额外增加)。例如,mapunordered_map 之间的区别将在使用特殊的进程间分配器时反射(reflect)出来。

关于c++ - 进程间映射与映射/无序映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265543/

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