2022-05-24 Triage Log

Overall a positive week for non-incremental performance (roughly 0.5% faster), with >1% regressions on incremental benchmarks, primarily due to #95563, which will hopefully be investigated in the coming weeks.

Triage done by @simulacrum. Revision range: 7355d971a954ed63293e4191f6677f60c1bc07d9..43d9f3859e0204e764161ee085a360274b5f3e9a

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count69587652145
mean1.5%2.2%-1.0%-3.3%0.2%
max5.1%7.3%-2.9%-36.9%5.1%

2 Regressions, 5 Improvements, 4 Mixed; 0 of them in rollups 57 artifact comparisons made in total

Regressions

Transition to valtrees pt1 #97019 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count45004
mean1.0%0.1%N/AN/A1.0%
max1.1%0.1%N/AN/A1.1%

@oli-obk has suggested applying some targeted inlining as a likely resolution to the regressions; work to follow up needs to be done. It seems like the regression is likely to be resolved (or at least effort applied to do so).

Make write/print macros eagerly drop temporaries #96455 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count30003
mean0.4%N/AN/AN/A0.4%
max0.6%N/AN/AN/A0.6%

Change is relatively minor and limited to just a single benchmark, so marking the regression as triaged; further investigation is not warranted at this time.

Improvements

Add PID to PGO profile data filename #97110 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00945494
meanN/AN/A-0.3%-0.4%-0.3%
maxN/AN/A-0.5%-1.2%-0.5%

An expected improvement in our PGO scripts, with a small magnitude effect across many benchmarks.

--remap-path-prefix: Fix duplicated path components in debuginfo #96867 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00262
meanN/AN/A-0.4%-4.1%-0.4%
maxN/AN/A-0.4%-4.7%-0.4%

Improvements likely to be primarily driven by reducing the amount of codegen due to simpler/smaller debuginfo.

rustdoc: Reduce clean::Type size #93963 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00122012
meanN/AN/A-0.4%-0.6%-0.4%
maxN/AN/A-0.8%-0.8%-0.8%

rustc_parse: Move AST -> TokenStream conversion logic to rustc_ast #97251 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00676
meanN/AN/A-0.3%-0.5%-0.3%
maxN/AN/A-0.4%-0.6%-0.4%

Refactor call terminator to always include destination place #96098 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count005175
meanN/AN/A-0.3%-0.5%-0.3%
maxN/AN/A-0.4%-1.1%-0.4%

Mixed

Add a query for checking whether a function is an intrinsic. #97012 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count7916223
mean0.3%0.3%-0.3%-0.5%-0.1%
max0.3%0.4%-0.5%-0.5%-0.5%

Mixed results, but overall looks to be pretty neutral. The preparation for future maintainability outweighs the possible small cost to keeping this change. Regression was already marked as triaged by @oli-obk (thank you!).

Cache more queries on disk #95418 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count3332652898
mean0.8%1.6%-1.0%-4.4%-0.4%
max2.1%4.0%-3.6%-33.0%-3.6%

This is overall an improvement, with regressions primarily limited to secondary benchmarks. Mixed results are fairly expected from a change like this; marking the regression as triaged. @cjgillot (PR author) also posted a good summary:

This PR caches many more queries' results on disk. The queries have been chosen to be: (1) outputs of typechecking, and (2) parts of metadata. This caching allows for wide and large compile time savings, up to 36%. The tradeoff is a compile time increase (4%) when these caches cannot be usefully used, and a increased on-disk size around 30%.

Move the extended lifetime resolution into typeck context #95563 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count97424234139
mean1.8%3.0%-0.6%-0.5%1.1%
max5.8%8.9%-1.9%-1.4%5.8%

Looks like a fairly large regression across a number of benchmarks, though limited to the incremental scenarios. Non-incremental benchmarks show an improvement (hence the mixed results). Left a comment on the PR asking for clarification and further investigation.

Update rustc PGO benchmark list #97120 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count318835386
mean0.3%0.8%-0.5%-0.5%-0.5%
max0.4%1.8%-1.3%-1.1%-1.3%

Overall an improvement, some slight regressions are expected from a larger change like this which bumps PGO inputs.