Compile Optimize
编译加速上的一些经验和分析方法,主要针对c++。
实际上在了解完make和ninja之后,发现要加速单translation unit的编译,应该最小化他要做的事,例如include what u want,使用pimpl,使用forward declaration等等。
一些compile optimize的经验
constructor destructor behavior
其实我觉得在.h里写=default可能是trival的
- excutable-size-analysis
这个是上一个作者的另一篇文章,我感觉挺有意思,和编译相关,包体积分析优化
- Optimizing the unoptimizable: a journey to faster C++ compile times
目前看来就是尽量最小化include,尽量使用pimpl, 虽然现在的gg code style不再推荐这种方式了,但是我估计他们编译都上集群了,也不再乎这点东西,另外一些缺点其实注意命名和命名空间的话,其实比较少遇到。坑的文章在这里
如何分析编译耗时
编译耗时的分析,可以使用-ftime-trace
,这个选项会在编译的时候生成一个json文件,然后使用llvm-profdata
和llvm-cov
来分析这个json文件,具体可以参考这里。
如果使用ninja的话,看编译依赖关系可以使用ninja -t deps
, 具体看下文档就行
gn看依赖关系的话,可以使用gn desc
,具体看下文档
编译optimize level
开不同的optimize level会让最终得到的binary size有不同
This post is licensed under CC BY 4.0 by the author.