用D语言测量执行时间

时间:2013-07-25 11:21:19

标签: performance time d execution-time

我是D语言的新手,需要测量算法的执行时间。我有什么选择?是否已经有一些内置的解决方案?我在网上找不到任何结论。

3 个答案:

答案 0 :(得分:14)

一种方法是使用-profile命令行参数。运行程序后,它将创建文件 trace.log ,您可以在其中找到每个函数的运行时间。这当然会减慢你的程序,因为编译器会将计时代码插入到你的每个函数中。此方法用于查找函数的相对速度,以确定您应该优化哪些以最小的努力提高应用程序速度。

第二个选项是使用std.datetime.StopWatch类。请参阅链接中的示例。

或者更合适的可能是直接使用std.datetime.benchmark功能。

不要忘记:

  1. 基准测试时使用这些dmd编译器标志来实现最大优化-release -O -inline -noboundscheck
  2. 从不对 debug 版本进行基准测试。
  3. 确保您不在基准测试函数中调用任何库代码 - 您将对库实现的性能进行基准测试而不是您自己的代码。
  4. 此外,您可以考虑使用LDCGDC编译器。它们都比DMD提供更好的优化/ app运行速度。

答案 1 :(得分:3)

如果你的算法可以从命令行调用,那么用D编写的一个漂亮的实用程序会运行你的程序很多次并打印出平均所用时间和所有其他有用数字的分布。

它被称为avgtime,它在这里:https://github.com/jmcabo/avgtime

答案 2 :(得分:0)

std.benchmark位于审核队列中。