2014-06-21 55 views
0

我正在linux上執行我的C++代碼。在我的代碼中,有一些結構很大的2D數組。該數組是隨機訪問的。當訪問2D數組時,我必須找出有多少緩存未命中。除valgrind之外是否還有其他解決方案(因爲它需要太多時間來計算結果),這可以幫助我找到此陣列的緩存未命中和緩存未命中率。二維陣列緩存misss /緩存缺失率

+0

如果訪問陣列封裝,也許寫一個簡單的緩存模擬器給出緩存屬性並將其掛接到數組訪問? – JarkkoL

+0

如果它是真正的隨機訪問,那麼命中率就是cache_size/array_size。 –

回答

0

通常,您的程序不會訪問二維數組,因此內存訪問包含其他變量。它可能有一些效果,或多或少。

如果數組訪問密集(或封裝),也許你可以使用一個簡單的模擬器來評估未命中率。

否則,您可能需要一些工具。我建議Pin,一個動態的二進制工具工具,其原理與valgrind類似,但我認爲開銷是可以接受的,但是你必須編寫分析代碼。

或者更好的選擇是來自intel的Vtune性能分析工具,請嘗試緩存分析。不過,你需要一些時間來學習它。