Description
In the .NET area, we have already made great strides in the PGO area.
The Rust compiler (rustc) has been optimized with BOLT since last week (see rust-lang/rust#94381).
BOLT originally comes from a Facebook Incubator project, which will then be adopted into LLVM at some point.
Apparently they talk about ~2% performance optimization when using that.
Here, of course, we can think about whether this makes much difference in JIT scenarios, since here it basically only optimizes the static parts (e.g. apphost, corerun, ...).
However, I see potential here especially in the NativeAOT area.
The only thing required would be PGO data like perf
outputs.
The difference to other optimizers is that this is a post optimizer, so this tries to optimize the binaries.
One limitation I could find so far is that it only supports ELF binaries (at least what I could find out).
Would be very interested if you guys see any thoughts, challenges or obstacles here to optimize the .NET binaries with this.
If nothing stands in the way of this I would sit down to a PoC on how we could use this in runtime.
/type:feature
/area:PGO