Open|LLVM Clang 14实现了惊人的性能优化

多年以来 , LLVM / Clang 的性能已经迎来了相当大的提升 。此外在 x86_64 和 AArch64 应用上 , 它也能够与 GCC 编译器并驾齐驱 。即便如此 , 激烈的竞争并未就此止步 。由最近一次提交的内容可知 , 即将于 2022 年初发布的 LLVM / Clang 14.0 , 将迎来更多性能方面的优化 。

Open|LLVM Clang 14实现了惊人的性能优化
文章图片

早些时候 , LLVM 开发者 Djordje Todorovic 为 LLVM 的 Loop Invariant Code Motion(LICM)Pass 引入了相关改进 , 以便能够在没有 STORE 的情况下提升 LOAD。

补丁描述称 , 在 LICM 中开展加载 / 存储更新时 , 若不能证明下沉存储是安全的 , LLVM 就不会提升加载 , 即使我们能够证明它可被取消引用并移出循环 。
【Open|LLVM Clang 14实现了惊人的性能优化】该补丁通过在循环中插入适当的 PHI , 并将其移动到循环前置器中以实现负载改善 , 而 STORE 将在循环中保持原样 。
通过这么做 , 我们可避免在每次迭代中、于内存位置进行加载 。此外这项针对 Pass 的改进 , 还有助于修复此前一个 bug 报告中提到的错过 register promotion 的问题 。

Open|LLVM Clang 14实现了惊人的性能优化
文章图片

对于不了解编译器内部原理、仅对净收益感兴趣的用户 , Todorovic 也分享了一些基准测试结果 。
在我们的 PostgreSQL 基准测试中 , 我们发现这一 LOAD 补丁的性能增益在 12% 左右 。
此外从 XZ 压缩、C-Ray 到 MrBayes 等各种其它工作负载的性能 , 通常也有几个百分点的性能改进 。
最后 , 这项加载性能改进补丁将和其它内容一道 , 成为明年 3 月正式发布的 LLVM Clang 14.0 稳定版的一部分 。

    推荐阅读