在处理小对象时,哪些分配器可用于 STL。我已经尝试过使用 Boost 中的池分配器,但没有得到性能提升(实际上,在某些情况下有相当大的性能下降)。
问问题
1282 次
3 回答
3
你没有说你使用什么编译器,但它可能带有一堆预先构建的分配器。这是在带有gcc 4.2.1的 Mac 上:
~$ find /usr/include/c++/4.2.1/ -name "*allocator*" /usr/include/c++/4.2.1/bits/allocator.h /usr/include/c++/4.2.1/ext/array_allocator.h /usr/include/c++/4.2.1/ext/bitmap_allocator.h /usr/include/c++/4.2.1/ext/debug_allocator.h /usr/include/c++/4.2.1/ext/malloc_allocator.h /usr/include/c++/4.2.1/ext/mt_allocator.h /usr/include/c++/4.2.1/ext/new_allocator.h /usr/include/c++/4.2.1/ext/pool_allocator.h /usr/include/c++/4.2.1/ext/throw_allocator.h
这里还有一个指向BitMagic项目页面的链接,该页面讨论了如何构建自己的项目。还可以查看Loki 库中的小型对象分配器(以及这本书)。
于 2010-04-03T20:59:17.593 回答
1
您需要一个适合您特定需求的分配器。STL 通用分配器最适合各种情况,如果您想要一个新的分配器,您将需要分析和了解您的具体要求。您必须更具体地确定要将这些对象放入哪个容器中。
于 2010-04-03T23:53:49.470 回答
1
Microsoft Visual C++ 标准库实现为基于节点的容器提供了几个专有分配器(至少在即将发布的 Visual Studio 2010 中是这样)。
于 2010-04-03T20:57:06.893 回答