对于一些私有(private)项目,我使用 Stopwatch 进行性能测量。

但是在我想测量的调用次数很少时,我最终得到 0 ElapsedMilliseconds
这使得计算平均值变得困难。

我想过编写自己的秒表类(class)。它可以用刻度计算并根据 ElapsedMicrosecondsStopwatch.ElapsedTicks 给出一个模糊的 TimeSpan.TicksPerMillisecond 。这可能不是一个很好的方法。

我绝对需要由 winapi 的高性能计数器支持的东西,
所以日期时间等是不够的。

还有其他想法吗?

最佳答案

如果您得到 0 ElapsedMicroseconds,则意味着间隔短于 1 毫秒。
您可以尝试在 Ticks 中测量周期并使用频率:

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

关于c# - 用于性能测试的秒表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17744638/

10-13 06:35