我遍歷一個3D陣列:新的x64在迭代數組時比x86舊版本更慢?
byte[, ,] data = original.Data;
for (int i = original.Rows - 1; i >= 0; i--)
{
for (int j = original.Cols - 1; j >= 0; j--)
{
if (data [i,j,0] < 100)
{
data [i, j, 0] += 100;
data [i, j, 1] += 40;
data [i, j, 2] += 243;
}
else
{
data [i,j,0] = 0;
}
}
}
我測試了這個代碼用很舊的x86 CPU(英特爾酷睿)和一個相當新的x64 CPU(英特爾酷睿i7)。我很驚訝地發現,新的x64 CPU要慢得多。 x64需要三倍多的時間!該代碼有什麼問題?我能做些什麼來使x64代碼更快?
附加信息: - 兩個測試都是在win 7 os上進行的。 (用於x86的32位版本和用於x64的64位版本) - 代碼爲C#
你不能真正期望來自兩個不同操作系統和兩個不同芯片的可比結果,對吧?我敢打賭x86機器的RAM也更少。沒有辦法比較這些結果。 – 2011-03-22 16:32:43
我在一個程序中觀察到類似的行爲,當我在同一臺64位計算機上運行它時,它將編譯爲x86或x64。 x64版本運行速度減半。我沒有驗證它是整個代碼還是隻是一小段。 – 2011-09-09 00:41:15