0

这是我遇到的一个问题。我有一台服务器和一台笔记本电脑。两台计算机上都没有运行任何东西。

这是程序:

    static void Main( string[] args )
    {
        Stopwatch w = new Stopwatch();
        while( true )
        {
            w.Restart();
            for( int i = 0; i < int.MaxValue; i++ )
                ;

            w.Stop();

            System.Console.WriteLine( w.ElapsedMilliseconds );
        }
    }

在我的笔记本电脑上,我获得了大约 650 毫秒的一致性能。在服务器上,我得到了疯狂的波动。从 595 到 1500 毫秒。同样,两台计算机上都没有运行任何东西。该程序非常简单,甚至不使用 RAM。可能只是注册。

什么会导致这种情况?我用 passmark.com 基准测试了服务器和笔记本电脑,一切看起来都很正常。

以下是服务器的规格:windows 2012 x64 cpu: xeon e5-1620 @ 3.6

以下是笔记本电脑的规格:windows 7 x64 cpu: i7-2620M @ 2.7

windows 7 i7-2620M 截图

windows 2012 至强 e5-1260 截图

4

2 回答 2

2

Stopwatch_亲和力、各种 CPU 管道的状态等。

在开始秒表之前尝试添加这些说明(从这里):

Process.GetCurrentProcess().ProcessorAffinity = new IntPtr(2);
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
Thread.CurrentThread.Priority = ThreadPriority.Highest;

这应该使测量结果更加一致,尤其是在多核、多 CPU 的机器上。

于 2013-10-05T12:29:54.270 回答
0

Windows 桌面赋予前台进程更高的优先级,而 Windows 服务器赋予后台进程更高的优先级。这将导致您遇到的差异。

于 2013-10-05T12:38:01.887 回答