日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時(shí)間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——遍历和查找 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ??相關(guān)環(huán)境和說明在《C++拾趣——STL容器的插入、刪除、遍歷和查找操作性能對(duì)比(ubuntu g++)——插入》已給出。本文將分析各個(gè)容器中遍歷和查找的性能。(轉(zhuǎn)載請(qǐng)指明出于breaksoftware的csdn博客)

遍歷

從前往后

元素個(gè)數(shù)>15000

traversal_begin_16384_highest

? ? ? ? 表現(xiàn)最差的是unordered_multiset。其在遍歷到1000個(gè)左右的元素時(shí)發(fā)生較高的延時(shí)操作,然后又穩(wěn)定下來。

? ? ? ? 除了這個(gè)容器,再看下其他容器的表現(xiàn)。

traversal_begin_16384

? ? ? ? 可以看出這些容器的遍歷效率差距不大。最快的vector比倒數(shù)第二慢的unorderedset快50%左右。

? ? ? ? vector容器在元素個(gè)數(shù)大于8000左右開始,效率優(yōu)于list。之前l(fā)ist是最優(yōu)的。

元素個(gè)數(shù)<4096

traversal_begin_4096

? ? ? ? 因?yàn)閡nordered_multiset效率還是很差,所以上圖例沒有將其列出。

? ? ? ? deque在最開始時(shí),發(fā)了高耗時(shí)的操作。之后它的效率還是可以的。

元素個(gè)數(shù)<1024

traversal_begin_1024_highest

? ? ? ? unordered_multiset在元素個(gè)數(shù)超過200左右時(shí),效率將差于其他容器。

? ? ? ? deque在元素個(gè)數(shù)低于200左右時(shí),效率低于所有容器。

結(jié)果對(duì)比:

? ? ? ? 元素個(gè)數(shù)大于8000左右時(shí),vector效率是最好的。

? ? ? ? 元素個(gè)數(shù)小于8000左右時(shí),list效率是最好的。

? ? ? ? 元素個(gè)數(shù)大于200左右時(shí),unordered_multiset效率是最差的。

? ? ? ? 元素個(gè)數(shù)小于200左右時(shí),deque效率是最差的。主要原因是開始時(shí)一次高耗時(shí)操作,但是之后每次操作耗時(shí)均不多(線的變化率)。

從后往前

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

元素個(gè)數(shù)>15000

traversal_end_16384_highest

? ? ? ? vector效率最高,其次是deque和list。

結(jié)論:

? ? ? ? vector在各個(gè)方向的遍歷效率均比較優(yōu)秀。

? ? ? ? list在從前往后遍歷時(shí)比deque優(yōu)秀。

? ? ? ? deque在從后向前遍歷時(shí)比list優(yōu)秀。

? ? ? ? 關(guān)聯(lián)容器的遍歷效率沒有非關(guān)聯(lián)容器高。

查找

? ? ? ? ?因?yàn)榉顷P(guān)聯(lián)容器的查找只能通過遍歷,其效率和關(guān)聯(lián)容器的查找沒法比。所以我們只比較關(guān)聯(lián)容器

元素個(gè)數(shù)>15000

find_16384_highest

? ? ? ? 最優(yōu)的是unordered_multiset,其次是unordered_map和unordered_set。

? ? ? ? 最差的是set。

元素個(gè)數(shù)<1024

find_1024_highest

? ? ? ? 元素個(gè)數(shù)小于600左右時(shí),unordered_multimap是最差的。

? ? ? ? 元素個(gè)數(shù)大于600左右時(shí),set是最差的。

結(jié)果對(duì)比:

? ? ? ??unordered_multiset的效率一直是最好的。

? ? ? ? set在元素較多時(shí)效率是最差的,其他時(shí)候也很差。

結(jié)論:

? ? ? ? unordered系列容器比ordered系列容器效率高。

? ? ? ? ordered系列容器中,map系列比set系列對(duì)應(yīng)的容器效率高。比如map比set優(yōu),multimap比multiset優(yōu)。

? ? ? ? set效率最差。

? ? ? ? unordered_multiset最優(yōu)。

? ? ? ? 文中圖例可從以下地址獲取:https://github.com/f304646673/stl_perf/tree/master/linux

總結(jié)

以上是生活随笔為你收集整理的C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——遍历和查找的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。