2017-06-04 50 views
1

我的程序運行時的顯著部分正在致力於爲std :: __細節:: _ Map_base,我不知道那是什麼引用。什麼是性病:: __細節:: _ Map_base在PERF報告?

enter image description here

我周圍中搜索互聯網上的位,這似乎是某種形式的結構,但我不明白它是如何佔用的時間,更何況它的近五分之一。我應該尋找什麼來縮短這個時間?

回答

2

我聞到這裏

的EECS 281項目作爲參考,當我是這個班的IA,我得到了很多關於這個問題的。這只是意味着你花費了大量的時間在地圖類型的內部方法上。嘗試並減少昂貴的副本和重複的查找操作。如果你是遍地訪問地圖再次如下面的代碼

if (m[key].something) { 
    use(m[key]); 
    cout << m[key]; 
} 

嘗試,將其更改爲

auto& value = m[key]; 
if (value.something) { 
    use(value); 
    cout << value; 
} 

這將幫助你從3個昂貴的查找操作去只是1.你可以想像當你在一個循環中訪問地圖很多次時,這會如何有用。

而且看看Can the use of C++11's 'auto' improve performance?,並確保你不會做這樣的錯誤。

+2

EECS 281肯定,你是dopest。謝謝,這真的很有幫助! –