-1

この質問は主に教育に関するものです。なぜなのか興味がありました。ここからプログラムを使用していますが、少し変更しました:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            long ticks = DateTime.Now.Ticks;
            while(true)
            {
                if (ticks != DateTime.Now.Ticks)
                {
                    long newTicks = DateTime.Now.Ticks;
                    Console.WriteLine(newTicks - ticks);
                    ticks = newTicks;
                }
                else
                {
                    Console.WriteLine("same");
                }
            }
        }
    }
}

結果:

600ドル Lenovo Edge 11、Intel Pentium U5400、Windows 7 Home Basic

same
same
same
same
same
same
same
10000
same
same

10000$ HP DL360p Gen8 2 * Xeon E5-2640、Windows Server 2008 R2

same
same
same
same
same
same
same
156001
same
same
same
same
same
same
same
same
same
same
same
same

したがって、安価なノートブックの DateTime の精度は 10 ミリ秒ですが、高価なサーバー ハードウェアの精度は 156 ミリ秒です。

なんで?おそらくWindows 7はWindows Server 2008 R2よりも「正確」だと思いますが、これは私の推測です。両方のコンピューターに、最新の .NET フレームワークがすべて更新され、すべての Windows 更新プログラムがインストールされています。

4

2 に答える 2

3

まず第一に、あなたは間違った計算をしました:

時間の最小単位はティックで、100 ナノ秒に相当します。

したがって、10000 ティックはわずか 1 ミリ秒であり、156001 ティックは 15.6 ミリ秒です。


その違いはハードウェアにはありません。デフォルトでは、Windows は約 16 ミリ秒ごとに特定の内部タイマーを実行します。このタイマーは、タイマー、Environment.TickCountThread.Sleepおよびを含む、ウィンドウの多くのタイミング関連機能を担当しますDateTime.UtcNow

timeBeginPeriodどのアプリケーションでも、 APIを使用して、これを選択したミリ秒数 (最小 1 ミリ秒) に減らすことができます。ノートブックで実行されているアプリケーションがより高い精度を要求しているようですが、サーバーで実行されているアプリケーションはありません。

負の副作用があるため、デフォルトではアクティブではありません。たとえば、コンピューターがアイドル状態のときは、16 ミリ秒間隔ではなく 1 ミリ秒間隔でしかスリープできないため、消費電力が高くなります。

この関数は、Windows のグローバル設定に影響します。Windows は、プロセスによって要求された最小値 (つまり、最高解像度) を使用します。より高い解像度を設定すると、待機関数のタイムアウト間隔の精度が向上する可能性があります。ただし、スレッド スケジューラがタスクを頻繁に切り替えるため、システム全体のパフォーマンスが低下する可能性もあります。解像度が高いと、CPU 電力管理システムが省電力モードに入るのを防ぐこともできます。より高い解像度を設定しても、高解像度パフォーマンス カウンターの精度は向上しません。

于 2012-07-21T18:41:58.083 に答える
0

http://support.microsoft.com/kb/259025で説明されているように、スレッド タイム スライスの違いが見られます。

于 2012-07-21T18:45:58.910 に答える