LLVM的ClangC/C++编译器传统上以提供了比GCC更快的编译速度而著称,不过在GCC的最近几个版本中,其编译速度有所提升
并且在某些领域由于LLVM/Clang进一步优化工作的缺失和其他工作加入到不断增长的代码库中,导致其速度有所减慢,因此就目前而言,GCC在编译Linux内核方面的速度比LLVM/Clang更快。
与会者在上周LinuxPlumbers大会上发表的演讲介绍了使用LLVM/Clang编译Linux内核的时间。
开发者NathanChancellor和NathanHuckleberry发现,对于64位ARM和x86_64架构来说,即便LLVM在启用LTO和PGO的情况下进行编译,“GCC编译速度始终击败LLVM”。
只有当LLVM在编译时启用PGO来为32位ARM进行构建的情况下,其编译Linux内核的速度才比GCC快。
从历史上看,这个数据是出乎意料的,但考虑到最新的编译器及其在编译器性能方面激烈而友好的竞争,似乎又不是过于令人感到震惊的事情。
不过这种被超越的案例也让LLVM的开发者们开始探索未来的改进途径。例如,冗余的内联内联汇编(InlineAssembly)语句消耗了大约13%的构建过程,而此问题已经在Clang11中得到解决。
另外,还有一些需要跟踪宏参数源位置的高开销计算。
随着上游LLVM/Clang编译器为x86_64和AArch64(以及最近的i)构建上游内核编译器,LLVM开发者将更密切