Post

Compile Optimize

编译加速上的一些经验和分析方法,主要针对c++。

实际上在了解完make和ninja之后,发现要加速单translation unit的编译,应该最小化他要做的事,例如include what u want,使用pimpl,使用forward declaration等等。

一些compile optimize的经验

  1. c++项目编译优化

  2. C++服务编译耗时优化原理及实践

  3. chrome do and dont

  4. constructor destructor behavior

    其实我觉得在.h里写=default可能是trival的

  5. Compilation Firewalls-1

  6. Compilation Firewalls-2

  7. gg code style suggests

  8. chrome componet build

  9. webkit build suggestions

  10. clang-time-trace practice

  11. excutable-size-analysis

    这个是上一个作者的另一篇文章,我感觉挺有意思,和编译相关,包体积分析优化

  12. flame-time-trace

  13. time-report by clang

  14. clang build analysis

  15. Optimizing the unoptimizable: a journey to faster C++ compile times

目前看来就是尽量最小化include,尽量使用pimpl, 虽然现在的gg code style不再推荐这种方式了,但是我估计他们编译都上集群了,也不再乎这点东西,另外一些缺点其实注意命名和命名空间的话,其实比较少遇到。坑的文章在这里

如何分析编译耗时

编译耗时的分析,可以使用-ftime-trace,这个选项会在编译的时候生成一个json文件,然后使用llvm-profdatallvm-cov来分析这个json文件,具体可以参考这里

如果使用ninja的话,看编译依赖关系可以使用ninja -t deps, 具体看下文档就行

gn看依赖关系的话,可以使用gn desc,具体看下文档

编译optimize level

clang optimize level

开不同的optimize level会让最终得到的binary size有不同

This post is licensed under CC BY 4.0 by the author.

Trending Tags