私はそれを考えていました
Stopwatch.ElapsedTicks
に等しいStopwatch.Elapsed.Ticks
。
しかし、そうではありません。後者は100ナノ秒の周期ですが、前者はと呼ばれる不思議な単位を使用していtimer ticks
ます。それらは何なのか、なぜ通常の測定単位と違うのかしら。
ドキュメントから:
ストップウォッチは、基礎となるタイマーメカニズムのタイマーティックをカウントすることで経過時間を測定します。インストールされているハードウェアとオペレーティングシステムが高解像度のパフォーマンスカウンターをサポートしている場合、Stopwatchクラスはそのカウンターを使用して経過時間を測定します。それ以外の場合、Stopwatchクラスはシステムタイマーを使用して経過時間を測定します。FrequencyフィールドとIsHighResolutionフィールドを使用して、ストップウォッチタイミング実装の精度と解像度を決定します。
はい、「ダニ」が過負荷になって2つの異なることを意味するのは苦痛です:(
これは基本的に、パフォーマンスカウンターのかなり「生の」ビューを提供しているためだと思います。これStopwatch
は、「ティック」の意味についてさまざまな実装を持つことができます。
はStopwatch.ElapsedTicks
、1秒/の時間の長さであるストップウォッチの観点から「ダニ」を測定していStopwatch.Frequency
ます。
内部的には、これはWindowsハイパフォーマンスカウンターサポートに基づいています(システムでサポートされている場合、ほとんどの場合当てはまります)。ネイティブ呼び出しはQueryPerformanceFrequencyであり、ハードウェアのサポートに応じて長さが異なります。
たぶんそれはコンソール出力を見るのに役立ちます...
LinkedList 500挿入/削除操作ElapsedTicks:45871
LinkedList 500挿入/削除操作Elapsed.ticks:141266
LinkedList 500挿入/削除操作ミリ秒:14.1266
リスト500挿入/削除操作ElapsedTicks:1235121
リスト500挿入/削除操作Elapsed.ticks:3803744
リスト500挿入/削除操作ミリ秒:380.3744
(そこから経過したことが確認されます。ダニは100ナノ秒で測定されます)