我在一本C++优化手册上读到,STL容器(如std::list、std::set、std::multi_set、std::map和std::multi_map)的标准分配器可以被更高效的块分配器替代。
块分配器具有更高的性能、低的碎片化和高效的数据缓存。
我在网上找到了FSBAllocator,它声称比标准分配器更快。 http://warp.povusers.org/FSBAllocator/ 我尝试使用它来处理std::map,发现确实比标准分配器更快。但我的问题是,为什么STL的实现会比特定的分配器慢那么多?采用其他分配器是否会影响可移植性和鲁棒性?我的代码必须能够在各种体系结构上编译(win32、osx、linux)。 是否有人使用过这种固定大小块分配器?
块分配器具有更高的性能、低的碎片化和高效的数据缓存。
我在网上找到了FSBAllocator,它声称比标准分配器更快。 http://warp.povusers.org/FSBAllocator/ 我尝试使用它来处理std::map,发现确实比标准分配器更快。但我的问题是,为什么STL的实现会比特定的分配器慢那么多?采用其他分配器是否会影响可移植性和鲁棒性?我的代码必须能够在各种体系结构上编译(win32、osx、linux)。 是否有人使用过这种固定大小块分配器?