2023-01-24 Triage Log

Largely a win for compiler performance with 100 test cases in real-world crates showing some sort of change in performance with an average 1% improvement. These wins were a combination of many different changes including how doc(hidden) gets more efficiently encoded in metadata, some optimizations in the borrow checker, and simplification of the output from derive(Debug) for fieldless enums.

Triage done by @rylev. Revision range: 1f72129f..c8e6a9e8

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.2%, 0.7%]19
Regressions ❌
(secondary)
0.9%[0.2%, 1.5%]34
Improvements ✅
(primary)
-1.3%[-17.2%, -0.2%]81
Improvements ✅
(secondary)
-2.1%[-7.1%, -0.2%]64
All ❌✅ (primary)-1.0%[-17.2%, 0.7%]100

2 Regressions, 5 Improvements, 3 Mixed; 1 of them in rollups 34 artifact comparisons made in total

Regressions

Check ADT fields for copy implementations considering regions #105102 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.5%[0.4%, 0.5%]6
Regressions ❌
(secondary)
1.7%[1.4%, 2.0%]3
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.5%[0.4%, 0.5%]6

ci: upgrade mingw-check to ubuntu:22.04 #106948 (Comparison Link)

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

Improvements

rustdoc: Revert #104889 #107083 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-4.4%[-15.7%, -0.5%]7
Improvements ✅
(secondary)
-1.5%[-1.6%, -1.4%]3
All ❌✅ (primary)-4.4%[-15.7%, -0.5%]7

Remove some ref patterns from the compiler #106090 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.2%[-0.2%, -0.1%]3
Improvements ✅
(secondary)
-0.3%[-0.5%, -0.3%]5
All ❌✅ (primary)-0.2%[-0.2%, -0.1%]3

Lazy dominator tree construction in borrowck #106976 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.4%[-0.6%, -0.3%]26
Improvements ✅
(secondary)
-0.7%[-1.0%, -0.3%]14
All ❌✅ (primary)-0.4%[-0.6%, -0.3%]26

Remap paths in UI tests by default #105924 (Comparison Link)

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

rustc_metadata: Encode doc(hidden) flag to metadata #107136 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.2%[0.2%, 0.2%]1
Improvements ✅
(primary)
-1.9%[-5.7%, -0.5%]18
Improvements ✅
(secondary)
-3.3%[-5.8%, -0.8%]28
All ❌✅ (primary)-1.9%[-5.7%, -0.5%]18

Mixed

Rollup of 9 pull requests #107143 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.8%]57
Regressions ❌
(secondary)
0.5%[0.2%, 1.4%]28
Improvements ✅
(primary)
-0.7%[-1.1%, -0.3%]2
Improvements ✅
(secondary)
-0.7%[-1.2%, -0.5%]8
All ❌✅ (primary)0.3%[-1.1%, 0.8%]59
  • This rollup contains a perf regression due to #104672
  • Probably caused by some changes to inlining.

Simplify derive(Debug) output for fieldless enums #106884 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.8%[0.7%, 1.0%]7
Improvements ✅
(primary)
-0.5%[-1.7%, -0.2%]22
Improvements ✅
(secondary)
-1.7%[-2.9%, -0.5%]8
All ❌✅ (primary)-0.5%[-1.7%, -0.2%]22
  • Improvements outweigh the regressions so I think it's fine if we just take this performance as is.

Use UnordMap and UnordSet for id collections (DefIdMap, LocalDefIdMap, etc) #106977 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.3%]2
Regressions ❌
(secondary)
0.6%[0.4%, 0.8%]7
Improvements ✅
(primary)
-0.5%[-0.5%, -0.5%]3
Improvements ✅
(secondary)
-0.3%[-0.7%, -0.2%]20
All ❌✅ (primary)-0.2%[-0.5%, 0.3%]5
  • perf got slightly worse from the original perf run, but it‘s still enough of a wash that I don’t think it needs investigating.