遇到过这样一种情况,即简单的 .net fibonniacci 代码在一组特定的服务器上速度较慢,唯一明显不同的是 CPU。AMD Opteron 处理器 6276 - 11 秒 Intel Xeon XPU E7 - 4850 - 7 秒
代码适用于 x86 并使用 .NET 框架 4.0。-两者之间的时钟速度相似,实际上 PassMark 基准测试为 AMD 提供了更高的分数。- 已在场中的其他 AMD 服务器上尝试过此操作,但时间较慢。- 甚至我本地的 I7 机器也能更快地运行代码。
斐波那契代码:
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;
}
}
关于可能发生的事情的任何想法?