什么是计时器滴答,秒表使用的单位.ElapsedTicks

时间:2011-04-26 17:03:32

标签: .net timespan stopwatch

我曾经认为

  • Stopwatch.ElapsedTicks等于
  • Stopwatch.Elapsed.Ticks

但事实并非如此。虽然后者是100纳秒的时期,但前者使用了一个名为timer ticks的神秘单位。我想知道它们是什么,为什么它们与通常的测量单位不同?

3 个答案:

答案 0 :(得分:9)

来自the docs

  

秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量经过的时间。否则,Stopwatch类使用系统计时器来测量经过的时间。使用FrequencyIsHighResolution字段确定秒表计时实施的精度和分辨率。

是的,“滴答”超载意味着两件不同的事情是痛苦的:(

我认为这基本上是因为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纳秒内测量)