この質問を検索しましたが、答えが見つかりませんでした。重複があれば、喜んで閉じます。
私は現在、テクノロジーのパフォーマンス評価を行おうとしていますが、かなり信じられない結果がいくつか見られたので、いくつか実験することにしました。その中で、Stopwatch クラスが期待どおりの値を返すかどうかを試してみたかったのです。
Stopwatch sw = Stopwatch.StartNew();
Thread.Sleep(1);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
この場合、15 ミリ秒の戻り値がほとんど見られました。DateTime の解像度がそこにあることは理解していますが、Thread.Sleep(1) はスレッドを 1 ミリ秒スリープ状態にすべきではありませんか? 私が使用しているシステムは、Stopwatch.IsHighResolution true を返し、.NET 4 で実行されています。
背景: このコードは完全かつ適切な形式であり、Aerospike db get リクエストでいくつかの数値を収集することを目的としています。DB は同じボックスにありません。クエリが途中であったときに sw.ElapsedMilliseconds を出力すると、ほとんどミリ秒未満の応答が表示されます。これは、ほとんどの場合、Java の同等のコードがはるかに信頼できる 5ms ~ 15ms の応答を返していることを考えると、少し疑わしいと思われます。Java コードは System.nanoTime() の違いを使用しています。私の C# コードのサブミリ応答とは、Console.WriteLine(sw.ElapsedMilliseconds) が 0 を出力することを意味します。