ボトルネックを見つけて、できるだけ正確に時間を測定する必要があります。
次のコード スニペットはパフォーマンスを測定する最良の方法でしょうか?
DateTime startTime = DateTime.Now;
// Some execution process
DateTime endTime = DateTime.Now;
TimeSpan totalTimeTaken = endTime.Subtract(startTime);
ベストアンサー1
いいえ、違います。ストップウォッチ(でSystem.Diagnostics
)
Stopwatch sw = Stopwatch.StartNew();
PerformWork();
sw.Stop();
Console.WriteLine("Time taken: {0}ms", sw.Elapsed.TotalMilliseconds);
ストップウォッチは、高精度タイマーの存在を自動的にチェックします。
タイムゾーンに関する作業のため、DateTime.Now
通常よりもかなり遅くなることが多いことに注意が必要です。DateTime.UtcNow
夏時間など。
DateTime.UtcNowの解像度は通常15ミリ秒です。ジョン・チャップマンのブログ投稿DateTime.Now
優れた要約のための精度について。
興味深いトリビア:ハードウェアが高周波数カウンターをサポートしていない場合、ストップウォッチはフォールバックしますDateTime.UtcNow
。ストップウォッチがハードウェアを使用して高精度を実現しているかどうかは、静的フィールドを見ることで確認できます。ストップウォッチ.高解像度。