GCC 11 PGO With The AMD Ryzen 9 5950X For Faster Performance
It's been a while since last running benchmarks evaluating the performance of GCC's profile guided optimizations (PGO) for helping to optimize the performance. But stemming from the discussions around PGO'ing the Linux kernel (though that effort is stalled for now), several Phoronix readers inquired about seeing some fresh PGO figures with GCC 11. So here are such benchmarks of GCC 11 with the upcoming Ubuntu 21.10 running on an AMD Ryzen 9 5950X desktop.
Using the latest Ubuntu 21.10 daily image at the time with its GCC 11.2 compiler and other updated toolchain components, I ran some fresh benchmarks looking at the impact of PGO.
The benchmarks were first carried out without using any PGO / profile-based optimizations. After that all of the open-source C/C++ benchmarks were re-built with the necessary support to enable profile collection, all of the benchmarks repeated just to generate the necessary profile data without making use of the benchmark results, and then all of the benchmarks each rebuilt against their respective profile data. This is a rather best case scenario for PGO performance evaluation with the profiles matching the specific workloads / code paths being tested by the benchmark. These tests are mainly being put out for reference and curiosity purposes for helping those decide whether it's worthwhile looking closer at profile guided optimizations for your particular workloads or performance critical code-bases. All other CFLAGS/CXXFLAGS were maintained the same throughout testing besides just adjusting the PGO options for the given build.