天天看点

利用内存chunk充当数据buffer的vector的实现,和STL vector 有接口操作性能比较

1.vector是最常用到的容器,它其实是一种自动扩充的动态数组,底层实现通过两倍扩展,

   所以再不能预知要存入元素多少时,难免要两倍扩展,这带来了拷贝所存对象的开销;

2.本文尝试利用memory chunk作为底层存储容器来避免动态扩展时copy 开销;

3.本实现屏蔽了stl  vector 一些接口比如erase,主要是为了减轻实现复杂性考虑;

4.它支持两边插入和删除操作,其接口功能完全等同于stl 的deque;

5.和stl vector 做了push_back, pop_back, at 操作性能比较,结果如下:

    1)push_back 操作,性能改善了4-5倍;

    2)at操作,基本上相当;

    3)pop_back性能变慢了3-4倍;

    4)  尽管pop_back性能变慢了,但是我的实现内存大小是可伸缩的;

compile and run in visual studio 2005

test result as follows:

利用内存chunk充当数据buffer的vector的实现,和STL vector 有接口操作性能比较

继续阅读