我實現了一個搜索緩存結果,它包含State類型的鍵(有7個短整數的類)和Socre類型的值(一個3雙的類)。使用unordered_map的速度至少比map快20倍。爲什麼?爲什麼地圖比unordered_map快得多?
編輯:收藏!我的哈希函數是
namespace std {
size_t hash<State>::operator()(State const& s) const {
size_t retval = hash<short>()(s.s[0]);
for (int i = 1; i < R; i += 2) { // 1 3 5
int x = (static_cast<int>(s.s[i + 1]) << 16)
+ (static_cast<int>(s.s[i]));
hash_combine(retval, x);
}
}
}
我忘了return retval
,所以它都是碰撞!我希望unordered_map有一個可以報告平均碰撞次數的hash_function_quality()函數。
什麼是您的訪問模式? – 2011-01-31 01:09:05
什麼平臺/編譯器? – ThomasMcLeod 2011-01-31 01:10:30
英特爾i5,海灣合作委員會,60萬插入和查找 – 2011-01-31 01:12:22