我如何找出编译器在哪里花费时间?
我的构建太慢了,我已经为 VC++ 临时文件使用了 RAMdisk,它没有任何区别。 (我有一个 SSD,所以我预计没有区别。)
此项目中的大多数单个 C++ 文件大约需要 10 分钟。编译需要 2 秒,这看起来很糟糕(因为我也没有任何项目内并行化,因为我使用的是 VS2005)。
我该如何优化呢?不进行分析就不要优化,但是如何分析编译器?
注意:这些并没有真正的帮助:
- Profiling the C++ compilation process
- Displaying build times in Visual Studio? (虽然它并非完全没有优点......如果您进行单文件编译,而不是整个项目,它将显示单个文件所花费的时间:这样我看到这里的一些文件需要更多5 秒,单机编译时甚至 10 秒)
让我们添加一个很好的评论:你有很多模板吗?您的文件平均有多大?你检查过只包含最少的必要标题
不,我没有。我当然可以(并且pro'lly会)。我也许能找到一些东西,但这都是推测和反复试验!
“Everybody”告诉你,你应该只在测量/分析之后进行优化,但是在优化编译时间时,我们又回到了试错?
注意:__TIME__
评论中提出的“hack”确实不有效,至少在 Visual-C++ 上无效,因为(如 the docs 状态): 当前源文件的最近编译时间。时间是 hh:mm:ss 形式的字符串文字。 - 我想至少可以使用这个标记获得单个编译单元的计时,但它无助于深入研究编译单元.
最佳答案
SysInternals ProcMon 将显示所选进程完成的所有 I/O,包括发生时的时间戳和完整路径。
关于c++ - 我如何找出编译器花费时间的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406073/