Skip to content

docs(all): mention DOTNET_TieredPGO in help text - #5139

Merged
MangelMaxime merged 1 commit into
mainfrom
document-DOTNET_TieredPGO
Oct 22, 2026
Merged

MangelMaxime merged 1 commit into
mainfrom
document-DOTNET_TieredPGO

Conversation

@MangelMaxime

@MangelMaxime MangelMaxime commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Add documentation about DOTNET_TieredPGOported from #5135.

Based on experimentation, we can't make it the default because the improvement only works in single build mode and make the watch mode worth.

Watch is the daily driver so we don't want to make it worse.

Good candidates to set this env variable is CI or if you don't rely on watch mode (AI are able to use the watch mode for faster feedback loop).

Numbers

Numbers, Fable phase on tests/Js/Main (75 files), medians of interleaved runs:

Single build, --noCache:

Cores PGO on PGO off Change
32 2.2 s 1.8 s -18%
4 4.7 s 4.2 s -11%

Watch mode, same project, 8 edits per scenario:

Scenario PGO on PGO off Change
First compile of the session 2.20 s 1.75 s -19%
Body edit (21 dependents re-checked) 428 ms 508 ms +19%
Signature edit 865 ms 950 ms +10%

The first compile saves about 400 ms and each rebuild then costs 70 to 100 ms more, so a watch session is net slower after four to six edits.

It also depends on the project. From the measurements in #5135 (compile phase, median of 5, PGO off vs on):

Project PGO on PGO off Change
Fable JS test suite 3.83 s 3.19 s -17%
Fable Python test suite 3.16 s 2.62 s -17%
Sutil 4.88 s 4.63 s -5%
Ionide 3.02 s 3.06 s +1%
Fantomas tools 4.47 s 4.85 s +9%

Note

Happy to make it the default in the future, if we guarantee that it is always a win. Another reason, to make it the default could also be if the watch compilation is so fast that 10-20% worse has an almost negligible impact.

@MangelMaxime MangelMaxime changed the title docs(cli): mention DOTNET_TieredPGO in help text docs(all): mention DOTNET_TieredPGO in help text Oct 22, 2026
@MangelMaxime
MangelMaxime merged commit 7a4e539 into main Oct 22, 2026
55 of 57 checks passed
@MangelMaxime
MangelMaxime deleted the document-DOTNET_TieredPGO branch October 22, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant