11

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

4

3 回答 3

14

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

第二种选择是使用std.datetime。秒表类。请参阅链接中的示例。

或者更适合直接使用std.datetime。基准函数。

不要忘记:

  1. 在进行基准测试时,使用这些 dmd 编译器标志来实现最大优化-release -O -inline -noboundscheck
  2. 永远不要对调试版本进行基准测试。
  3. 确保您没有在基准函数中调用任何库代码 - 您将基准测试库实现的性能而不是您自己的代码。

此外,您可以考虑使用LDCGDC编译器。它们都提供了比 DMD 更好的优化/应用程序运行速度。

于 2013-07-25T11:44:38.290 回答
3

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

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

于 2013-08-05T23:10:50.403 回答
0

std.benchmark在审查队列中。

于 2013-09-29T08:26:05.943 回答