A pretty busy week for performance, with quite a few PRs landing with significant improvements to specific benchmarks. Overall the week was positive, with many benchmarks improving at least a little. No significant changes in memory usage this week.
Triage done by @simulacrum. Revision range: edab34ab2abbafc16a78daedf71dbacd2eb0b7bf..abace0a1f17986d89aedf610819deab2b4afee56
Summary:
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.4% | 0.5% | 6 |
Regressions πΏ (secondary) | 2.9% | 14.7% | 37 |
Improvements π (primary) | -1.9% | -19.4% | 89 |
Improvements π (secondary) | -8.4% | -91.4% | 38 |
All πΏπ (primary) | -1.8% | -19.4% | 95 |
5 Regressions, 6 Improvements, 3 Mixed; 1 of them in rollups 54 artifact comparisons made in total
BTreeMap: Support custom allocators (v1.5) #98103 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 1.7% | 3.0% | 2 |
Regressions πΏ (secondary) | 1.6% | 2.1% | 6 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | 1.7% | 3.0% | 2 |
This regression is largely fixed by #98178.
Improve the tuple and unit trait docs #97842 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.4% | 0.6% | 2 |
Regressions πΏ (secondary) | 0.3% | 0.4% | 3 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | 0.4% | 0.6% | 2 |
Slight regressions to small number of doc benchmarks, likely due to slightly more work during generation (std's docs changed).
Fix SourceScope
for if let
bindings. #97931 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.4% | 0.5% | 4 |
Regressions πΏ (secondary) | 0.3% | 0.3% | 1 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | 0.4% | 0.5% | 4 |
Regression is pretty small and only one primary benchmark is affected (regex), and only incremental scenarios there. Likely not enough to worry about.
Obligation forest tweaks #97674 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.8% | 0.9% | 2 |
Regressions πΏ (secondary) | 1.8% | 2.4% | 7 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | -0.3% | -0.3% | 1 |
All πΏπ (primary) | 0.8% | 0.9% | 2 |
keccak is the primary affected benchmark, and is known to be very sensitive to changes to the obligation forest code. See some analysis in this comment following up on the results from the merge perf run.
Rollup of 4 pull requests #98307 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.3% | 0.3% | 2 |
Regressions πΏ (secondary) | 0.7% | 0.8% | 6 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | -0.4% | -0.4% | 1 |
All πΏπ (primary) | 0.3% | 0.3% | 2 |
Cause of regressions is unclear, but they‘re minor enough that it’s not worth the hassle of investigating a rollup.
ctfe: limit hashing of big const allocations when interning #98097 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | -6.6% | -6.6% | 3 |
All πΏπ (primary) | N/A | N/A | 0 |
Batch proc_macro RPC for TokenStream iteration and combination operations #98186 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -1.0% | -4.0% | 26 |
Improvements π (secondary) | -12.1% | -37.5% | 15 |
All πΏπ (primary) | -1.0% | -4.0% | 26 |
Fix MissingDoc
quadratic behaviour #98153 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -0.3% | -0.4% | 14 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | -0.3% | -0.4% | 14 |
Make some lints incremental. #98238 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -0.4% | -1.7% | 54 |
Improvements π (secondary) | -7.4% | -90.8% | 17 |
All πΏπ (primary) | -0.4% | -1.7% | 54 |
[RFC 2011] Expand expressions where possible #98148 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -0.3% | -0.4% | 2 |
Improvements π (secondary) | -0.7% | -0.8% | 6 |
All πΏπ (primary) | -0.3% | -0.4% | 2 |
Compile unicode-normalization
faster #97936 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | 1.0% | 1.0% | 1 |
Improvements π (primary) | -14.2% | -19.4% | 6 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | -14.2% | -19.4% | 6 |
A solid improvement, though just to the one benchmark; coercions change in the regressions section is likely just noise, not an actual meaningful delta.
Use valtrees as the type-system representation for constant values #96591 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.4% | 0.6% | 54 |
Regressions πΏ (secondary) | 3.1% | 14.3% | 29 |
Improvements π (primary) | -3.0% | -5.9% | 10 |
Improvements π (secondary) | -1.1% | -1.6% | 7 |
All πΏπ (primary) | -0.2% | -5.9% | 64 |
Large change (over 2000 lines changed) that is a first step for further work on constant evaluation in the compiler. Overall this is still an improvement, and regressions are primarily on stress tests. See this comment for some further context.
Split up Definitions
and ResolverAstLowering
. #98106 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | 0.4% | 0.5% | 9 |
Improvements π (primary) | -0.3% | -0.6% | 39 |
Improvements π (secondary) | -0.3% | -0.6% | 5 |
All πΏπ (primary) | -0.3% | -0.6% | 39 |
btree: avoid forcing the allocator to be a reference #98178 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.4% | 0.4% | 1 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -2.0% | -2.0% | 1 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | -0.8% | -2.0% | 2 |