对于一些私有(private)项目,我使用 Stopwatch
进行性能测量。
但是在我想测量的调用次数很少时,我最终得到 0 ElapsedMilliseconds
,
这使得计算平均值变得困难。
我想过编写自己的秒表类(class)。它可以用刻度计算并根据 ElapsedMicroseconds
和 Stopwatch.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/