Aug
20
今天做比赛的时候Cplus用STL的list写一个3000个vertex的图的邻接表MLE了,所以产生了测试STL容器内存占用的念头。
没下什么软件,也没用系统什么命令,就是写个程序插入500,000个元素到这些容器中,然后分别提交到WOJ 1035进行测试。
因为1035的内存限制是64M,时间限制是1000ms,所以没有用更大的数据进行测试,但是测试结果确实能说明一些问题了:
实测环境:WOJ 1035 BG
数据量: 500,000个int(map使用的是<int,int>)
结果:
容器 内存占用 时间
array 3060K 4ms
deque 3200K 15ms
queue 3204K 19ms
stack 3204K 19ms
vector 5168K 14ms
priority_queue 5172K 650ms
list 16768K 132ms
set 24584K 922ms
map<int,int> 24584K 913ms
不知道为什么list会占用那么大的空间,看来以后对list的使用要谨慎再谨慎了。
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
没下什么软件,也没用系统什么命令,就是写个程序插入500,000个元素到这些容器中,然后分别提交到WOJ 1035进行测试。
因为1035的内存限制是64M,时间限制是1000ms,所以没有用更大的数据进行测试,但是测试结果确实能说明一些问题了:
实测环境:WOJ 1035 BG
数据量: 500,000个int(map使用的是<int,int>)
结果:
容器 内存占用 时间
array 3060K 4ms
deque 3200K 15ms
queue 3204K 19ms
stack 3204K 19ms
vector 5168K 14ms
priority_queue 5172K 650ms
list 16768K 132ms
set 24584K 922ms
map<int,int> 24584K 913ms
不知道为什么list会占用那么大的空间,看来以后对list的使用要谨慎再谨慎了。
欢迎扫码关注:
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
sandy1
2008-8-21 00:50
这个肯定啊,list,set,map等这类指针构筑存储结构肯定会多出很多额外的空间占用的。特别对于大量小体积的数据类型更明显。如果是int的话,list的占用应该是vector的3倍左右吧。
felix021 回复于 2008-8-21 01:05
set和map都还好理解,list就一个双链表。。。
分页: 1/1 1