2013-07-25 57 views
11

我是D語言的新手,需要測量算法的執行時間。我有什麼選擇?是否已經有一些內置的解決方案?我在網上找不到任何決定性結論。用D語言測量執行時間

回答

14

一種方法是使用-profile命令行參數。運行該程序後,它將創建文件trace.log您可以在其中找到每個函數的運行時間。這當然會減慢你的程序,因爲編譯器會在你的函數中插入時間計數代碼。此方法用於查找函數的相對速度,以確定您應該優化哪些內容,以最小的努力提高應用速度。

第二種選擇是使用std.datetime.StopWatch類。請參閱鏈接中的示例。

或者甚至更適合可能是直接使用std.datetime.benchmark功能。

不要忘記:

  1. 當標杆使用這些DMD編譯器標誌,以達到最大的優化-release -O -inline -noboundscheck
  2. 永不基準調試構建。
  3. 確保您的不會在基準函數內部調用任何庫代碼 - 您將基準執行庫實現的性能,而不是您自己的代碼。

此外,您可以考慮使用LDCGDC編譯器。它們都比DMD提供更好的優化/應用程序運行速度。

+0

分析不是我在這種情況下需要的,但'std.datetime.StopWatch'正是我所需要的。 – clstaudt

3

如果你的算法可以從命令行調用,那麼在D中有一個漂亮的實用程序,它可以運行你的程序一段時間,並打印出平均所用時間和各種其他有用數字的分佈。

這就是所謂的avgtime和它在這裏:https://github.com/jmcabo/avgtime