2022-11-22 Triage Log

A fairly quiet week with regressions unfortunately slightly outweighing improvements. There was not any particular change of much note. Many of the regressions were justifiable since they were for critical bug fixes.

Triage done by @rylev. Revision range: 96ddd32c..a78c9bee

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.7%[0.2%, 3.0%]76
Regressions ❌
(secondary)
1.5%[0.3%, 8.4%]69
Improvements ✅
(primary)
-0.7%[-1.8%, -0.2%]18
Improvements ✅
(secondary)
-1.4%[-3.2%, -0.2%]35
All ❌✅ (primary)0.4%[-1.8%, 3.0%]94

7 Regressions, 4 Improvements, 6 Mixed; 5 of them in rollups 47 artifact comparisons made in total

Regressions

Rollup of 13 pull requests #104428 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.2%[0.3%, 3.3%]14
Regressions ❌
(secondary)
2.1%[0.3%, 3.3%]23
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)1.2%[0.3%, 3.3%]14
  • Justification for this regression was posted #104404. Effectively this regression is taking us back to the baseline.

Perform simple scalar replacement of aggregates (SROA) MIR opt #102570 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.2%[0.2%, 0.2%]2
Regressions ❌
(secondary)
0.4%[0.2%, 0.8%]6
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.4%[-1.4%, -1.4%]1
All ❌✅ (primary)0.2%[0.2%, 0.2%]2
  • #104404 is the cause of the regression.

Attempt to reuse Vec<T> backing storage for Rc/Arc<[T]> #104205 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.4%[0.1%, 1.4%]16
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0

Rollup of 11 pull requests #104555 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.4%, 0.5%]2
Regressions ❌
(secondary)
1.3%[1.3%, 1.3%]2
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.4%[0.4%, 0.5%]2
  • externs is noisy at the moment, and the two doc regressions for syn and webrender are small enough to not worry about.

Rollup of 8 pull requests #104600 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.2%, 0.7%]3
Regressions ❌
(secondary)
6.1%[1.3%, 8.8%]3
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.4%[0.2%, 0.7%]3
  • #104411 seems to be causing most of this.
  • The regressions are few enough in number that I don't think this is necessarily worth looking into.

Revert Vec/Rc storage reuse opt #104571 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.5%[0.4%, 0.5%]5
Regressions ❌
(secondary)
1.2%[1.2%, 1.2%]2
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.5%[0.4%, 0.5%]5
  • This removes a recently-merged optimization that caused CI failures because it doesn't work reliably on all platforms.

Clean up and harden various methods around trait substs #104533 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.5%]11
Regressions ❌
(secondary)
0.6%[0.2%, 0.9%]27
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.3%[-0.3%, -0.3%]1
All ❌✅ (primary)0.3%[0.2%, 0.5%]11
  • Currently being investigated by @oli-obk in #104709

Improvements

Merge basic blocks where possible when generating LLVM IR. #103138 (Comparison Link)

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

Record LocalDefId in HIR nodes instead of a side table #104170 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.3%[-0.3%, -0.2%]4
Improvements ✅
(secondary)
-1.1%[-2.3%, -0.6%]12
All ❌✅ (primary)-0.3%[-0.3%, -0.2%]4

Remove allow(rustc::potential_query_instability) from rustc_ast_lowering #104330 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.6%[-1.3%, -0.3%]6
All ❌✅ (primary)--0

Factor out conservative_is_privately_uninhabited #103454 (Comparison Link)

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

Mixed

Rollup of 9 pull requests #104437 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.4%]4
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.3%[-0.3%, -0.3%]1
All ❌✅ (primary)0.3%[0.2%, 0.4%]4
  • Too small a regression for us to investigate this rollup (this is just barely passing the mark for being considered significant).

Use token::Lit in ast::ExprKind::Lit. #102944 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.7%]16
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.2%[-0.2%, -0.2%]1
Improvements ✅
(secondary)
-0.5%[-1.0%, -0.3%]10
All ❌✅ (primary)0.3%[-0.2%, 0.7%]17
  • The wins and losses roughly balance out. Also, this will enable some additional improvements by shrinking the size of ast::Expr.

x86_64 SSE2 fast-path for str.contains(&str) and short needles #103779 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.3%, 0.6%]4
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.4%[-0.5%, -0.3%]5
Improvements ✅
(secondary)
-1.0%[-1.3%, -0.6%]4
All ❌✅ (primary)-0.1%[-0.5%, 0.6%]9
  • A few wins, a few losses, it roughly balances out.

Shrink ast::Expr harder #101562 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.2%, 0.8%]10
Regressions ❌
(secondary)
0.4%[0.1%, 0.7%]10
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.3%[-0.6%, -0.2%]13
All ❌✅ (primary)0.4%[0.2%, 0.8%]10
  • Instruction count results are mixed. But the real results are for cycles and wall-time, which show lots of improvements.

Revert “Normalize opaques with escaping bound vars” #103509 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.6%[0.3%, 0.8%]3
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.6%[-2.2%, -0.3%]6
All ❌✅ (primary)--0
  • This is a necessary fix for a compiler hang. Additionally the improvements outweigh the regressions and this is all confined to secondary benchmarks.

Rollup of 6 pull requests #104646 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.7%[0.4%, 0.9%]7
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.4%[-2.1%, -0.4%]9
All ❌✅ (primary)0.7%[0.4%, 0.9%]7
  • Regressions are noise