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) | |
---|---|---|---|---|---|
count | 69 | 58 | 76 | 52 | 145 |
mean | 1.5% | 2.2% | -1.0% | -3.3% | 0.2% |
max | 5.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
Transition to valtrees pt1 #97019 (Comparison Link)
Regressions 😿 (primary) | Regressions 😿 (secondary) | Improvements 🎉 (primary) | Improvements 🎉 (secondary) | All 😿 🎉 (primary) | |
---|---|---|---|---|---|
count | 4 | 5 | 0 | 0 | 4 |
mean | 1.0% | 0.1% | N/A | N/A | 1.0% |
max | 1.1% | 0.1% | N/A | N/A | 1.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) | |
---|---|---|---|---|---|
count | 3 | 0 | 0 | 0 | 3 |
mean | 0.4% | N/A | N/A | N/A | 0.4% |
max | 0.6% | N/A | N/A | N/A | 0.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.
Add PID to PGO profile data filename #97110 (Comparison Link)
Regressions 😿 (primary) | Regressions 😿 (secondary) | Improvements 🎉 (primary) | Improvements 🎉 (secondary) | All 😿 🎉 (primary) | |
---|---|---|---|---|---|
count | 0 | 0 | 94 | 54 | 94 |
mean | N/A | N/A | -0.3% | -0.4% | -0.3% |
max | N/A | N/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) | |
---|---|---|---|---|---|
count | 0 | 0 | 2 | 6 | 2 |
mean | N/A | N/A | -0.4% | -4.1% | -0.4% |
max | N/A | N/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) | |
---|---|---|---|---|---|
count | 0 | 0 | 12 | 20 | 12 |
mean | N/A | N/A | -0.4% | -0.6% | -0.4% |
max | N/A | N/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) | |
---|---|---|---|---|---|
count | 0 | 0 | 6 | 7 | 6 |
mean | N/A | N/A | -0.3% | -0.5% | -0.3% |
max | N/A | N/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) | |
---|---|---|---|---|---|
count | 0 | 0 | 5 | 17 | 5 |
mean | N/A | N/A | -0.3% | -0.5% | -0.3% |
max | N/A | N/A | -0.4% | -1.1% | -0.4% |
Add a query for checking whether a function is an intrinsic. #97012 (Comparison Link)
Regressions 😿 (primary) | Regressions 😿 (secondary) | Improvements 🎉 (primary) | Improvements 🎉 (secondary) | All 😿 🎉 (primary) | |
---|---|---|---|---|---|
count | 7 | 9 | 16 | 2 | 23 |
mean | 0.3% | 0.3% | -0.3% | -0.5% | -0.1% |
max | 0.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) | |
---|---|---|---|---|---|
count | 33 | 32 | 65 | 28 | 98 |
mean | 0.8% | 1.6% | -1.0% | -4.4% | -0.4% |
max | 2.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) | |
---|---|---|---|---|---|
count | 97 | 42 | 42 | 34 | 139 |
mean | 1.8% | 3.0% | -0.6% | -0.5% | 1.1% |
max | 5.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) | |
---|---|---|---|---|---|
count | 3 | 18 | 83 | 53 | 86 |
mean | 0.3% | 0.8% | -0.5% | -0.5% | -0.5% |
max | 0.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.