【发布时间】:2013-09-29 10:32:14
【问题描述】:
我遇到过这样一种情况,即简单的 .net fibonnacci 代码在一组特定的服务器上速度较慢,唯一明显不同的是 CPU:
- AMD Opteron 处理器 6276 - 11 秒
- 英特尔至强 CPU E7 - 4850 - 7 秒
代码针对 x86 编译并使用 .NET Framework 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;
}
}
有什么想法吗?
【问题讨论】:
-
你看多核PassMark分数了吗?对于内核数量较多但内核相对较弱的新型 AMD 而言,它通常看似高。
-
如果我将 CPU 亲和性设置为进程的单个 CPU,那么我确实会得到 7 秒,这很有趣。
-
您可以以 一个 Xeon 处理器的价格购买 四个 这些 Opteron 处理器。你领先了,它不会慢四倍。 Bulldozer 微架构在 2011 年发布时并没有给任何人留下深刻印象,你听起来同样不知所措。永远不要相信你自己没有伪造过的基准。
-
@HansPassant - 开始感觉和你一样
-
差不多了。 AMD 主要用推土机搞砸了——从来没有达到他们想要的速度。 AMD 今天以便宜但速度慢的处理器而闻名。他们的希望? 2016....新架构。所以,是的,AMD 很慢。已知事实。此处没有与 .NET 相关的内容。
标签: .net cpu x86-64 amd-processor