Dot-Net
秒錶真的壞了嗎?
在秒錶類的 MSDN 頁面上,我發現了指向有趣文章的連結,該文章對秒錶進行了以下陳述:
但是有一些嚴重的問題:
- 這在具有多個處理器的 PC 上可能不可靠。由於
BIOS 中的錯誤,必須在同一處理器上執行 Start() 和 Stop() 才能獲得正確的結果。
- 這在沒有恆定時鐘速度的處理器上是不可靠的(大多數處理器可以降低時鐘速度以節省能源)。這在這裡詳細解釋。
我有點困惑。我見過大量使用秒錶的例子,但沒有人提到這個缺點。這有多嚴重?我應該避免使用秒錶嗎?
它沒有被破壞,它只是有局限性。對於大多數目的(閱讀:非正式的微基準測試)
StopWatch來說,使用它是很好的,因為它對於非正式測試來說已經足夠好了。對於更正式的目的,您很可能希望滾動自己的檢測程式碼,因為您會投入更多資金來獲得正確的結果。
更有趣的問題是:
- 在什麼情況下 Stop() 將在與 Start() 不同的處理器上執行?
.
在大多數應用場景中,答案是“無”。 2. 在什麼條件下,處理器的時鐘速度會在測量的時間間隔內發生變化?
.
在 CPU 密集型基準測試中,“無”。