3 回答

TA貢獻1886條經驗 獲得超2個贊
根據MSDN:
秒表通過計算基礎計時器機制中的計時器滴答來測量經過的時間。如果安裝的硬件和操作系統支持高分辨率性能計數器,則Stopwatch類將使用該計數器來測量經過的時間。否則,秒表類將使用系統計時器來測量經過的時間。使用Frequency和IsHighResolution字段來確定秒表計時實現的精度和分辨率。
它使用的分辨率/精度高于DateTime.Now。
您還可以查看以下相關鏈接:
Environment.TickCount與DateTime.Now
DateTime.Now現在是衡量函數性能的最佳方法嗎?
DateTime足夠精確到秒,但是我推薦的以外的任何東西StopWatch。

TA貢獻2003條經驗 獲得超2個贊
最好使用Stopwatch類,因為它比減去DateTime值更準確:
Stopwatch s = Stopwatch.StartNew();
// Tested code here
s.Stop();
Console.WriteLine("Elapsed Time: {0} ms", s.ElapsedMilliseconds);
不幸的是,這段簡單的代碼大部分時間都無法獲得準確的測量結果,因為在OS的內部進行了大量的活動,這可能會占用一些CPU時間并減慢代碼的執行速度。這就是為什么最好多次執行測試,然后刪除最低和最高的時間。對于那個小女孩來說,擁有一種方法可以多次執行被測試的代碼,刪除最短和最大的時間并計算平均時間是一個很好的解決方案。我已經在博客中發布了一種示例測試方法。

TA貢獻1831條經驗 獲得超10個贊
此計時功能性能鏈接討論您的確切問題,特別是本段:
問題是,根據MSDN,DateTime.Now函數的分辨率為10毫秒以上,我們需要調用兩次!因此,這會在您的運行時測量中引入20毫秒以上的擺幅。由于我們的函數調用返回時間通??赡鼙?0ms窗口快得多,因此這還不夠好。
編輯:聽起來像第二個DateTime.Now在與秒表方法結束時不同的時間被調用。
添加回答
舉報