Hi!
Recently I did many Profile-Guided Optimization (PGO) benchmarks on multiple projects (including static analysis tools and compilers like CPython, Rustc, Clang, Clangd, Clang Tidy, and many others) - the results are available here. Trying to enable PGO to the Numbat tooling could be a good thing to try.
I can suggest the following things to do:
- Evaluate PGO's applicability to Numbat.
- If PGO helps to achieve better performance - add a note to Numbat's documentation about that. In this case, users and maintainers will be aware of another optimization opportunity for Numbat tooling.
- Provide PGO integration into the build scripts. It can help users and maintainers easily apply PGO on Numbat tools for their workloads.
- Optimize prebuilt binaries with PGO.
Here are some examples of how PGO is already integrated into other projects' build scripts:
Some PGO documentation examples in various projects:
After PGO, I can suggest evaluating LLVM BOLT as an additional optimization step after PGO - Post Link Optimization (PLO). This optimization technique is already integrated into the Clang, CPython, and Rustc build scripts. But I suggest starting with PGO - it's a more stable optimization than PLO in the general case.
For the Rust projects, I recommend starting PGO integration with cargo-pgo.
Hi!
Recently I did many Profile-Guided Optimization (PGO) benchmarks on multiple projects (including static analysis tools and compilers like CPython, Rustc, Clang, Clangd, Clang Tidy, and many others) - the results are available here. Trying to enable PGO to the Numbat tooling could be a good thing to try.
I can suggest the following things to do:
Here are some examples of how PGO is already integrated into other projects' build scripts:
configurescriptSome PGO documentation examples in various projects:
After PGO, I can suggest evaluating LLVM BOLT as an additional optimization step after PGO - Post Link Optimization (PLO). This optimization technique is already integrated into the Clang, CPython, and Rustc build scripts. But I suggest starting with PGO - it's a more stable optimization than PLO in the general case.
For the Rust projects, I recommend starting PGO integration with cargo-pgo.