我有一个while循环,它所做的只是一个方法调用。我在循环的外部有一个计时器,而另一个计时器则递增地累加了方法调用在循环内花费的时间。外部时间大约需要17秒,内部定时器的总时间为40毫秒。该循环执行50,000次。这是代码示例:

long InnerTime = 0;
long OutterTime = 0;
Stopw1.Start();
int count = 1;
while (count <= TestCollection.Count) {
    Stopw2.Start();
    Medthod1();
    Stopw2.Stop();
    InnerTime = InnerTime + Stopw2.ElapsedMilliseconds;
    Stopw2.Reset();
    count++;
}
Stopw1.Stop();
OutterTime = Stopw1.ElapsedMilliseconds;
Stopw1.Reset();

任何帮助将非常感激。
马西莫

最佳答案

您正在比较苹果和桔子。您的外部计时器将测量所花费的总时间。您的内部计时器测量对Method1的调用所花费的毫秒数。

ElapsedMilliseconds 属性“表示四舍五入到最接近的整毫秒值的耗时”。因此,您将下舍入到最接近的毫秒数大约50,000次。

如果您对Method1的调用平均花费不到1毫秒,那么在大多数情况下,“ElapsedMilliseconds”属性将返回0,并且您的内部计数将大大少于实际时间。实际上,您的方法平均需要花费0.3ms的时间,因此您甚至幸运地获得了超过40ms 1ms的机会。

使用Elapsed.TotalMillisecondsElapsedTicks属性代替ElapsedMilliseconds。一毫秒等于10,000滴答声。

09-17 21:46