开发者

Why does ElapsedTicks * 10 000 not equal ElapsedMilliseconds for .NET's Stopwatch?

I am trying to performance test some code. I am using a stopwatch. When I output the number of milliseconds it always tells me 0 so I thought that I would try the number of ticks. I am seeing that the number of ticks is about 20 000 to 30 000. Looking at the MSDN at TimeSpan.TicksPerMillisecond it sa开发者_开发技巧ys that is 10 000 ticks per millisecond. In that case why are the elapsed milliseconds on my stopwatch not appearing as 2 or 3?

What am I missing? I have even outputed the result on the same line. This is what I get.

Time taken: 26856 ticks, 0 ms

And it is constant.

This is my code which I have running in a loop. I realize that I am creating a new stopwatch every time which isn't very efficient but I don't see how it could skew my results.

Dim SW = New Stopwatch()
SW.Reset()
SW.Start()
MethodCall()
SW.Stop()
Console.WriteLine(String.Format("Time to increase counters: {0} ticks, {1} ms", SW.ElapsedTicks, SW.ElapsedMilliseconds))


Stopwatch ticks are different from DateTime Ticks.

The length of a Stopwatch tick depends on the Stopwatch frequency (one tick is one second divided by the frequency, as described in the MSDN documentation for Stopwatch.ElapsedTicks.

It could be argued that Stopwatch.ElapsedTicks was a poor choice of a name for this property because of the potential for confusion with DateTime ticks. I would have preferred something like ElapsedRawTicks, or some other suitable adjectival qualifier to hint that these are not standard Ticks.


Ensure you're actually starting a Stopwatch and that you're using either Stopwatch.ElapsedMilliseconds or Stopwatch.Elapsed.TotalMilliseconds.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜