4

いくつかのプライベート プロジェクトではStopwatch、パフォーマンス測定に使用します。

しかし、測定したい呼び出しの繰り返し回数が少ないと、最終的に 0ElapsedMillisecondsになり、平均を計算することが難しくなります。

独自の Stopwatch クラスを作成することを考えました。ティックで計算し、とElapsedMicrosecondsに基づいてあいまいな値を与えることができます。これはおそらくあまり良い方法ではありません。Stopwatch.ElapsedTicksTimeSpan.TicksPerMillisecond

winapi の高性能カウンターによってバックアップされるものが絶対に必要なので、datetime などでは十分ではありません。

他のアイデアはありますか?

4

4 に答える 4

6

ElapsedMicroseconds が 0 の場合は、間隔が 1 ミリ秒より短いことを意味します。ティックで期間を測定し、頻度を使用してみてください。

  Stopwatch watch = Stopwatch.StartNew();
  ...
  // Estimated code here 
  ...
  watch.Stop();

  // Microseconds
  int microSeconds = (int)(watch.ElapsedTicks * 1.0e6 / Stopwatch.Frequency + 0.4999);
  // Nanoseconds (estimation)
  int nanoSeconds = (int)(watch.ElapsedTicks * 1.0e9 / Stopwatch.Frequency + 0.4999);
于 2013-07-19T11:20:20.967 に答える