我不明白计时器精度和分辨率的含义。有人能给我解释一下吗?
注:此问题与秒表相关。
发布于 2012-05-27 22:30:09
精确度和精确度是对立的目标,你不能两者兼得。一个非常精确的定时源的例子是DateTime.UtcNow。它提供由内核自动校正时钟频率误差的绝对时间,使用计时服务定期重新校准时钟。你可能听说过time.windows.com,大多数Windows PC使用的NTP服务器。非常准确,你可以指望在整个一年中误差不到一秒。但不是很精确,该值每秒仅更新64次。对任何不到一秒的事情进行精确计时都是没有用的。
秒表的时钟源非常不同。它使用由芯片组中某处可用的频率源驱动的自由运行计数器。这曾经是在color burst frequency (3.579545 MHz)上运行的专用水晶,但无情的成本削减已经消除了大多数PC的这一点。秒表非常精确,你可以从它的频率属性中看出来。你应该得到一个介于兆赫和cpu时钟频率之间的东西,让你的时间降到一微秒或更好。但它是不准确的,它受到电子零件公差的限制。特别是不信任任何超过千兆赫的频率,这是从乘法器得出的,乘法器也会使误差成倍增加。注意海森伯格原理,秒表的启动和停止需要非零的开销,这将影响非常短的测量的准确性。秒表的另一个常见的准确性问题是操作系统将你的线程切换出来,以允许其他代码运行。您需要采集多个样本并使用中位数。
发布于 2012-05-27 20:55:23
它们与任何度量都是相同的。请参阅维基百科的这篇文章了解更多细节--
http://en.wikipedia.org/wiki/Accuracy_and_precision
发布于 2012-05-27 20:55:54
在.net中有不同类型的时间(如果我没记错的话,有3到4个),每个时间都使用自己的算法。计时器的精度意味着它在通知正在使用的应用程序计时事件时的精确度。例如,如果您使用计时器并将其设置为每1000毫秒触发一次滴答事件,则计时器的精度意味着它将实际滴答地接近指定的1000毫秒。
有关更多信息(至少在c#中),我建议您阅读the msdn page on timers
https://stackoverflow.com/questions/10774094
复制相似问题