1

什么是基于节点的容器(如 list、map 和 multi_map)的最佳分配器?我有boost::unordered_map<std::array<char, 32>, int>400 万个条目。应避免 400 万次单独分配(出于性能考虑)。

理想情况下,分配器将分配多个(非常)大块并将它们划分为每个节点开销为 0 的节点。应该跟踪空闲节点,但在整个池被破坏或重置之前不需要释放块。池不应该是线程安全的(为了性能)。

我可以尝试自己写,但我不喜欢重新发明轮子。事先不知道节点端似乎也有问题。

Boost 有 Pool,但它似乎只提供单例使用。

4

1 回答 1

1

您可以调整/包装Loki 小对象分配器。它适用于相同尺寸的小物体。另一种选择是使用Boost.Pool。它支持面向对象(非单例)的使用,但您必须将其包装到由boost::unordered_map.

于 2012-05-02T17:34:36.403 回答