Dot-Net

秒錶真的壞了嗎?

  • April 5, 2012

秒錶類的 MSDN 頁面上,我發現了指向有趣文章的連結,該文章對秒錶進行了以下陳述:

但是有一些嚴重的問題:

  • 這在具有多個處理器的 PC 上可能不可靠。由於

BIOS 中的錯誤,必須在同一處理器上執行 Start() 和 Stop() 才能獲得正確的結果。

  • 這在沒有恆定時鐘速度的處理器上是不可靠的(大多數處理器可以降低時鐘速度以節省能源)。這在這裡詳細解釋。

我有點困惑。我見過大量使用秒錶的例子,但沒有人提到這個缺點。這有多嚴重?我應該避免使用秒錶嗎?

它沒有被破壞,它只是有局限性。對於大多數目的(閱讀:非正式的微基準測試)StopWatch來說,使用它是很好的,因為它對於非正式測試來說已經足夠好了。對於更正式的目的,您很可能希望滾動自己的檢測程式碼,因為您會投入更多資金來獲得正確的結果。

更有趣的問題是:

  1. 在什麼情況下 Stop() 將在與 Start() 不同的處理器上執行?

.

在大多數應用場景中,答案是“無”。 2. 在什麼條件下,處理器的時鐘速度會在測量的時間間隔內發生變化?

.

在 CPU 密集型基準測試中,“無”。

引用自:https://stackoverflow.com/questions/2585813