问题描述:
项目开发过程中,为了方便,需要以string为key,实现key=>string value=>function的形式。然后查找key的效率对于服务器来说,是个至关重要的问题。
采用可能方式:
用stl提供的map,或者C++11新增加的unorder_map
测试方案:
对map与unorder_map进行效率测试,采用大数据量的插入与查找
测试内容
1. 插入1000 个string在unorder_map与map中
2. 插入10000个string在unorder_map与map中
3, 插入1000个string在unorder_map中,1000个int在map中
4 插入10000个string在unorder_map中,10000个int在map中1
id | map_insert | map : find | unorder_map : insert | under_map : find |
1 | 17ms | 5ms | 29ms | 5ms |
2 | 205ms | 107ms | 386ms | 54ms |
3 | 10ms | 5ms | 29ms | 4ms |
4 | 111ms | 52ms | 389ms | 52ms |
结论:
unorder_map的插入效率随着数量的增加,基本是map的一点多倍以上,查找方面来说,跟map基本可以说差不多,而如果map中如果放string的话,查找效率明显比存int类型这种类型的消耗很多。因此,如果对排序没有什么要求的话,又要求key为string类型的,强烈要求使用unorder_map。