0

この単純なコンソール コードを書きましたが、結果を説明できません。

public static void Execute2()
    {
        Stopwatch sw = new Stopwatch();

        sw.Start();
        while (sw.ElapsedMilliseconds  < 1000)
        {
            Console.WriteLine(sw.ElapsedMilliseconds);
            System.Threading.Thread.Sleep(100);
        }
    }

コンソールの出力:

0  
127  
228  
328  
429  
530  
630  
731  
831  
931  
Press a key to continue... (no debug) 

ご覧のとおり、最初の呼び出しの後に約 27 ミリ秒のオフセットがありますが、次の呼び出しではこのオフセットは変更されていません。

Thread.Sleep() を呼び出すオーバーヘッドによって 27 ミリ秒かかると思いましたが、それは最初の 1 回だけです。この動作はビルドごとに繰り返されます (デバッグなしでビルドを実行します)

私のマシンは次のとおりです:コア2デュオ@ 2.8Ghz、2GB RAM、Windows XP SP3、VS2010 pro

問題は、27ms の原因は何なのかということです。

4

2 に答える 2

2

たとえば、次のようなものがあります。

  1. JITウォーミングアップ
  2. コンソールの初期化
于 2013-03-27T08:03:05.430 に答える
0

電話

Thread.Sleep(100);

始める前に。そして、「実際の」コードの前にコンソール出力を行います

于 2013-03-27T08:05:44.030 に答える