Evaluate Profile-Guided Optimization (PGO) and LLVM BOLT
zamazan4ik opened this issue · comments
Hi!
Recently I checked Profile-Guided Optimization (PGO) improvements on multiple projects. The results are here. LLVM-related results are here. According to the tests, PGO usually helps a lot with the compiler and compiler-like workloads (like static analysis). That's why I think trying to optimize MIRAI with PGO can be a good idea.
I can suggest the following action points:
- Perform PGO benchmarks on MIRAI. And if it shows improvements - add a note about possible improvements in MIRAI's performance with PGO.
- Providing an easier way (e.g. a build option) to build scripts with PGO can be useful for the end-users and maintainers since they will be able to optimize MIRAI according to their own workloads.
- Optimize pre-built MIRAI binaries with PGO.
Maybe testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too but I recommend starting from the usual PGO (yeah, I know that BOLT originally is developed by Facebook ;) ).
For the Rust projects, I suggest PGO optimizing with cargo-pgo (it supports LLVM BOLT too).