I used to think that
Stopwatch.ElapsedTicks
was equal to Stopwatch.Elapsed.Ticks
.But it isn't. While the latter is a number of 100 nanoseconds periods, the former use a mysterious unit called timer ticks
. I wonder what those are, and why are they different from the usual unit of measurement?
From the docs:
The Stopwatch measures elapsed time by counting timer ticks in the underlying timer mechanism. If the installed hardware and operating system support a high-resolution performance counter, then the Stopwatch class uses that counter to measure elapsed time. Otherwise, the Stopwatch class uses the system timer to measure elapsed time. Use the Frequency and IsHighResolution fields to determine the precision and resolution of the Stopwatch timing implementation.
Yes, it's a pain that "ticks" is overloaded to mean two different things :(
I think it's basically because Stopwatch
is giving a pretty "raw" view of a performance counter, which can have different implementations for what it means by a "tick".
The Stopwatch.ElapsedTicks
is measuring a "tick" in terms of the stopwatch, which is a length of time of 1 second/Stopwatch.Frequency
.
Internally, this is based on the Windows High Performance Counter Support (if supported by your system, which is almost always true). The native call is QueryPerformanceFrequency, which will vary in length depending on your hardware's support.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With