Clang编译器优化引发的性能倒退:内联函数的意外后果

2025-02-19

作者在一个C++基准测试中发现,Clang编译器对内联函数的优化反而导致了性能下降。当`increment`函数内联时,由于分支预测失败,导致性能比非内联版本慢了约5倍。使用`perf stat`工具验证了分支预测失败是性能下降的主要原因。有趣的是,使用Zig工具链编译则显著提升了性能,暗示这可能是Clang 19版本的一个回归问题。作者已在Clang/LLVM的仓库中提交了这个问题,初步调查表明,可能是SROA和SimplifyCFG两个优化过程之间的权衡导致的。

开发