对于某些私人项目,我使用Stopwatch
进行效果衡量。
但是我想测量的电话重复次数很少,我最终得到0 ElapsedMilliseconds
,
这使得计算平均值变得困难。
我想过写自己的秒表课程。它可以使用刻度计算,并根据ElapsedMicroseconds
和Stopwatch.ElapsedTicks
给出模糊的TimeSpan.TicksPerMillisecond
。这可能不是一个很好的方式。
我肯定需要一些由winapi的高性能计数器支持的东西, 因此,日期时间等等是不够的。
还有其他想法吗?
答案 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)
long microseconds = ticks / (TimeSpan.TicksPerMillisecond / 1000);
答案 3 :(得分:1)
原谅我的无知,(但)如果它不到一毫秒(1000个滴答),你肯定不必为性能问题诊断它