c# - 如何使用2*Xeon E5的电源?

标签 c#

我有两台服务器,一台运行一个 E3-1220 处理器,另一台运行两个 E5-2640 处理器。 http://ark.intel.com/compare/52269,64591

问题是,价格贵 5 倍的两个处理器服务器执行我的程序的速度慢 2 倍,请参阅我在 stackoverflow 上的问题 Threadpool program runs much slower on much faster server )

我写了这个简单的程序来比较 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 是新的英特尔处理器,我想它至少应该比之前的 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 指令?

非常烦人的是,在实际应用中,Xeon E5 比 Xeon E3 慢 2 倍(!!)...(请参阅我的链接问题)

所以问题是 - 我可以做什么来使用 2 * Xeon E5 配置的能力?我应该使用什么技术或者如何在 C# 上进行编程以利用多处理器配置的强大功能?

我只是很失望,我花了 10 000 美元购买了执行程序的服务器,它的执行速度比我仅花费 1 500 美元购买的现有服务器慢了 2 倍

最佳答案

根据我的一点经验,任务并行库在创建正确数量的线程以最大化 CPU 方面做得非常出色。查看http://msdn.microsoft.com/en-us/library/dd537609.aspx

关于c# - 如何使用2*Xeon E5的电源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105745/

相关文章:

c# - 如果需要很长时间取消请求的 Asp.net Core 中间件

c# - 在C#中实现VB With语句

c# - 数据绑定(bind)问题

javascript - jQuery Datatables 未序列化超过 1000 条记录

C# - 两个日期之间的差异?

c# - ASP.NET 和中间人

c# - 接口(interface)、类实现和新方法

c# - 在哪里输入azure函数http触发器中的参数?

c# - 关于避免在此抽象上重复代码的任何提示?

c# - 用于处理列表的C#异步选项