其他分享
首页 > 其他分享> > c – 跟踪编译器以查看它在某些文件上花费了多少时间

c – 跟踪编译器以查看它在某些文件上花费了多少时间

作者:互联网

编译我的项目需要很长时间,我想我想改进它的编译时间.我要做的第一件事是将编译时间分解为单个文件.

所以编译器告诉我例如:

boost/variant.hpp: took 100ms in total
myproject/foo.hpp: took 25ms in total
myproject/bar.cpp: took 125ms in total

然后我可以专门尝试通过引入前向声明和/或重新排序来改善占用大部分时间的文件的编译时间,这样我就可以省略包含文件.

这项任务有什么用吗?我正在使用GCC和ICC(intel c)

我使用Scons作为我的构建系统.

解决方法:

重要的指标不是处理头文件所需的时间(无论如何),而是头文件更改的频率,并强制构建系统在所有相关单元上重新调用编译器.

与编译过程的所有其他步骤相比,编译器花费解析无用代码的时间非常少.即使您包含了所有不需要的文件,它们也可能在磁盘缓存中很热门.预编译的头文件使这更好.

目标是避免由于头文件中不相关的更改而重新编译单元.这就是pimpl和其他编译防火墙等技术的用武之地.

而链接时代码生成又称整个程序优化使事情变得更糟,通过撤消编译时防火墙并重新处理整个程序.

无论如何,关于头文件的不稳定性的信息应该可以从构建日志,提交日志,甚至文件系统中的最后修改日期获得.

标签:c,compile-time
来源: https://codeday.me/bug/20190901/1783306.html