我最近一直在努力提高軟件的性能,它花費60%的時間在hashmap中搜索(用valgrind分析器確認)。谷歌:: dense_hash_map vs boost :: unordered_map性能問題
當前實施方案使用boost::unordered_map<long long, FrequencyKey>
。我想將它與google::dense_hash_map<long long, FrequencyKey>
進行比較。我在我的代碼
boost::unordered_map<long long, FrequencyKey> result;
改變一行
地圖google::dense_hash_map<long long, FrequencyKey> result;
result.set_empty_key(-1);
接口被稱爲在兩個地方。大循環之前result.clear()
。在循環result[key]
內。
With boost::unordered_map<long long, FrequencyKey>
我的軟件性能是118請求/ s。隨着上面所列的變化,我得到0.5 req/s。
我明顯做錯了事,但在通過docs和github code後我無法弄清楚自己。
我正在用gcc/g ++ 4.4.7編譯CentOS 6.5上的代碼。
檢查散列圖的性能時,第一步是檢查發生的衝突。使用'std :: unordered_map'和類似的接口,您可以迭代桶的列表並計算項的數量,每當桶包含N> 1項時,就會有(N-1)個碰撞使您放慢速度。除此之外...你的問題不幸的是缺少代碼:產生一個[MCVE](http://stackoverflow.com/help/mcve)或遭受無用的(對你)的答案:x –