C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows Visual Studio)——遍历和删除

STL容器遍历与查找性能分析
本文对比分析了C++ STL各种容器在不同条件下的遍历和查找性能,发现除map、multimap、set和multiset外,其他容器遍历性能相近;查找性能上,关联容器远超非关联容器,且无序关联容器优于有序关联容器。

      相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows Visual Studio)——插入》已给出。本文将分析各个容器中遍历和查找的性能。(转载请指明出于breaksoftware的csdn博客)

遍历

从前往后

traversal_begin_16384_highest
traversal_begin_16384_highest

        性能最差的是map、multimap、set和multiset这两簇。

        其他容器性能差距不大。

        非关联容器中,list的性能最差。

从后往前

         支持从后向前遍历的容器并不多,只有:vector、deque、list、set、map、multiset和multimap。

元素个数>15000

traversal_end_16384_highest
traversal_end_16384_highest

        非关联容器的性能要优于关联容器。

        非关联容器之间相比,性能差距不大。

        在12500个元素之前,vector的效率要比list和deque低,但是之后vector是最优的。

元素个数<4096

traversal_end_4096_highest
traversal_end_4096_highest

        vector在初期会有高耗时操作,之后性能优秀(通过斜率)。

结论:

        除了map、multimap、set和multiset,其他容器的遍历性能都差不了太多。

查找

        因为非关联容器的查找只能通过遍历,其效率和关联容器的查找没法比。所以我们只比较关联容器。

元素个数>15000

find_16384_highest
find_16384_highest

        set类要优于对应的map类容器。即set优于map;multiset优于multimap;unordered_set优于unordered_map;unordered_multiset优于unordered_multimap。

        multi类要优于对应的非multi类容器。即multimap优于map;multiset优于set;unordered_multimap优于unordered_map;unordered_multiset优于unordered_set。

        无序关联容器要优于有序关联容器。

       文中图例可从如下地址获取:https://github.com/f304646673/stl_perf/tree/master/windows

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

breaksoftware

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值