2013-07-25 60 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