4

我不明白计时器精度和分辨率的含义。谁能给我解释一下?

注意:这个问题与秒表有关。

4

4 回答 4

6

准确度和精确度是相反的目标,你不能两者兼得。DateTime.UtcNow 是一个非常准确的计时源示例。它提供绝对时间,由内核自动纠正时钟频率错误,使用计时服务定期重新校准时钟。您可能听说过 time.windows.com,这是大多数 Windows PC 使用的 NTP 服务器。非常准确,您可以指望在一整年中出现不到一秒的错误。但并不精确,该值每秒仅更新 64 次。以任何一种不错的精度来计时任何花费不到一秒的时间都是没有用的。

秒表的时钟源非常不同。它使用一个自由运行的计数器,该计数器由芯片组中某处可用的频率源驱动。这曾经是一个以颜色突发频率运行的专用晶体(3.579545 MHz) 但无情的成本削减已经从大多数 PC 中消除了这一点。秒表非常精确,你可以从它的频率属性中看出。你应该得到一个兆赫兹和 CPU 时钟频率之间的东西,让你的时间下降到一微秒或更好。但它并不准确,它受电子零件公差的影响。特别不相信任何超过千兆赫的频率,它来自一个乘法器,它也乘以误差。并注意海森堡原理,启动和停止秒表需要非零开销,这会影响非常短的测量的准确性。秒表的另一个常见准确性问题是操作系统切换出您的线程以允许其他代码运行。您需要采集多个样本并使用中值。

于 2012-05-27T14:30:09.147 回答
0

它们与任何测量相同。有关更多详细信息,请参阅此 Wikipedia 文章-

http://en.wikipedia.org/wiki/Accuracy_and_precision

于 2012-05-27T12:55:22.787 回答
0

.net 中有不同类型的时间(如果我没记错的话,其中有 3 或 4 个),每个都使用自己的算法。计时器的精度意味着它在通知正在使用的应用程序有关滴答事件时的准确性。例如,如果您使用计时器并将其设置为每 1000 毫秒触发一次其滴答事件,则计时器的精度意味着它将实际滴答的接近指定的 1000 毫秒。
有关更多信息(至少在 c# 中),我建议您阅读有关计时器的 msdn 页面

于 2012-05-27T12:55:53.623 回答
0

来自 MSDN秒表类:(强调我的)

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

于 2012-05-27T14:43:07.897 回答