我有两台服务器,一台运行一个 E3-1220 处理器,另一台运行两个 E5-2640 处理器。http://ark.intel.com/compare/52269,64591
问题是两个处理器服务器的价格要贵 5 倍,但我的程序执行速度要慢 2 倍,请参阅我关于 stackoverflow线程池程序的问题在更快的服务器上运行速度要慢得多)
我写了这个简单的程序来比较 E3-1220 和 E5-2640 它没有做任何事情,只是我在现实世界中做的事情:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace TestSpeed
{
class Program
{
private static double a;
private static double b;
private static double c = 0.34;
private static double d = 0.15;
private static double e = 0.25;
private static double f = 0.03;
private static double g = 8;
static void Main(string[] args)
{
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 1000000000; i++)
{
double e = a;
a = 1;
double f = b;
b = 1;
if (true)
{
double h = 1.83;
double j = Math.Ceiling(h/d);
if (j <= c)
{
c = Math.Ceiling(h/d + e);
}
else if (j > c)
{
c = Math.Ceiling(h/d - e);
}
if (c <= -0.5)
{
a = a - f*c;
}
double k = Math.Floor(h/d);
if (k <= g)
{
g = Math.Floor(h/d + e);
}
else if (k > g)
{
g = Math.Floor(h/d - e);
}
if (g > 0.5)
{
b = b + f*g;
}
}
bool result = (Math.Abs(e - a) > 0) ||
(Math.Abs(f - b) > 0);
}
long time = sw.ElapsedTicks / (Stopwatch.Frequency / (1000L * 1000L));
Console.WriteLine(time);
}
}
}
E5-2640 是新的 Intel 处理器,我想它应该至少比以前的 E3-1220 好一点,几乎便宜 5 倍。
但结果是:Xeon E5-2640 是 31182(~31 秒),Xeon E3-1220 是 26650(~26 秒)。所以比率是 31182/26650 = 1.17 时钟比率是 3 / 2.5 = 1.2
所以Xeon E3和Xeon E5绝对没有区别。E3 的时钟频率提高了 20%,因此工作速度提高了 20%。我能做什么,也许我可以以某种方式使用一些特殊的 Xeon E5 指令?
非常烦人的是,在实际应用中至强 E5 比至强 E3 慢 2 倍(!!)...(请参阅我的链接问题)
所以问题是 - 我可以做些什么来使用 2 * Xeon E5 配置的力量?我应该使用哪些技术可能会使用任何指南如何在 C# 上编程以使用多处理器配置的强大功能?
我只是让我失望的是,我花了 10 000 美元购买了执行我的程序的服务器比我以 1 500 美元购买的现有服务器慢 2 倍