gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:28:11 25 4
gpt4 key购买 nike

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

例如编译器会告诉我:

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

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

这个任务有什么要求吗?我正在使用 GCC 和 ICC(英特尔 C++)


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

最佳答案

重要的指标不是处理头文件需要多长时间(无论这意味着什么),而是头文件更改并强制构建系统在所有依赖单元上重新调用编译器的频率。

与编译过程的所有其他步骤相比,编译器花在解析无用代码上的时间真的很少。即使您包含整个不需要的文件,它们在磁盘缓存中也可能很热。预编译的 header 使这变得更好。

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

链接时代码生成(又名全程序优化)让事情变得更糟,因为它取消了编译时防火墙并重新处理整个程序。

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

关于c++ - 跟踪编译器以查看它在某些文件上花费了多少时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com