【发布时间】:2012-07-18 22:46:55
【问题描述】:
我有一个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”,我们不知道它是做什么的。否则,关于计时器似乎一切正常!
-
什么是
TestCollection- 它是一种方法、变量/属性还是什么?尝试将TestCollection.Count替换为一个常数(显然是一个低到不会跌倒的值)。 -
尝试在循环外执行
int countLimit = TestCollection.Count并在您的条件下使用 countLimit。如果集合是高度动态的,这可能是一个非常昂贵的评估。 -
如果 TestCollection 是 Collection
或 List 的实例,则 Count 是 O(1) 操作。除非它是某种低效的自定义类,否则不会导致问题。
标签: c# performance loops while-loop