I did a lot of Profile-Guided Optimization (PGO) benchmarks recently on different kinds of software (including many compilers and compiler-like projects) - all currently available results are located at https://github.com/zamazan4ik/awesome-pgo . According to the tests, PGO usually helps a lot for compiler-like workloads. That's why I think testing PGO would be a good idea for the Noir ecosystem.
I can suggest to do the following things:
Evaluate PGO on Noir projects
If it benefits Noir - add a note to the Noir documentation about building with PGO. In this case, users and maintainers who build their own Noir packages will be aware of PGO as an additional way to optimize the project
Optimize provided by Noir team binaries on the CI (like it's already done for other projects like Rustc), if any
After that, I suggest trying to apply LLVM BOLT as an additional post-PGO step. Rustc already does it on some platforms
For the Rust projects, I suggest PGO optimizing with cargo-pgo.
Happy Case
In the happiest case, all Noir users will get PGO-optimized binaries by default.
Problem
I did a lot of Profile-Guided Optimization (PGO) benchmarks recently on different kinds of software (including many compilers and compiler-like projects) - all currently available results are located at https://github.com/zamazan4ik/awesome-pgo . According to the tests, PGO usually helps a lot for compiler-like workloads. That's why I think testing PGO would be a good idea for the Noir ecosystem.
I can suggest to do the following things:
For the Rust projects, I suggest PGO optimizing with cargo-pgo.
Happy Case
In the happiest case, all Noir users will get PGO-optimized binaries by default.
Alternatives Considered
Don't test PGO.
Additional Context
No response
Would you like to submit a PR for this Issue?
Maybe
Support Needs
No response