我遍历3d数组:
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(Intel Core Duo)和一个全新的x64 CPU(Intel i7)测试了这段代码。我很惊讶地看到,较新的x64 CPU要慢得多。 x64需要三倍的时间!这段代码出了什么问题?我该怎么做才能使x64代码更快?
其他信息: - 两项测试均在win 7 os上完成。 (x86的32位版本和x64的64位版本) - 代码是C#
答案 0 :(得分:2)
通常,许多较新的处理器确实比旧处理器慢,特别是旧处理器。
然而,较新的处理器往往具有更多内核并且使用更少的功率。这是多线程变得如此重要的部分原因 - 您不能依赖未来的硬件来提供速度优势。此外,64位代码通常比类似的32位代码运行得慢。但是,它确实提供了其他好处,例如访问更大量的内存。
答案 1 :(得分:1)
如果您在32位或64位值上运行,您可能会获得更快的结果(即使您一次只能运行4个字节的值)。