国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
boost::unordered_map 和 std::map 的效率,內(nèi)存比較

分類: C++ 標準 2012-06-28 11:13 4090人閱讀 評論(0) 收藏 舉報

  1. // Test_Boost_Unordered.cpp : 定義控制臺應(yīng)用程序的入口點。  
  2. //  
  3.   
  4. #include "stdafx.h"  
  5. #include "boost/unordered_map.hpp"  
  6. #include <iostream>  
  7. #include <map>  
  8. #include "time.h"  
  9.   
  10. using namespace std;  
  11. int _tmain(int argc, _TCHAR* argv[])  
  12. {  
  13.     {  
  14.     time_t first_time = time(0);  
  15.     boost::unordered_map<int, int> test_hash;  
  16.     for (int i = 0; i < 50000000; i++)  
  17.     {  
  18.         test_hash.insert(std::pair<int, int>(i, i));  
  19.     }  
  20.     cout << test_hash.size() << endl;  
  21.       
  22.     time_t second_time = time(0);  
  23.   
  24.     for (int i = 0; i< 50000001; ++i)  
  25.     {  
  26.         boost::unordered_map<int, int>::iterator iter = test_hash.find(i);  
  27.         if (iter == test_hash.end())  
  28.         {  
  29.             cout << "false" << endl;  
  30.         }  
  31.     }  
  32.     time_t third_time = time(0);  
  33.     cout << "second - first " << second_time - first_time << endl;  
  34.     cout << "third - second " << third_time - second_time << endl;  
  35.     }  
  36.   
  37.     {  
  38.     time_t first_time = time(0);  
  39.     std::map<int, int> test_hash;  
  40.     for (int i = 0; i < 50000000; i++)  
  41.     {  
  42.         test_hash.insert(std::pair<int, int>(i, i));  
  43.     }  
  44.     cout << test_hash.size() << endl;  
  45.   
  46.     time_t second_time = time(0);  
  47.   
  48.     for (int i = 0; i< 50000001; ++i)  
  49.     {  
  50.         std::map<int, int>::iterator iter = test_hash.find(i);  
  51.         if (iter == test_hash.end())  
  52.         {  
  53.             cout << "false" << endl;  
  54.         }  
  55.     }  
  56.     time_t third_time = time(0);  
  57.     cout << "second - first " << second_time - first_time << endl;  
  58.     cout << "third - second " << third_time - second_time << endl;  
  59.     }  
  60.     return 0;  
  61. }  

執(zhí)行結(jié)果:

50000000
false
second - first 12
third - second 3
50000000
false
second - first 52
third - second 15

 

運行環(huán)境:

windows -- vs --  Release -- win32

 

內(nèi)存消耗: boost::unordered_map 消耗 1.2 G, std::map 1.5 G

 

結(jié)論: unordered_map 查找效率快五倍,插入更快,節(jié)省一定內(nèi)存。如果沒有必要排序的話,盡量使用 hash_map(unordered_map 就是 boost 里面的 hash_map 實現(xiàn))。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
map hash
在Ubuntu下安裝boost庫
C++中如何查詢map中是否存在某個元素
C++ unordered
c++線程安全的map
使用lambda,遠離bind
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服