之前在某blog看到map在非常少量資料下插入效率高於unordered_map。
自己測了一下並非如此,在設定合適的桶數的情況下,有如下結論:
1、插入效率unordered_map任何情況下均優於map,資料越多越明顯。
2、遍歷效率map略優於unordered_map。
補充:1、只在 g++ 4.4.6下測試,-o2與無編譯器優化結果一致。
2、沒有計算rehash與計算素數的時間,因為一般在程式啟動時就rehash了,所以忽略掉。
直接上**
#include #include #include #include #include #include #include #include using namespace std;
/// 返回大於1.5 * num的第乙個素數
inline size_t get_hash_table_size(unsigned int num)
if (i == j)
return return_num; }}
long get_time_usec_gap(const timeval &start, const timeval &end)
int main()
setrandom_nums_set;
srand(time(0));
for (int i = 0; i < map_size; )
} mapmap_test;
unordered_mapunordered_map_test;
unordered_map_test.rehash(get_hash_table_size(map_size));
struct timeval t_start,t_end;
gettimeofday(&t_start, 0);
for (auto it = random_nums_set.begin(); it != random_nums_set.end(); ++it)
gettimeofday(&t_end, 0);
cout<<"map insert time:"<
集合與map迭代
arraylist list list1 new arraylist address address1 new address 中國 上海 address address2 new address 美國 紐約 address address3 new address 日本 沖繩 list1.add ...
查詢(三)hash 與map
一,hashtable原理 雜湊表又名雜湊表,其主要目的是用於解決資料的快速定位問題。考慮如下乙個場景。一列鍵值對資料,儲存在乙個table中,如何通過資料的關鍵字快速查詢相應值呢?不要告訴我乙個個拿出來比較key啊,呵呵。大家都知道,在所有的線性資料結構中,陣列的定位速度最快,因為它可通過陣列下標...
Map與資料結構
上篇中介紹了collection中arraylist和linkedlist和在資料結構中的分析。但在,由於collection是無論是基於陣列的arraylist還是基於鍊錶的linkedlist它都沒有辦法儲存有關係的資料,比如乙個人的姓名 身份證,這樣有關係的資料。因此就有了map介面。arra...