众所周知,LLVM的Clang C / C ++编译器提供了比GCC更快的编译速度。
但是,新版本的GCC中的编译速度已得到提高。
在某些领域,由于缺乏LLVM / Clang的进一步优化工作,并且在不断增长的代码库中增加了其他工作,因此其速度降低了。
因此,就目前而言,在编译Linux内核时,GCC比LLVM更快。
/ Clang更快。
上周,与会者在Linux Plumbers 2020会议上发表了演讲,介绍了使用LLVM / Clang编译Linux内核的时间。
开发人员Nathan Chancellor和Nathan Huckleberry发现,对于64位ARM和x86_64体系结构,即使LLVM在启用了LTO和PGO的情况下进行编译,“ GCC编译速度始终会超过LLVM”。
仅当LLVM允许PGO在编译时为32位ARM构建时,它才能比GCC更快地编译Linux内核。
从历史上看,这些数据是出乎意料的,但是考虑到最新的编译器及其在编译器性能方面的激烈友好的竞争,这似乎并不太令人震惊。
但是,这种超越的情况也使LLVM开发人员能够探索未来的改进方法。
例如,冗余的内联汇编(Inline Assembly)语句消耗了大约13%的构建过程,而Clang 11中已解决了此问题。
此外,还有一些昂贵的计算需要跟踪宏参数源的位置。
随着上游LLVM / Clang编译器为x86_64和AArch64(以及最近的i686)构建上游内核编译器,LLVM开发人员将更加关注未来的构建时间。