Skip to content

Latest commit

 

History

History
183 lines (138 loc) · 11.7 KB

2022-11-29.md

File metadata and controls

183 lines (138 loc) · 11.7 KB

2022-11-29 Triage Log

A relatively quiet week for performance, with the notable exception of "Avoid GenFuture shim when compiling async constructs #104321" which brought sizeable wins on a number of stress test benchmarks. It probably won't be of huge benefit to most codebases, but should provide smaller wins to folks with large amounts of async-generated futures.

Triage done by @simulacrum. Revision range: a78c9bee4d9d51a3891bd8ecae1f28a93b83653b..8a09420ac48658cad726e0a6997687ceac4151e3

Summary:

(instructions:u) mean range count
Regressions ❌
(primary)
1.0% [0.3%, 1.5%] 11
Regressions ❌
(secondary)
1.8% [0.4%, 3.0%] 25
Improvements ✅
(primary)
-1.0% [-3.8%, -0.3%] 148
Improvements ✅
(secondary)
-6.7% [-87.7%, -0.3%] 107
All ❌✅ (primary) -0.9% [-3.8%, 1.5%] 159

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

Regressions

Rollup of 6 pull requests #104758 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
0.3% [0.3%, 0.3%] 1
Regressions ❌
(secondary)
2.1% [0.6%, 7.1%] 13
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.3% [0.3%, 0.3%] 1

This PR was a perf regression (see the report here rust-lang/rust#104758 (comment)). It's relatively small and mostly limited to secondary workloads so I'm marking as triaged.

Branch Clause from Predicate #104846 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
0.8% [0.2%, 2.4%] 38
Regressions ❌
(secondary)
0.4% [0.3%, 0.8%] 5
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.8% [0.2%, 2.4%] 38

Unexpected regression, PR reviewer and author are going to look into it.

Add ConstKind::Expr #99798 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
0.3% [0.2%, 0.5%] 6
Regressions ❌
(secondary)
0.9% [0.3%, 1.6%] 21
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.2% [-0.2%, -0.2%] 1
All ❌✅ (primary) 0.3% [0.2%, 0.5%] 6

Previous perf runs showed slight improvements, but the post-merge one shows regressions. They are mostly among secondary benchmarks.

Improvements

Fix perf regression by correctly matching keywords #104410 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.3% [-0.5%, -0.2%] 32
Improvements ✅
(secondary)
-0.8% [-1.1%, -0.5%] 8
All ❌✅ (primary) -0.3% [-0.5%, -0.2%] 32

Use an IndexVec to cache queries with index-like key #103808 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.8% [-2.3%, -0.2%] 133
Improvements ✅
(secondary)
-1.2% [-7.8%, -0.2%] 105
All ❌✅ (primary) -0.8% [-2.3%, -0.2%] 133

Avoid GenFuture shim when compiling async constructs #104321 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-28.0% [-87.8%, -1.9%] 22
All ❌✅ (primary) - - 0

Mixed

optimize field ordering by grouping m*2^n-sized fields with equivalently aligned ones #102750 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
0.5% [0.3%, 0.8%] 4
Regressions ❌
(secondary)
1.2% [0.3%, 2.3%] 26
Improvements ✅
(primary)
-0.5% [-2.2%, -0.2%] 44
Improvements ✅
(secondary)
-0.6% [-1.2%, -0.1%] 22
All ❌✅ (primary) -0.4% [-2.2%, 0.8%] 48

Some followup discussion on rust-lang/rust#104807 but overall a roughly neutral change.

privacy: Fix more (potential) issues with effective visibilities #104602 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
0.3% [0.2%, 0.3%] 8
Regressions ❌
(secondary)
2.2% [0.3%, 3.6%] 17
Improvements ✅
(primary)
-1.0% [-1.4%, -0.5%] 13
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.5% [-1.4%, 0.3%] 21

This fixes correctness issues, and the regressions are mostly in unused-warnings which is a stress test where 3% doesn't really matter. Plus libc got a bit faster. So overall, not a performance concern.

Manually implement PartialEq for Option<T> and specialize non-nullable types #103556 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
2.1% [2.1%, 2.1%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.3% [-0.4%, -0.2%] 2
Improvements ✅
(secondary)
-0.3% [-0.4%, -0.3%] 2
All ❌✅ (primary) 0.5% [-0.4%, 2.1%] 3

Relatively few relatively small changes, no further investigation needed.

Stop peeling the last iteration of the loop in Vec::resize_with #104818 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
0.8% [0.8%, 0.8%] 1
Regressions ❌
(secondary)
0.3% [0.3%, 0.3%] 1
Improvements ✅
(primary)
-0.3% [-0.3%, -0.3%] 3
Improvements ✅
(secondary)
-0.3% [-0.4%, -0.1%] 7
All ❌✅ (primary) -0.0% [-0.3%, 0.8%] 4

Perf changes are very small, and wins slightly outweigh losses.

Update VecDeque implementation to use head+len instead of head+tail #102991 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.8% [0.2%, 1.4%] 4
Improvements ✅
(primary)
-0.3% [-0.5%, -0.2%] 3
Improvements ✅
(secondary)
-0.3% [-0.5%, -0.2%] 3
All ❌✅ (primary) -0.3% [-0.5%, -0.2%] 3

Performance looks like overall neutral to slight win.

Rollup of 6 pull requests #105008 (Comparison Link)

(instructions:u) mean range count
Regressions ❌
(primary)
0.6% [0.2%, 0.9%] 8
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.9% [-0.9%, -0.8%] 2
Improvements ✅
(secondary)
-2.4% [-2.7%, -2.1%] 6
All ❌✅ (primary) 0.3% [-0.9%, 0.9%] 10

keccak improvements may be spurious but overall neutral so no further investigation warranted.