2023-11-14 Triage Log

A week dominated by one particular perf improvement that lead to huge performance gains - an avg of 5% improvement across 121 test cases! The perf improvement comes from adding an #[inline] hint to the output from #[derive(Debug)] which presumably allows the compiler to more easily do deadcode elimination reducing the binary size and the amount of code that actually needs to be code-gened.

Triage done by @rylev. Revision range: 7b97a5ca..173b6e68

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.2%, 0.9%]10
Regressions ❌
(secondary)
1.9%[0.2%, 3.6%]12
Improvements ✅
(primary)
-5.6%[-49.2%, -0.1%]111
Improvements ✅
(secondary)
-3.5%[-25.0%, -0.2%]155
All ❌✅ (primary)-5.1%[-49.2%, 0.9%]121

2 Regressions, 2 Improvements, 3 Mixed; 3 of them in rollups 55 artifact comparisons made in total

Regressions

Bump libc dependency #117617 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
8.3%[1.1%, 19.0%]9
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)8.3%[1.1%, 19.0%]9
  • A curious perf infra glitch - the regression returned to normal after a few runs.

Rollup of 6 pull requests #117736 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.2%, 0.5%]5
Regressions ❌
(secondary)
0.6%[0.6%, 0.6%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.4%[0.2%, 0.5%]5
  • The only PR that includes actual changes to the compiler is #117645. Kicked off a test to see if that's the root cause.

Improvements

Rollup of 4 pull requests #117680 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-9.1%[-16.0%, -2.6%]7
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-9.1%[-16.0%, -2.6%]7
  • The flip side of #117617's strange perf regression.

Add std::hash::{DefaultHasher, RandomState} exports (needs FCP) #115694 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.9%[-1.2%, -0.4%]6
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-0.9%[-1.2%, -0.4%]6

Mixed

Only use normalize_param_env when normalizing predicate in check_item_bounds #117542 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.4%, 0.4%]1
Regressions ❌
(secondary)
1.4%[0.8%, 2.3%]12
Improvements ✅
(primary)
-18.4%[-49.6%, -0.2%]20
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-17.5%[-49.6%, 0.4%]21

Emit #[inline] on derive(Debug) #117727 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
3.1%[0.3%, 13.7%]5
Regressions ❌
(secondary)
1.8%[0.2%, 3.4%]6
Improvements ✅
(primary)
-2.3%[-10.6%, -0.1%]110
Improvements ✅
(secondary)
-3.2%[-25.2%, -0.1%]177
All ❌✅ (primary)-2.1%[-10.6%, 13.7%]115
  • Huge wins outweigh the small losses.

Rollup of 6 pull requests #117769 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.3%, 0.3%]1
Regressions ❌
(secondary)
1.0%[1.0%, 1.0%]1
Improvements ✅
(primary)
-6.5%[-12.3%, -0.7%]2
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-4.2%[-12.3%, 0.3%]3
  • Noise