几个常用数据容器的测试结果

测试环境:

 

操作系统:windows xp 32         开发调试工具:visual stdio 2005

CPU intel E6550 2.33G 双核         内存:2GB

 

测试数据模型:

 

三种MAP的键(key):(value)类型:

Map<int,int>      hash_map<int, int> ACE_Hash_Map_Manager<int,int>

 

Deque list的节点数据结构为:

Struct TestNode{

       Int m_nValue1;

       Int m_nValue2;

};

 

Deque<TestNode>  list<TestNode>

 

容器类型

插入

查找100W

遍历

迭代删除

占用内存

Stl:map

17017

7007

2002

17017

89,080K

Stl:hash_map

308308

3003

2002

 

84,300K

ACE_Hash_Map_Manager

48048

46046

0.343

2002

81,140K

 

 

 

 

 

 

Stl:deque

5005

 

1001

23023

44,015K

Stl:list

4004

 

2002

18018

81,188K

Stl:list(10W)

0.468

 

0.234

2002

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Stl:map stl:hash_map ACE_Hash_Map比较:

 

1、  stl:map 的插入、删除都比hash_map快,只是查找相对要慢一点点;

2、  stl:hash_map 的插入是 三者中最低效的,但是其查找速度确实比较快;

3、  ACE_Hash_Map的插入和查找都比较慢,只是遍历和删除要优于其他两者;

综合来看,stl:map在各方面表现都比较平均,而stl:hash_map仅仅在查找速度上超越stl:map一点,ACE_Hash_Map在查找速度上表现就很可怜。所以,如果对数据操作时插入、查找、删除、遍历都要用到时,推荐使用stl:map;如果对数据的操作,一开始就把所有数据读取完毕,后面只会用到查找,不会对数据进行插入、删除时,推荐使用stl:mapACE_Hash_Map在支持STL的平台上不推荐使用,可用到没有STL的平台上。

 

容器容量

insert

Push

遍历

erase

pop

占用内存

10W

546

0.125

0.187

2002

0.031

6.9M

100W

5005

1001

1001

23023

0.312

44.36M

1000W

50050

11011

18018

238238

2002

421M

 

 

 

 

 

 

 

Deque list 的比较:

 

1、  deque 在内存分配策略上要比list更优;

2、  由于deque是大块大块的分配内存,所以在数据量小的时候,deque占用内存可能比list大,但是当数据量达到成万以上时,deque内存分配现越来越优秀,占用内存甚至只有list的一半以下。所以,如果单个容器中数据比较少,优先使用list;如果单个容器中数据量比较大,推荐使用deque

3、  deque 10W级别以上的数据测试中,在中间插入和采用迭代删除要比list慢一些,但是迭代所花时间几乎是list的一半;

4、  deque 采用pop_ / push_ 系列函数要比 insert / erase 函数快很多

 

测试用代码:

 

略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值