2023-02-21 Triage Log

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)meanrangecount
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

Regressions

Rollup of 10 pull requests #108052 (Comparison Link)

(instructions:u)meanrangecount
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)meanrangecount
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)meanrangecount
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.

Improvements

Avoid accessing HIR when it can be avoided #108006 (Comparison Link)

(instructions:u)meanrangecount
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)meanrangecount
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)meanrangecount
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

Mixed

Enable CopyProp #107449 (Comparison Link)

(instructions:u)meanrangecount
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)meanrangecount
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)meanrangecount
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.