2023-06-21 Triage Log

Fairly positive week with very few regressions and some decent (albeit incremental) improvements. The most widespread gains came from some standard library improvements which are not a particularly common cause of large improvements in compiler performance. Overall a large chunk of the perf test suite showed an average of 0.6% improvement.

Triage done by @rylev. Revision range: 4bd4e2e..b9d608c

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.4%[0.5%, 3.6%]16
Regressions ❌
(secondary)
1.0%[0.2%, 3.5%]29
Improvements ✅
(primary)
-0.8%[-7.8%, -0.2%]157
Improvements ✅
(secondary)
-2.9%[-48.3%, -0.3%]84
All ❌✅ (primary)-0.6%[-7.8%, 3.6%]173

3 Regressions, 7 Improvements, 4 Mixed; 3 of them in rollups 51 artifact comparisons made in total

Regressions

Rollup of 7 pull requests #112625 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.4%]4
Regressions ❌
(secondary)
0.2%[0.2%, 0.2%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.3%[0.2%, 0.4%]4
  • Seems like this was a blip in the bitmaps test which corrected itself in the next run.

Add AliasKind::Weak for type aliases. #108860 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.5%]8
Regressions ❌
(secondary)
0.4%[0.2%, 0.8%]7
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.3%[0.2%, 0.5%]8
  • Poked author and reviewer for thoughts on small regressions

CI: merge mingw test CI jobs #112645 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.8%[0.7%, 0.8%]3
Regressions ❌
(secondary)
0.7%[0.6%, 0.7%]2
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.8%[0.7%, 0.8%]3
  • Noise as Linux was impacted

Improvements

Introduce a minimum CGU size in non-incremental builds. #112448 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-2.1%[-7.8%, -0.3%]19
Improvements ✅
(secondary)
-8.5%[-45.9%, -0.4%]22
All ❌✅ (primary)-2.1%[-7.8%, -0.3%]19

Don't drain-on-drop in DrainFilter impls of various collections. #104455 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.5%[0.2%, 1.2%]3
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.5%[-1.8%, -0.1%]35
Improvements ✅
(secondary)
-0.5%[-1.1%, -0.2%]14
All ❌✅ (primary)-0.4%[-1.8%, 1.2%]38

optimize slice::Iter::fold #106343 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.7%[0.4%, 1.1%]5
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.2%[-0.4%, -0.2%]87
Improvements ✅
(secondary)
-0.3%[-1.2%, -0.1%]24
All ❌✅ (primary)-0.2%[-0.4%, 1.1%]92

Rollup of 7 pull requests #112716 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.4%[-0.4%, -0.4%]2
Improvements ✅
(secondary)
-0.4%[-0.4%, -0.2%]4
All ❌✅ (primary)-0.4%[-0.4%, -0.4%]2

Rollup of 5 pull requests #112755 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.8%[-1.8%, -0.2%]16
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-0.8%[-1.8%, -0.2%]16

Rollup of 6 pull requests #112774 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.8%[-0.8%, -0.7%]3
Improvements ✅
(secondary)
-0.7%[-0.7%, -0.7%]2
All ❌✅ (primary)-0.8%[-0.8%, -0.7%]3

new solver proof tree generation #112351 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.5%[-0.8%, -0.2%]9
Improvements ✅
(secondary)
-1.2%[-1.6%, -0.5%]8
All ❌✅ (primary)-0.5%[-0.8%, -0.2%]9

Mixed

Add support for targets without unwinding in mir-opt, and improve --bless for it #112418 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.3%]3
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.3%[-1.3%, -1.3%]1
All ❌✅ (primary)0.3%[0.2%, 0.3%]3
  • Noise returning to a steady state

Ignore the always part of #[inline(always)] in MIR inlining #112294 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.7%[1.2%, 2.5%]8
Regressions ❌
(secondary)
0.6%[0.2%, 1.4%]7
Improvements ✅
(primary)
-0.4%[-3.0%, -0.2%]61
Improvements ✅
(secondary)
-0.4%[-1.0%, -0.2%]18
All ❌✅ (primary)-0.1%[-3.0%, 2.5%]69
  • From the author: “There are some notable regressions, and I think we might be able to claw those back by turning #[inline(always)] into a stronger hint. But I think this PR stands decently on its own as a tidy simplification.”

Remove box_free lang item #100036 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.2%[1.0%, 1.7%]4
Regressions ❌
(secondary)
1.7%[1.1%, 3.4%]5
Improvements ✅
(primary)
-0.6%[-0.6%, -0.6%]2
Improvements ✅
(secondary)
-2.5%[-4.4%, -1.4%]4
All ❌✅ (primary)0.6%[-0.6%, 1.7%]6
  • Waiting on the author and reviewer to give their thoughts.

make mir dataflow graphviz dumps opt-in #112617 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.6%[0.6%, 0.7%]3
Regressions ❌
(secondary)
0.6%[0.6%, 0.6%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.5%[-0.6%, -0.4%]6
All ❌✅ (primary)0.6%[0.6%, 0.7%]3
  • Regressions are noise