Repository navigation
Build: Switch from frontend-PGO to IR-PGO - #23870
Conversation
DMD perf check
Breakdown — compile hello.d
Breakdown — compile Phobos-178.3 M instructions: frontend -165.3 M (-4.54%), codegen -12.9 M (-0.90%)
All measurements
2c9ff5f vs merge-base 278dce2 · about these metrics |
I.e., from LDC's own AST-based implementation (-fprofile-instr-…) to LLVM-builtin IR-based PGO (-fprofile-…). With the downside of having to enable optimizations for the instrumented compiler (=> longer build time).
|
Oh wow, pretty significant change in metrics! Note that due to optimizing the instrumented compiler, the runtime of the FYI @abulgit @0xEAB (testing this on Windows would be nice :]) |
|
Nice numbers! I'd re-run the perf workflow once or may be twice, just to make sure it's as deterministic as it was with the frontend profile. Otherwise pretty good result! |
|
Okay, I've re-run it 2 more times - and the 3 latest runs are really extremely stable (as can be seen in the edit history of the bot comment), only |
Still failing on Windows.
|
UpdateI’ve been able to extract an actual error message from the mosaic: |
0xEAB
left a comment
There was a problem hiding this comment.
If the primary advantage of this change is to make it work on Windows, too, I’d prefer if that would be resolved first.
|
The test that currently uses |
|
No, the primary aim is to make the Your newest Windows fails are interesting, because they are 100% unrelated So at least you don't get a failure for the instrumented-compiler build anymore (#23858 (comment)). Edit: So this is progress. |
Done. 2nd re-run is still active, but the first one suggests that the performance changes are quite deterministic. |
|
The On Mac, an extra |
|
The Benchmark Dashboard is Live now at - https://perf.dlang.org |

I.e., from LDC's own AST-based implementation (
-fprofile-instr-…) to LLVM-builtin IR-based PGO (-fprofile-…). With the downside of having to enable optimizations for the instrumented compiler (=> longer build time).