我不明白定时器精度和分辨率的含义。任何人都可以向我解释一下吗?
注意:此问题与秒表有关。
答案 0 :(得分:4)
准确性和精确度是相反的目标,你不能同时获得两者。一个非常精确的定时源的例子是DateTime.UtcNow。它提供绝对时间,由内核自动校正时钟速率错误,使用定时服务定期重新校准时钟。您可能听说过time.windows.com,这是大多数Windows PC使用的NTP服务器。非常准确,你可以指望整整一年不到一秒钟的错误。但不准确,该值每秒仅更新64次。用任何不太精确的精度来计算不到一秒的任何东西是没用的。
秒表的时钟源非常不同。它使用一个自由运行的计数器,由计算机芯片组中的某个频率源驱动。这曾经是color burst frequency(3.579545 MHz)运行的专用晶体,但无可挑剔的成本削减已经从大多数PC中消除了。秒表非常精确,你可以从它的频率属性中看出来。你应该得到一个兆赫兹和CPU时钟频率之间的东西,让你的时间缩短到一微秒或更好。但它不准确,它受电子零件公差的影响。特别是不信任任何超过千兆赫兹的频率,这是从乘法器得出的,乘法器也乘以误差。并且要注意海森堡原理,启动和停止秒表会产生非零开销,这将影响非常短的测量的准确性。秒表的另一个常见准确性问题是操作系统切换您的线程以允许其他代码运行。您需要采用多个样本并使用中值。
答案 1 :(得分:0)
它们与任何测量相同。有关详细信息,请参阅此维基百科文章 -
答案 2 :(得分:0)
.net中有不同类型的时间(如果我没记错的话,其中有3个或4个),每个都使用自己的算法。计时器的精确度意味着在通知滴答事件时使用应用程序的准确程度。例如,如果您使用计时器并将其设置为每1000毫秒触发其滴答事件,则计时器的精度意味着它将实际打勾的指定1000毫秒的接近程度。
有关更多信息(至少在c#中),我建议您阅读the msdn page on timers:
答案 3 :(得分:0)
来自MSDN Stopwatch Class :(强调我的)
“秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则秒表类使用该计数器来测量经过的时间。否则,秒表class使用系统计时器来测量经过的时间。使用Frequency和IsHighResolution字段来确定秒表时序实现的精度和分辨率。“