ユーティリティツールの主なロジックは、次のような関数にあります。
private void Run()
{
DateTime startTime = DateTime.Now;
Prepare();
Search();
Process();
DateTime endTime = DateTime.Now;
TimeSpan duration = endTime.Subtract(startTime);
Console.WriteLine("Run took {0:00}:{1:00}:{2:00}",
(int)duration.TotalHours, duration.Minutes, duration.Seconds);
}
これを実行すると、自分の目で少なくとも5秒かかることがわかります(Process()
メソッドは、5〜6秒間発生することを観察できるコンソール出力を吐き出します)。しかし、「実行には00:00:01がかかりました」と報告されます。
マイクロ秒の精度になる時間は期待していませんが、なぜここで完全に不正確なのですか?
更新:
アドバイスに従って、私もStopWatch
同じ期間に実行し、2を引くことと比較しDateTime
、コードをデバッグしました。2つの方法はほんの一瞬で一致します...StopWatch
デバッガーでは1139ミリ秒でした。私の仮説は、どういうわけかコンソールへの書き込み時間は含まれていませんが、それをバックアップする(または反証する)方法がないということです。