我正在用Java編寫程序如何通過Java收集AMD CPU高速緩存命中率?
在這個程序中,我正在讀取和更改一組數據。這是代碼的一個例子:
public double computation() {
char c = 0;
char target = 'a';
int x = 0, y = 1;
for (int i = 0; i < data.length; i++) {
// Read Data
c = data[index[i]];
if (c == target)
x++;
else
y++;
//Change Value
if (Character.isUpperCase(c))
Character.toLowerCase(c);
else
Character.toUpperCase(c);
//Write Data
data[index[i]] = c;
}
return (double) x/(double) y;
}
BTW,指數數組包含在隨機爲了防止預取數據數組的索引。通過在INDEX數組中使用隨機索引,我迫使我的所有緩存訪問都是錯過了。
現在我想通過收集有關其命中率的信息來檢查CPU高速緩存的行爲。
有沒有爲此目的開發的工具?如果沒有,有什麼技術?
這是我2年前的一箇舊項目。我當時使用了[PAPI](http://icl.cs.utk.edu/papi/),但沒有提供最準確的結果,但它對我的目的有好處。我希望你的回答會幫助另一個人。 – Reza