AMD Opteron CPU上的Net代码比Intel Xeon慢

时间:2013-09-24 09:27:46

标签: .net cpu x86-64 amd-processor

我遇到过一种简单的.net fibonnacci代码在一组特定服务器上速度较慢的情况,唯一明显不同的是CPU:

  • AMD Opteron处理器6276 - 11秒
  • Intel Xeon CPU E7 - 4850 - 7秒

为x86编译代码并使用.NET Framework 4.0。

  • 两者之间的时钟速度相似,事实上PassMark基准测试为AMD提供了更高的分数。
  • 在服务器场中的其他AMD服务器上尝试过此操作并且时间较慢。
  • 即使我的本地I7机器也能更快地运行代码。

Fibonnacci代码:

class Program
{
    static void Main(string[] args)
    {
        const int ITERATIONS = 10000;
        const int FIBONACCI = 100000;

        var watch = new Stopwatch();
        watch.Start();


        DoFibonnacci(ITERATIONS, FIBONACCI);

        watch.Stop();

        Console.WriteLine("Total fibonacci time: {0}ms", watch.ElapsedMilliseconds);
        Console.ReadLine();
    }

    private static void DoFibonnacci(int ITERATIONS, int FIBONACCI)
    {
        for (int i = 0; i < ITERATIONS; i++)
        {
            Fibonacci(FIBONACCI);
        }
    }

    private static int Fibonacci(int x)
    {
        var previousValue = -1;
        var currentResult = 1;

        for (var i = 0; i <= x; ++i)
        {
            var sum = currentResult + previousValue;
            previousValue = currentResult;
            currentResult = sum;
        }

        return currentResult;
    }

}

有关正在发生的事情的任何想法?

1 个答案:

答案 0 :(得分:0)

这是正常的 - 不同的CPU模型可以具有不同的体系结构,并且对于相同频率的特定任务具有不同的性能。您所指的基准由一组不同的计算任务组成,可能与您的特定任务无关。