由于 D 编译器前端是用 D 编写的,因此与 C++ 等工具相比,使用传统工具进行分析将相当困难。我在 Linux 上使用 gdb 和 valgrind 等工具以及在 Windows 上使用 VisualD 等工具取得了一些成功,Mac 用户有点 SOL。
您还有其他五个选择:
-v
标志来尝试查看程序的哪些部分需要一段时间。诚然,这是一种非常暴力的方法,可能会花费您一段时间。-profile
开关。每次运行 DMD 时,您都会获得一个包含大量信息的配置文件。当然,我认为这还没有被尝试过。您的里程可能会有所不同。当我说转向常识时,我的意思是说您的编译缓慢可能是由于一些常见问题造成的。例如,当 SQL 查询花费太长时间时,我的第一反应不是尝试分析 MySQL 服务器代码。以下是一些最常见的问题
allSatisfy
或使用函数(例如)ctRegex
。如果您正在执行繁重的 CTFE,并且希望以可能较慢的代码为代价实现更快的编译,请考虑将它们切换到运行时调用。import std.algorithm;
或 之类的导入import std.range;
。相反,使用特定于包的导入,例如import std.algorithm.iteration : map;
.