在迭代数组时,比较旧的x86更慢的x64?

时间:2011-03-22 16:28:58

标签: c# performance x86 64-bit

我遍历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#

2 个答案:

答案 0 :(得分:2)

通常,许多较新的处理器确实比旧处理器慢,特别是旧处理器。

然而,较新的处理器往往具有更多内核并且使用更少的功率。这是多线程变得如此重要的部分原因 - 您不能依赖未来的硬件来提供速度优势。

此外,64位代码通常比类似的32位代码运行得慢。但是,它确实提供了其他好处,例如访问更大量的内存。

答案 1 :(得分:1)

如果您在32位或64位值上运行,您可能会获得更快的结果(即使您一次只能运行4个字节的值)。