比較測試map、unodered_map、unordered_set效能效率,整型數值查詢
阿新 • • 發佈:2019-02-18
測試環境:
centos 6.5
gcc 4.4.3
使用boost庫生成均勻分佈的隨機正整形數字。
1、分別建立三個資料集物件
typedefunsignedintUINT32;
std::unordered_map<UINT32,UINT32> test_map1;
std::map<UINT32,UINT32> test_map2;
std::unordered_set<UINT32> test_set2;
2、建立1000 000個0~999999之間的隨機數字
每次測試分別將完全相同的隨即數字組,分別放入三個容器。
3、僅測試查詢的時間。一樣是查詢1000 000次。用find函式。
結果如下。r後面的數字表示,隨即查詢命中的次數。
後三個數字分別是對應的查詢時間,單位是ms。
r:95092
test_map1:146ms
test_set2: 153
test_map2:279
r:95213
134
137
276
r:95222
150
139
287
r:95227
134
136
280
r:95205
133
132
273
結果來說:
unodered_map、unordered_set不相上下
但是map效能略微差一些。
之前我做過樣本資料小一點的測試,大約10000個數字,依然是map效能差一些。
根據本次測試,
我會優先選用unodered_map、unordered_set做測試。