2009-10-13 68 views
2

我需要訪問.NET應用程序中非常精確的時間。.NET中的精確時間

我需要微秒精度。

有沒有簡單的方法在.NET中做到這一點?

+0

這個問題似乎是(更糟糕的)重複http://stackoverflow.com/questions/307582/how-frequent-is-datetime-now-updated-or-is-there-a-more-precise- api-to-get-the,但我更喜歡答案。 – Abacus 2013-12-19 21:04:52

回答

4

Stopwatch類是你可以得到的最好的精度,它使用高頻定時器。
秒錶的頻率取決於CPU的頻率,但其頻率通常爲每秒百萬次。

如果CPU沒有提供高頻定時器,那麼該類將回退到每秒100-50次的系統定時器。

6

System.Diagnostics.Stopwatch對於您的時間粒度這個級別是正確的級別,但請確保您使用秒錶對象的Elapsed.Ticks屬性而不是其ElapsedTicks屬性,因爲它們是兩個不同的東西。

  • ElapsedTicks(無點)是指秒錶的蜱的數目,並因此需要在音樂會中使用與Stopwatch.Frequency(這是不一樣的所有機器上)來計算所經過的時間。
  • Elapsed.Ticks點)給出了Timespan刻度的數量,並且不依賴於秒錶頻率。

這可能是在.NET中的微妙潛在錯誤之一。

此外,提防秒錶高度細化,但它不一定是所有的準確(取決於您的用語的定義)。 Stopwatch返回的時間會偏離系統時間。

在我的筆記本電腦上,秒錶幾乎跑了5秒24小時,這種情況在其他一些機器上會更糟。

如果你計時較短的時間,當然,這種影響應該不重要。

+0

請注意,由於CPU上的節電措施,秒錶可能在筆記本電腦上不準確,但現代英特爾i7或更新版本不會遇到此問題。換句話說,如果你在工作電腦上進行計時,事情會更加準確。 – Contango 2012-02-14 10:22:57