11

我曾经认为

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

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

4

3 回答 3

9

文档

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

是的,“滴答声”被超载表示两种不同的东西是一种痛苦:(

我认为这基本上是因为Stopwatch它给出了一个非常“原始”的性能计数器视图,对于“tick”的含义,它可以有不同的实现。

于 2011-04-26T17:05:49.473 回答
5

Stopwatch.ElapsedTicks是用秒表测量“滴答”,即 1 秒 / 的时间长度Stopwatch.Frequency

在内部,这是基于Windows 高性能计数器支持(如果您的系统支持,这几乎总是正确的)。本机调用是QueryPerformanceFrequency,其长度会因您的硬件支持而异。

于 2011-04-26T17:06:08.640 回答
0

也许它有助于查看控制台输出......

ListedList 500 插入/删除操作 ElapsedTicks :45871
LinkedList 500 插入/删除操作 Elapsed.ticks :141266
LinkedList 500 插入/删除操作 milisec:14.1266
列表 500 插入/删除操作 ElapsedTicks:1235121
列表 500 插入/删除操作 Elapsed.ticks :
3803744 500 次插入/删除操作毫秒:380.3744

(从中可以确认 Elapsed.Ticks 的测量时间为 100 纳秒)

于 2011-05-04T10:27:15.167 回答