facebookexperimental / MIRAI

Rust mid-level IR Abstract Interpreter

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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).