This week saw a bunch of regressions caused by correctness fixes and in general doing more work in the compiler. These were offset by many improvements (especially around hashing in the compiler) that improved performance by ~2% across a large number of benchmarks. Don't get too excited about the large 45+% wins though, these were only for tiny benchmarks like helloworld. They were caused by a change in Cargo which introduces stripping of debug symbols from Rust release binaries by default, and in turn also improves compilation time for small crates.
Triage done by @kobzol. Revision range: f9c2421a..d6b151fc
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.7% | [0.2%, 1.5%] | 11 |
Regressions ❌ (secondary) | 2.2% | [0.2%, 9.9%] | 26 |
Improvements ✅ (primary) | -3.2% | [-47.5%, -0.2%] | 191 |
Improvements ✅ (secondary) | -7.9% | [-46.5%, -0.1%] | 123 |
All ❌✅ (primary) | -3.0% | [-47.5%, 1.5%] | 202 |
4 Regressions, 4 Improvements, 9 Mixed; 4 of them in rollups 48 artifact comparisons made in total
fix fn/const items implied bounds and wf check (rebase) #120019 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.3% | [0.2%, 0.5%] | 26 |
Regressions ❌ (secondary) | 1.3% | [0.3%, 1.6%] | 9 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.3% | [0.2%, 0.5%] | 26 |
Rollup of 8 pull requests #120187 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.5% | [0.3%, 1.0%] | 8 |
Regressions ❌ (secondary) | 0.9% | [0.3%, 1.8%] | 16 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.5% | [0.3%, 1.0%] | 8 |
deep-vector
benchmark, which was however quite noisy recently, so it was probably just a blip.doc
benchmarks, which was caused simply by adding a bunch of new methods to the standard library.Rollup of 8 pull requests #120196 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 1.3% | [1.3%, 1.3%] | 1 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 1.3% | [1.3%, 1.3%] | 1 |
Rollup of 10 pull requests #120242 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 3.1% | [3.1%, 3.1%] | 1 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | - | - | 0 |
Cache local DefId-keyed queries without hashing #119977 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.7% | [0.7%, 0.7%] | 1 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -1.2% | [-8.2%, -0.2%] | 161 |
Improvements ✅ (secondary) | -1.5% | [-3.7%, -0.3%] | 64 |
All ❌✅ (primary) | -1.2% | [-8.2%, 0.7%] | 162 |
Get rid of the hir_owner query. #120006 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 0.3% | [0.2%, 0.4%] | 3 |
Improvements ✅ (primary) | -1.8% | [-5.5%, -0.3%] | 129 |
Improvements ✅ (secondary) | -2.1% | [-4.4%, -0.4%] | 46 |
All ❌✅ (primary) | -1.8% | [-5.5%, -0.3%] | 129 |
Use UnhashMap for a few more maps #120076 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.3% | [-0.3%, -0.2%] | 13 |
Improvements ✅ (secondary) | -0.3% | [-0.4%, -0.2%] | 4 |
All ❌✅ (primary) | -0.3% | [-0.3%, -0.2%] | 13 |
Always use RevealAll for const eval queries #119821 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.3% | [-0.3%, -0.3%] | 3 |
Improvements ✅ (secondary) | -1.4% | [-1.8%, -1.2%] | 7 |
All ❌✅ (primary) | -0.3% | [-0.3%, -0.3%] | 3 |
Sandwich MIR optimizations between DSE. #119672 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.7% | [0.2%, 1.4%] | 14 |
Regressions ❌ (secondary) | 0.5% | [0.2%, 2.7%] | 14 |
Improvements ✅ (primary) | -1.0% | [-2.2%, -0.2%] | 31 |
Improvements ✅ (secondary) | -0.9% | [-2.2%, -0.2%] | 10 |
All ❌✅ (primary) | -0.4% | [-2.2%, 1.4%] | 45 |
large_assignments: Lint on specific large args passed to functions #116520 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.4% | [0.2%, 0.8%] | 45 |
Regressions ❌ (secondary) | 0.6% | [0.2%, 2.1%] | 8 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | -6.0% | [-6.0%, -6.0%] | 1 |
All ❌✅ (primary) | 0.4% | [0.2%, 0.8%] | 45 |
Update cargo #120036 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.4% | [0.4%, 0.5%] | 2 |
Regressions ❌ (secondary) | 1.4% | [1.4%, 1.4%] | 1 |
Improvements ✅ (primary) | -16.8% | [-47.6%, -0.4%] | 13 |
Improvements ✅ (secondary) | -20.5% | [-46.9%, -2.2%] | 37 |
All ❌✅ (primary) | -14.5% | [-47.6%, 0.5%] | 15 |
--release
binaries by default. This coincidentally also reduces linking time on Linux quite a lot for tiny programs, which caused these improvements on helloworld
-like crates.error on incorrect implied bounds in wfcheck except for Bevy dependents #118553 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.7% | [0.2%, 1.6%] | 30 |
Regressions ❌ (secondary) | 0.4% | [0.2%, 0.6%] | 13 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | -1.0% | [-1.2%, -0.8%] | 6 |
All ❌✅ (primary) | 0.7% | [0.2%, 1.6%] | 30 |
Rollup of 9 pull requests #120112 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 3.2% | [0.3%, 4.1%] | 7 |
Improvements ✅ (primary) | -0.7% | [-0.7%, -0.7%] | 1 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | -0.7% | [-0.7%, -0.7%] | 1 |
use implied bounds compat mode in MIR borrowck #120123 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 0.9% | [0.9%, 1.0%] | 4 |
Improvements ✅ (primary) | -0.7% | [-0.9%, -0.6%] | 6 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | -0.7% | [-0.9%, -0.6%] | 6 |
LLVM 18 x86 data layout update #116672 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.7% | [0.7%, 0.7%] | 1 |
Regressions ❌ (secondary) | 1.0% | [0.3%, 3.3%] | 6 |
Improvements ✅ (primary) | -0.4% | [-0.6%, -0.3%] | 8 |
Improvements ✅ (secondary) | -0.6% | [-1.1%, -0.4%] | 11 |
All ❌✅ (primary) | -0.3% | [-0.6%, 0.7%] | 9 |
Rollup of 6 pull requests #120170 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.9% | [-1.4%, -0.5%] | 2 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | -0.4% | [-1.4%, 0.6%] | 3 |
Pack u128 in the compiler to mitigate new alignment #120080 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.3% | [0.2%, 0.5%] | 12 |
Regressions ❌ (secondary) | 1.2% | [0.4%, 2.1%] | 2 |
Improvements ✅ (primary) | -0.7% | [-0.7%, -0.7%] | 1 |
Improvements ✅ (secondary) | -0.6% | [-0.7%, -0.3%] | 5 |
All ❌✅ (primary) | 0.3% | [-0.7%, 0.5%] | 13 |