web-dev-qa-db-ja.com

高性能タイマーとストップウォッチ

HiPerfTimer または StopWatch クラスの方がベンチマークに適しているかどうか、誰が知っていますか?その理由は?

36
Kane

ストップウォッチ は高解像度タイマー(利用可能な場合)に基づいています。これは IsHighResolution で確認できます

39
Shay Erlichmen

高解像度のタイミングに関しても同じです。

どちらもこれを使用します:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long PerformanceCount);

この:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long Frequency);

基になるタイミングを実行します。 (これはReflector.NETで確認できます)。 StopWatchは、フレームワークの一部であり(別のDLLをリンクする必要がない)、HiPerfTimerよりも優れた機能を備えているため、使用します。

19
ParmesanCodice

StopWatch-高解像度のパフォーマンスカウンターをサポートしていないシステムでも機能し、それを使用するための外部ライブラリは必要ありません。

高解像度のカウンターがサポートされていない場合、もう1つはWin32Exceptionをスローします。

6
RichardOD