What are timer ticks, the unit used by Stopwatch.ElapsedTicks

冷暖自知 提交于 2019-11-28 13:23:10

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.

Maybe it helps to see console output ...

LinkedList 500 insert/remove operations ElapsedTicks : 45871
LinkedList 500 insert/remove operations Elapsed.ticks : 141266
LinkedList 500 insert/remove operations milisec: 14.1266
List 500 insert/remove operations ElapsedTicks: 1235121
List 500 insert/remove operations Elapsed.ticks : 3803744
List 500 insert/remove operations milisec: 380.3744

(From which it is confirmed that Elapsed.Ticks are measured in 100 nanoseconds)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!