我曾经这么认为
Stopwatch.ElapsedTicks
等于Stopwatch.Elapsed.Ticks
。
但事实并非如此。虽然后者是100纳秒的时期,但前者使用了一个神秘的单位 timer ticks
。我想知道它们是什么,为什么它们与通常的测量单位不同?
我曾经这么认为
Stopwatch.ElapsedTicks
等于 Stopwatch.Elapsed.Ticks
。但事实并非如此。虽然后者是100纳秒的时期,但前者使用了一个神秘的单位 timer ticks
。我想知道它们是什么,为什么它们与通常的测量单位不同?
从 文档:
秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量经过的时间。否则,Stopwatch类使用系统计时器来测量经过的时间。使用 频率 和 IsHighResolution 用于确定秒表计时实施的精度和分辨率的字段。
是的,这是一个痛苦,“滴答”被重载意味着两个不同的东西:(
我认为这基本上是因为 Stopwatch
给出了一个非常“原始”的性能计数器视图,它可以通过“tick”实现不同的实现。
从 文档:
秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量经过的时间。否则,Stopwatch类使用系统计时器来测量经过的时间。使用 频率 和 IsHighResolution 用于确定秒表计时实施的精度和分辨率的字段。
是的,这是一个痛苦,“滴答”被重载意味着两个不同的东西:(
我认为这基本上是因为 Stopwatch
给出了一个非常“原始”的性能计数器视图,它可以通过“tick”实现不同的实现。
该 Stopwatch.ElapsedTicks
根据秒表测量“滴答”,这是1秒的时间长度/Stopwatch.Frequency
。
在内部,这是基于 Windows高性能计数器支持 (如果您的系统支持,几乎总是如此)。原生电话是 QueryPerformanceFrequency的,根据硬件的支持,长度会有所不同。
也许看到控制台输出有帮助...
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纳秒内测量)