用于性能测试的秒表

时间:2013-07-19 11:08:39

标签: c# performance-testing stopwatch

对于某些私人项目,我使用Stopwatch进行效果衡量。

但是我想测量的电话重复次数很少,我最终得到0 ElapsedMilliseconds, 这使得计算平均值变得困难。

我想过写自己的秒表课程。它可以使用刻度计算,并根据ElapsedMicrosecondsStopwatch.ElapsedTicks给出模糊的TimeSpan.TicksPerMillisecond。这可能不是一个很好的方式。

我肯定需要一些由winapi的高性能计数器支持的东西, 因此,日期时间等等是不够的。

还有其他想法吗?

4 个答案:

答案 0 :(得分:6)

如果你得到0 ElapsedMicroseconds,这意味着间隔短于1 ms。 您可以尝试在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);

答案 1 :(得分:1)

StopWatch是你需要的东西。 使用:

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

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

答案 2 :(得分:1)

C# time in microseconds

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

答案 3 :(得分:1)

原谅我的无知,(但)如果它不到一毫秒(1000个滴答),你肯定不必为性能问题诊断它