在C#中循环缓慢

Mas*_*era 5 c# performance loops while-loop

我有一个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();
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*Sax 8

你正在比较苹果和橘子.您的外部计时器测量所花费的总时间.内部计时器测量调用所用的整数毫秒数Method1.

ElapsedMilliseconds财产"表示经过时间四舍五入到最接近的整数毫秒的价值." 因此,您将向下舍入到最近的毫秒大约50,000次.

如果您的调用Method1平均小于1毫秒,那么大部分时间,`ElapsedMilliseconds'属性将返回0,您的内部计数将远远少于实际时间.事实上,你的方法平均需要大约0.3毫秒,所以你很幸运,甚至超过1毫秒40次.

使用Elapsed.TotalMillisecondsElapsedTicks属性而不是ElapsedMilliseconds.一毫秒相当于10,000个刻度.