I have a while loop and all it does is a method call. I have a timer on the outside of the loop and another timer that incrementally adds up the time the method call takes inside the loop. The outer time takes about 17 seconds and the total on the inner timer is 40 ms. The loop is executing 50,000 times. Here is an example of the code:
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();
Any help would be much appreciated.
Massimo
You are comparing apples and oranges. Your outer timer measures the total time taken. Your inner timer measures the number of whole milliseconds taken by the call to
Method1.The ElapsedMilliseconds property “represents elapsed time rounded down to the nearest whole millisecond value.” So, you are rounding down to the nearest millisecond about 50,000 times.
If your call to
Method1takes, on average, less than 1ms, then most of the time, the `ElapsedMilliseconds’ property will return 0 and your inner count will be much, much less than the actual time. In fact, your method takes about 0.3ms on average, so you’re lucky even to get it to go over 1ms 40 times.Use the
Elapsed.TotalMillisecondsorElapsedTicksproperty instead ofElapsedMilliseconds. One millisecond is equivalent to 10,000 ticks.