Overall a fairly positive week, with few noise-related regressions or improvements and many benchmarks showing significant improvements. The one large regression is limited to documentation builds and has at least a partial fix already planned.
Other wins this week include an average improvement of around 1% in maximum memory usage of optimized builds, and a 2% average reduction in compiled binary sizes. These are fairly significant wins for these metrics.
Triage done by @simulacrum. Revision range: 9bb6e60..3fee48c1
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 9.0% | [0.3%, 79.8%] | 10 |
Regressions ❌ (secondary) | 0.9% | [0.4%, 2.1%] | 14 |
Improvements ✅ (primary) | -1.7% | [-5.0%, -0.2%] | 128 |
Improvements ✅ (secondary) | -1.6% | [-5.2%, -0.2%] | 61 |
All ❌✅ (primary) | -0.9% | [-5.0%, 79.8%] | 138 |
3 Regressions, 3 Improvements, 3 Mixed; 2 of them in rollups 45 artifact comparisons made in total
Rollup of 10 pull requests #108052 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 9.5% | [0.3%, 80.7%] | 10 |
Regressions ❌ (secondary) | 2.7% | [2.7%, 2.7%] | 1 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 9.5% | [0.3%, 80.7%] | 10 |
This regression is limited to doc builds and is likely caused by the tooltip expansion in “rustdoc: add more tooltips to intra-doc links #108025”. An initial reduction in overhead is proposed in #108098.
use semantic equality for const param type equality assertion #107940 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.3% | [0.2%, 0.5%] | 5 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.3% | [0.2%, 0.5%] | 5 |
Relatively small significance threshold in a single benchmark -- likely a real regression, but not worth intense scrutiny.
give the resolver access to TyCtxt #105462 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.4% | [0.2%, 1.4%] | 94 |
Regressions ❌ (secondary) | 0.6% | [0.2%, 2.6%] | 25 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.4% | [0.2%, 1.4%] | 94 |
Regressions are being pursued in follow-up PRs, this architectural change benefits incremental compilation and in general is on the right path even if in the short term we are seeing some regressions due to increased locking.
Avoid accessing HIR when it can be avoided #108006 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.4% | [-0.4%, -0.4%] | 3 |
Improvements ✅ (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
All ❌✅ (primary) | -0.4% | [-0.4%, -0.4%] | 3 |
Rollup of 6 pull requests #108211 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.2% | [-0.3%, -0.2%] | 3 |
Improvements ✅ (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All ❌✅ (primary) | -0.2% | [-0.3%, -0.2%] | 3 |
Use ThinVec
more in the AST #104754 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.5% | [0.4%, 0.6%] | 9 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.5% | [-1.5%, -0.2%] | 80 |
Improvements ✅ (secondary) | -0.8% | [-3.3%, -0.2%] | 44 |
All ❌✅ (primary) | -0.4% | [-1.5%, 0.6%] | 89 |
Enable CopyProp #107449 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.3% | [0.3%, 0.4%] | 2 |
Regressions ❌ (secondary) | 1.2% | [0.1%, 2.7%] | 5 |
Improvements ✅ (primary) | -1.4% | [-4.4%, -0.3%] | 151 |
Improvements ✅ (secondary) | -1.7% | [-5.5%, -0.3%] | 57 |
All ❌✅ (primary) | -1.4% | [-4.4%, 0.4%] | 153 |
The improvements here massively outweigh the tiny number of regressions.
(https://github.com/rust-lang/rust/pull/107449#issuecomment-1432772163)
Factor query arena allocation out from query caches #107833 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 1.0% | [0.2%, 1.9%] | 4 |
Improvements ✅ (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
Improvements ✅ (secondary) | -0.3% | [-0.4%, -0.2%] | 3 |
All ❌✅ (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
Enable instcombine for mutable reborrows #105274 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.6% | [0.2%, 3.1%] | 16 |
Regressions ❌ (secondary) | 0.4% | [0.2%, 0.5%] | 11 |
Improvements ✅ (primary) | -0.7% | [-2.3%, -0.3%] | 32 |
Improvements ✅ (secondary) | -1.0% | [-1.7%, -0.3%] | 17 |
All ❌✅ (primary) | -0.3% | [-2.3%, 3.1%] | 48 |
This also provides significant wins for binary size, up to 8.8% in stm32f4.