我曾经认为
Stopwatch.ElapsedTicks
等于Stopwatch.Elapsed.Ticks
。但事实并非如此。虽然后者是100纳秒的时期,但前者使用了一个名为timer ticks
的神秘单位。我想知道它们是什么,为什么它们与通常的测量单位不同?
答案 0 :(得分:9)
来自the docs:
秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量经过的时间。否则,Stopwatch类使用系统计时器来测量经过的时间。使用Frequency和IsHighResolution字段确定秒表计时实施的精度和分辨率。
是的,“滴答”超载意味着两件不同的事情是痛苦的:(
我认为这基本上是因为Stopwatch
提供了一个非常“原始”的性能计数器视图,它可以通过“滴答”实现不同的实现。
答案 1 :(得分:5)
Stopwatch.ElapsedTicks
根据秒表测量“滴答”,时间长度为1秒/ Stopwatch.Frequency
。
在内部,这是基于Windows High Performance Counter Support(如果您的系统支持,几乎总是如此)。原生呼叫为QueryPerformanceFrequency,根据您的硬件支持,长度会有所不同。
答案 2 :(得分:0)
查看控制台输出可能会有所帮助......
LinkedList 500插入/删除操作ElapsedTicks:45871
LinkedList 500插入/删除操作Elapsed.ticks:141266
LinkedList 500插入/删除操作milisec:14.1266
列出500插入/删除操作ElapsedTicks:1235121
列表500插入/删除操作Elapsed.ticks:3803744
清单500插入/删除操作milisec:380.3744
(从中确认Elapsed.Ticks在100纳秒内测量)