LLVM Clang 14實現了驚人的性能優化
多年以來,LLVM / Clang 的性能已經迎來了相當大的提升。 此外在 x86_64 和 AArch64 應用上,它也能夠與 GCC 編譯器並駕齊驅。 即便如此,激烈的競爭並未就此止步。 由最近一次提交的內容可知,即將於 2022 年初發佈的 LLVM / Clang 14.0,將迎來更多性能方面的優化。
早些時候,LLVM 開發者 Djordje Todorovic 為 LLVM 的 Loop Invariant Code Motion(LICM)Pass 引入了相關改進,以便能夠在沒有 STORE 的情況下提升 LOAD 。
補丁描述稱,在 LICM 中開展載入 / 儲存更新時,若不能證明下沉存儲是安全的,LLVM 就不會提升載入,即使我們能夠證明它可被取消引用並移出迴圈。
該補丁通過在迴圈中插入適當的 PHI,並將其移動到迴圈前置器中以實現負載改善,而 STORE 將在迴圈中保持原樣。
通過這麼做,我們可避免在每次反覆運算中、於記憶體位置進行載入。 此外這項針對Pass的改進,還有助於修復此前一個bug報告中提到的錯過register promotion的問題。
對於不瞭解編譯器內部原理、僅對凈收益感興趣的使用者,Todorovic 也分享了一些基準測試結果。
在我們的 PostgreSQL 基準測試中,我們發現這一 LOAD 補丁的性能增益在 12% 左右。
此外從 XZ 壓縮、C-Ray 到 MrBayes 等各種其它工作負載的性能,通常也有幾個百分點的性能改進。
最後,這項載入性能改進補丁將和其它內容一道,成為明年 3 月正式發佈的 LLVM Clang 14.0 穩定版的一部分。