Evaluate using Profile-Guided Optimization (PGO) and Post Link Optimization (PLO) for the Inko tooling ecosystem #651
Labels
compiler
Changes related to the compiler
feature
New things to add to Inko, such as a new standard library module
performance
Changes related to improving performance
runtime
Changes related to the Rust-based runtime library
Description
Recently I did many Profile-Guided Optimization (PGO) benchmarks on multiple projects (including static analysis tools and compilers like Rustc, Clang, Clangd, Clang Tidy, and many others) - the results are available here. I think it's worth trying to apply PGO to the Inko tooling ecosystem like the compiler (and maybe something else like code formatters, LSP server, etc.).
I can suggest the following things to do:
Here are some examples of how PGO is already integrated into other projects' build scripts:
configure
scriptSome 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). 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 with cargo-pgo.
Related work
The issue is not the same as #650 . In #650 I propose to add a possibility to compile Inko programs with PGO. In this issue, I suggest compiling Inko tools like the compiler with PGO and PLO.
The text was updated successfully, but these errors were encountered: