目前我使用STL矢量容器模板放回并获取连接。
1)在get上,返回一个连接并从池向量中“擦除()”。
2)在发布时,连接通过“push_back()”传回池中。
如果经常使用池,这可能会非常重。所以我的问题是,有没有办法通过切换到其他数据结构来提高性能?
答案 0 :(得分:11)
vector
就可以了。deque
。list
。set
可能是另一种选择。在任何情况下,您都应该配置表现;为主容器使用typedef,以便快速切换和测试不同的选项。
可能还有其他要求,您没有告诉我们,但对于容器的选择非常重要:
答案 1 :(得分:3)
std::vector
可能是游泳池的最佳容器。 O(1)用于插入,如果您不需要维护订单,也可以删除O(1)。您可以在删除项目的情况下交换最后一项,然后缩小矢量。与其他容器相比,std::vector
相当节省空间。由于CPU缓存命中率较高,内存消耗低也意味着性能更佳。
答案 2 :(得分:2)
如果您事先知道可能的最大连接数,请保留向量(请参阅vector :: reserve)。
否则使用std :: list。
最后,它还取决于您的平台以及所使用的编译器和libstdc ++的版本。