Chrome 85 Is Clang PGO'ing Binaries For Better Performance But Linux Left Out
As we frequently cover, making use of compiler PGO (Profile Guided Optimizations) can mean some sizable performance wins, assuming the generated usage profile is accurate. With the imminent Chrome 85 availability, Google is now making use of PGO with their default LLVM Clang compiler toolchain for squeezing out around 10% better performance.
Going back four years ago is when Google engineers began experimenting with compiler PGO'ing for better browser performance. Back then they were enabling PGO on Windows builds carried out by the Microsoft MSVC compiler. But with LLVM Clang being Chrome's default compiler, with Chrome 85 they are now making use of profile-guided optimizations there. It took some additional time but Google is comfortable enough now with Chrome's PGO abilities.
In making use of PGO with Clang, Google found the performance to offer up to 10% faster page loads, JavaScript benchmarks can be 7~11% faster in some cases, and browser responsiveness 3~7% faster. Google is generating the profiles for feeding into Clang's PGO as part of their nightly build tests for the profiling of hot functions, etc.
Sadly though with Chrome 85 they are only flipping on PGO for the Windows and macOS binaries, not Linux. Hopefully though the Linux enabling won't be far behind considering Clang PGO should already be in good enough shape on Linux systems...
Details on their Clang PGO usage via the Chromium blog where they also mention tab throttling is being introduced in their beta channel.
While sad that Chrome 85 for Linux won't feature PGO optimizations, Chrome 85 does bring AVIF image decode support as quite exciting. There are also a number of CSS additions, Web Bluetooth improvements, and a number of other developer additions.
Going back four years ago is when Google engineers began experimenting with compiler PGO'ing for better browser performance. Back then they were enabling PGO on Windows builds carried out by the Microsoft MSVC compiler. But with LLVM Clang being Chrome's default compiler, with Chrome 85 they are now making use of profile-guided optimizations there. It took some additional time but Google is comfortable enough now with Chrome's PGO abilities.
In making use of PGO with Clang, Google found the performance to offer up to 10% faster page loads, JavaScript benchmarks can be 7~11% faster in some cases, and browser responsiveness 3~7% faster. Google is generating the profiles for feeding into Clang's PGO as part of their nightly build tests for the profiling of hot functions, etc.
Sadly though with Chrome 85 they are only flipping on PGO for the Windows and macOS binaries, not Linux. Hopefully though the Linux enabling won't be far behind considering Clang PGO should already be in good enough shape on Linux systems...
Details on their Clang PGO usage via the Chromium blog where they also mention tab throttling is being introduced in their beta channel.
While sad that Chrome 85 for Linux won't feature PGO optimizations, Chrome 85 does bring AVIF image decode support as quite exciting. There are also a number of CSS additions, Web Bluetooth improvements, and a number of other developer additions.
18 Comments