遇到過一種情況,一個簡單的.net fibonniacci代碼在特定的一組服務器上速度較慢,唯一明顯不同的是CPU。 AMD皓龍處理器6276 - 11秒 英特爾至強XPU E7-4850 - 7秒.net代碼在AMD皓龍CPU上速度較慢
代碼符合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;
}
}
什麼人可能會參加任何想法?
除了檢查你的電源管理,我認爲Iain是正確的,這是更多的SO問題。 – ITHedgeHog
兩臺機器上的相同默認cpu親和力設置?而...爲什麼32位? –
@MathiasR。Jessen - 這很有趣,因爲我將CPU親和力設置爲單個CPU,並且我現在得到7秒 – Rubans