用于性能测试的秒表

本文关键字:性能测试 用于 | 更新日期: 2023-09-27 18:24:05

对于一些私人项目,我使用Stopwatch来衡量性能。

但在我想测量的呼叫的重复次数较低时,我最终得到0个ElapsedMilliseconds,这使得难以计算平均值。

我想过写我自己的秒表课。它可以用ticks进行计算,并在Stopwatch.ElapsedTicksTimeSpan.TicksPerMillisecond的基础上给出一个模糊的ElapsedMicroseconds。这可能不是一个很好的方式。

我确实需要一些由winapi的高性能计数器备份的东西,所以约会时间之类的是不够的。

还有其他想法吗?

用于性能测试的秒表

如果获得0 ElapsedMicroseconds,则表示间隔短于1ms。您可以尝试在Ticks中测量周期,并使用Frequency:

  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);

StopWatch就是您所需要的。用途:

double diffMs = (stopWatch.ElapsedTicks * 1000.0) / Stopwatch.Frequency;

StopWathch.ElapsedMilliseconds定义为长。因此,它不可能比一毫秒更精确。

C#时间(以微秒为单位)

long microseconds = ticks / (TimeSpan.TicksPerMillisecond / 1000);

请原谅我的无知,(但是)如果它小于一毫秒(1000个刻度),您肯定不必诊断它的性能问题