看STL源码剖析,今天对几个容器做了个简单的测试。
就是连续插入1亿个整数,看内存占用,时间消耗。
发现:
deque,400M,2s
vector,800M,2s
list,2400M,40s
分析:deque是分段连续空间,vector是线性连续,list每个节点
都是独立的。deque用多少给多少,vector预留了空间,大概是所需空间
的2倍,list是双向链表,再加上为动态存储分配时额外的开销,消耗空间
巨大无比。
2亿个数的情况下,deque正常,800M,4s,
vector在分配到800M左右时被终止,应该是系统没有那么大的连续空间了,
list在分配到2400M时也被终止,应该是达到了进程堆空间的限制了。