A fairly quiet week for performance, with the exception of the LLVM 15 upgrade which resulted in many changes, mostly to the positive.
Triage done by @simulacrum. Revision range: cc4dd6fc9f1a5c798df269933c7e442b79661a86..14a459bf37bc19476d43e0045d078121c12d3fef
Summary:
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | 0.7% | 7.7% | 62 |
Regressions ❌ (secondary) | 1.3% | 5.0% | 51 |
Improvements ✅ (primary) | -1.8% | -6.9% | 93 |
Improvements ✅ (secondary) | -2.4% | -22.0% | 128 |
All ❌✅ (primary) | -0.8% | 7.7% | 155 |
2 Regressions, 4 Improvements, 2 Mixed; 1 of them in rollups 38 artifact comparisons made in total
consider unnormalized types for implied bounds #99217 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | 0.7% | 1.9% | 37 |
Regressions ❌ (secondary) | 2.0% | 2.4% | 11 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.7% | 1.9% | 37 |
This regression is caused by a soundness fix. #99725 recovered a small amount of the lost performance here.
rustdoc: Merge source code pages HTML elements together #100429 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | 0.6% | 1.4% | 12 |
Regressions ❌ (secondary) | 1.8% | 3.1% | 8 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.6% | 1.4% | 12 |
The regressions are limited to doc benchmarks and the underlying change reduces the number of DOM elements generated by ~30% across a few samples (see PR description for details). Those sizes aren‘t measured by perf.rust-lang.org today, so there’s no reflection of that here, but the size improvement is a welcome one.
Reoptimize layout array #99174 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.4% | -0.8% | 10 |
Improvements ✅ (secondary) | -0.8% | -1.2% | 5 |
All ❌✅ (primary) | -0.4% | -0.8% | 10 |
Remove manual implementations of HashStable for hir::Expr and hir::Ty. #100237 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.2% | -0.2% | 3 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | -0.2% | -0.2% | 3 |
Possibly spurious, but leaving in the report -- bitmaps-3.1.0 check typically does not see this much impact on a run to run basis so it's probably at least partially real.
Shrink ast::Attribute
. #100441 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | 0.6% | 0.6% | 1 |
Regressions ❌ (secondary) | 0.2% | 0.2% | 1 |
Improvements ✅ (primary) | -0.6% | -1.4% | 22 |
Improvements ✅ (secondary) | -1.0% | -1.5% | 23 |
All ❌✅ (primary) | -0.5% | -1.4% | 23 |
Mostly an improvement in doc benchmarks, though a few check benchmarks improved as well. An excellent win for memory usage, with up to 5.8% wins on helloworld.
passes: load defined_lib_features
query less #100328 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 0.8% | 1.5% | 3 |
Improvements ✅ (primary) | -0.4% | -0.4% | 1 |
Improvements ✅ (secondary) | -1.2% | -1.8% | 8 |
All ❌✅ (primary) | -0.4% | -0.4% | 1 |
The regressions here appear to be spurious, with performance recovering on the next commit. Otherwise, this is a good improvement.
Rollup of 13 pull requests #100426 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | 0.3% | 0.4% | 4 |
Regressions ❌ (secondary) | 0.5% | 0.7% | 5 |
Improvements ✅ (primary) | -0.9% | -0.9% | 1 |
Improvements ✅ (secondary) | -1.8% | -1.8% | 1 |
All ❌✅ (primary) | 0.0% | -0.9% | 5 |
Small-ish regression narrowed down to #99337, some active work in this area of rustdoc is likely to help here soon.
Update to LLVM 15 #99464 (Comparison Link)
(instructions:u) | mean | max | count |
---|---|---|---|
Regressions ❌ (primary) | 0.8% | 7.5% | 40 |
Regressions ❌ (secondary) | 1.2% | 4.4% | 29 |
Improvements ✅ (primary) | -1.5% | -6.0% | 100 |
Improvements ✅ (secondary) | -2.6% | -21.6% | 94 |
All ❌✅ (primary) | -0.9% | 7.5% | 140 |
Overall the benefits here outweigh the negatives, with a number of good improvements. LLVM upgrades are something we're going to keep rolling forward on regardless. For wall time metrics the improvement here looks particularly nice, with bootstrap times improved by ~4%, shaving 30 seconds of the total time measured by perf.