2012-05-27 63 views

回答

0

有.NET中不同類型的時間(3或其中4,如果我沒有記錯),每一個他自己的算法工作。計時器的精確度意味着它在通知使用應用程序的滴答事件上有多準確。例如,如果您使用計時器並將其設置爲每1000毫秒觸發其滴答事件,則計時器的精度意味着與指定的1000毫秒實際上打勾的時間有多接近。
瞭解更多信息(至少在C#),我建議ü閱讀the msdn page on timers

4

準確性和精確性是對立的目標,你不能同時獲得。一個非常準確的定時源的例子是DateTime.UtcNow。它提供絕對時間,內核自動糾正時鐘速率錯誤,使用定時服務定期重新校準時鐘。您可能聽說過time.windows.com,這是大多數Windows PC使用的NTP服務器。非常準確,您可以指望在整整一年內發生不到一秒的錯誤。但不準確,該值每秒只更新64次。對任何時間不到一秒鐘的任何時間都沒有用,而且沒有任何體面的精確度。

秒錶的時鐘源非常不同。它使用由芯片組某處可用頻率源驅動的自由運行計數器。這曾經是一款運行在color burst frequency(3.579545 MHz)的專用晶振,但無情的成本削減已經消除了大多數PC的成本。秒錶非常精確,你可以從其Frequency屬性中看出來。你應該在兆赫和CPU時鐘頻率之間得到一些東西,讓你的時間縮短到微秒或更好。但它不準確,它受到電子部件容差的限制。特別不信任超過千兆赫茲的任何頻率,這是由乘法器產生的,這也乘以誤差。並且要注意海森堡原則,啓動和停止秒錶需要非零開銷,這會影響非常短的測量的準確性。 Stopwatch另一個常見的準確性問題是操作系統切換您的線程以允許其他代碼運行。您需要採取多個樣本並使用中值。

0

從MSDN Stopwatch Class:(重點煤礦)

「通過計算計時器在基本定時器機制蜱經過時間的秒錶措施如果已安裝的硬件和操作系統支持高分辨率的性能計數器,然後秒錶班級使用該計數器來測量所用時間,否則,秒錶類將使用系統計時器來測量已用時間使用Frequency和IsHighResolution字段來確定秒錶計時實施的精度和分辨率。