ストップウォッチ

# IsHighResolution

  • IsHighResolution プロパティは、タイマーが高解像度パフォーマンス カウンターに基づいているか、DateTime クラスに基づいているかを示します。
  • このフィールドは読み取り専用です。
// Display the timer frequency and resolution.
if (Stopwatch.IsHighResolution)
{
    Console.WriteLine("Operations timed using the system's high-resolution performance counter.");
}
else 
{
    Console.WriteLine("Operations timed using the DateTime class.");
}

long frequency = Stopwatch.Frequency;
Console.WriteLine("  Timer frequency in ticks per second = {0}",
    frequency);
long nanosecPerTick = (1000L*1000L*1000L) / frequency;
Console.WriteLine("  Timer is accurate within {0} nanoseconds", 
    nanosecPerTick);
}

https://dotnetfiddle.net/ckrWUo

Stopwatch クラスで使用されるタイマーは、システムのハードウェアとオペレーティング システムによって異なります。ストップウォッチ タイマーが高解像度のパフォーマンス カウンターに基づいている場合、IsHighResolution は true です。それ以外の場合、IsHighResolution は false であり、ストップウォッチ タイマーがシステム タイマーに基づいていることを示します。

ストップウォッチのティックはマシン/OS に依存するため、ストップウォッチのティックと秒の比率が 2 つのシステム間で同じになるとは決して考えるべきではありません。したがって、ストップウォッチのティックが DateTime/TimeSpan のティックと同じ間隔になるとは期待できません。

システムに依存しない時間を取得するには、Stopwatch.Frequency (1 秒あたりのティック数) が既に考慮されている Stopwatch の Elapsed または ElapsedMilliseconds プロパティを必ず使用してください。

ストップウォッチはより軽量であり、高解像度のパフォーマンス カウンターを使用できない場合は Datetime を使用するため、タイミング プロセスには常に Datetime よりも使用する必要があります。

ソース

# ストップウォッチのインスタンスを作成する

ストップウォッチ インスタンスは、すべての個々の間隔を合計した合計経過時間で、複数の間隔にわたって経過時間を測定できます。これにより、2 つ以上のイベント間の経過時間を確実に測定できます。

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();

double d = 0;
for (int i = 0; i < 1000 * 1000 * 1000; i++)
{
    d += 1;
}

stopWatch.Stop();
Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss\\.fffffff}", stopWatch.Elapsed);

Stopwach System.Diagnostics にあります using System.Diagnostics; を追加する必要があります あなたのファイルに。

# 構文

  • stopWatch.Start() - ストップウォッチを開始します。
  • stopWatch.Stop() - ストップウォッチを停止します。
  • stopWatch.Elapsed - 現在の間隔で測定された合計経過時間を取得します。

# コメント

ストップウォッチは、プログラムのベンチマークでコードの時間を測定し、コードのさまざまなセグメントが実行されるまでの最適な時間を確認するためによく使用されます。