Skip to content

Commit 420012f

Browse files
committed
report for 2023-10-18.
1 parent aa8f4c2 commit 420012f

File tree

1 file changed

+44
-9
lines changed

1 file changed

+44
-9
lines changed

triage/2023-10-18.md

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
# 2023-10-18 Triage Log
22

3-
TODO: Summary
4-
5-
Triage done by **@???**.
3+
Overall an interesting week performance wise, with small improvements to a vast
4+
number of benchmarks seeming to outweigh an isolated set of (slightly) larger
5+
regressions. It included a number of PRs regressed instruction counts but did
6+
not matter for cycle times, plus one mysterious regression to `check_match` and
7+
`mir_borrowck` from reworking constructor splitting (see report on PR 116391 for
8+
details), and an awesome broad set of improvements from automatically inlining
9+
small functions across crates (see report on PR 116505 for details).
10+
11+
Triage done by **@pnkfelix**.
612
Revision range: [84d44dd1..b9832e72](https://perf.rust-lang.org/?start=84d44dd1d8ec1e98fff94272ba4f96b2a1f044ca&end=b9832e72c9223f4e96049aa5911effd258b92591&absolute=false&stat=instructions%3Au)
713

814
**Summary**:
@@ -16,7 +22,7 @@ Revision range: [84d44dd1..b9832e72](https://perf.rust-lang.org/?start=84d44dd1d
1622
| All ❌✅ (primary) | -0.9% | [-17.9%, 12.2%] | 138 |
1723

1824

19-
4 Regressions, 1 Improvements, 4 Mixed; ??? of them in rollups
25+
4 Regressions, 1 Improvements, 4 Mixed; 3 of them in rollups
2026
84 artifact comparisons made in total
2127

2228
#### Regressions
@@ -31,6 +37,9 @@ Rollup of 7 pull requests [#116605](https://github.com/rust-lang/rust/pull/11660
3137
| Improvements ✅ <br /> (secondary) | - | - | 0 |
3238
| All ❌✅ (primary) | 0.4% | [0.2%, 0.6%] | 7 |
3339

40+
* solely rustdoc regression
41+
* believed to be caused by [PR 109422](https://github.com/rust-lang/rust/pull/109422) "rustdoc-search: add impl disambiguator to duplicate assoc items"
42+
* already marked as triaged
3443

3544
Optimize `librustc_driver.so` with BOLT [#116352](https://github.com/rust-lang/rust/pull/116352) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ee8c9d3c34719a129f280cd91ba5d324017bb02b&end=c543b6f3516767150af84d94c14a27b19d4b0291&stat=instructions:u)
3645

@@ -42,6 +51,9 @@ Optimize `librustc_driver.so` with BOLT [#116352](https://github.com/rust-lang/
4251
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.3%, -0.3%] | 4 |
4352
| All ❌✅ (primary) | 2.3% | [0.2%, 5.7%] | 10 |
4453

54+
* primary instruction-count regressions were restricted to helloworld and html5ever
55+
* As noted in comment by Kobzol, the instruction counts regressed for many benchmarks, but the [cycle counts](https://perf.rust-lang.org/compare.html?start=ee8c9d3c34719a129f280cd91ba5d324017bb02b&end=c543b6f3516767150af84d94c14a27b19d4b0291&stat=cycles:u) solely improved, significantly so, and bootstrap time improved (628.052s -> 623.517s (-0.72%)).
56+
* already marked as triaged
4557

4658
Rollup of 3 pull requests [#116742](https://github.com/rust-lang/rust/pull/116742) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c543b6f3516767150af84d94c14a27b19d4b0291&end=e292fec36880f48101bda4054be37097312e73c0&stat=instructions:u)
4759

@@ -53,6 +65,9 @@ Rollup of 3 pull requests [#116742](https://github.com/rust-lang/rust/pull/11674
5365
| Improvements ✅ <br /> (secondary) | - | - | 0 |
5466
| All ❌✅ (primary) | 0.3% | [0.3%, 0.4%] | 3 |
5567

68+
* Regressions are solely to bitmaps full scenarios.
69+
* Looks like a blip (i.e. noise) based on the graph over time.
70+
* marking as triaged.
5671

5772
don't UB on dangling ptr deref, instead check inbounds on projections [#114330](https://github.com/rust-lang/rust/pull/114330) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=a00c09e9d80b763fb29206b47b04e1d99c3ace96&end=e7bdc5f9f869219e8d20060b42a09ea10a837851&stat=instructions:u)
5873

@@ -64,6 +79,11 @@ don't UB on dangling ptr deref, instead check inbounds on projections [#114330](
6479
| Improvements ✅ <br /> (secondary) | - | - | 0 |
6580
| All ❌✅ (primary) | - | - | 0 |
6681

82+
* From skimming the PR, one can see that the PR author (RalfJung) iterated on this to identify a solution that would minimize regressions.
83+
* As noted by the PR author, only secondary benchmarks were affected.
84+
* Also, while instruction-counts regressed, the [cycle-counts](https://perf.rust-lang.org/compare.html?start=a00c09e9d80b763fb29206b47b04e1d99c3ace96&end=e7bdc5f9f869219e8d20060b42a09ea10a837851&stat=cycles%3Au)
85+
did not, at least not enough to pass our noise threshold.
86+
* marking as triaged.
6787

6888
#### Improvements
6989

@@ -77,6 +97,7 @@ optimize zipping over array iterators [#115515](https://github.com/rust-lang/rus
7797
| Improvements ✅ <br /> (secondary) | - | - | 0 |
7898
| All ❌✅ (primary) | -0.3% | [-0.4%, -0.2%] | 3 |
7999

100+
* A small win from a PR addressing user-filed performance regression, namely [issue #115339](https://github.com/rust-lang/rust/issues/115339), "Performance regression of array::IntoIter vs slice::Iter"
80101

81102
#### Mixed
82103

@@ -90,6 +111,9 @@ Also consider call and yield as MIR SSA. [#113915](https://github.com/rust-lang/
90111
| Improvements ✅ <br /> (secondary) | -0.4% | [-0.6%, -0.3%] | 5 |
91112
| All ❌✅ (primary) | -0.2% | [-0.9%, 3.9%] | 27 |
92113

114+
* The try perf run had sole primary regression of unicode-normalization-0.1.19 opt-full (1.19%), while the perf run against master had sole primary regression of exa-0.10.1 opt-full (3.90%).
115+
* The exa regression has persisted forward (i.e. it is not transient noise).
116+
* It was already been marked as triaged, as the performance changes were deemed a wash, apart from object code sizes which saw "small but clear" improvement.
93117

94118
Rollup of 5 pull requests [#116640](https://github.com/rust-lang/rust/pull/116640) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c1691db366c0f2e2341c60377c248ca2d9335076&end=475c71da0710fd1d40c046f9cee04b733b5b2b51&stat=instructions:u)
95119

@@ -101,6 +125,9 @@ Rollup of 5 pull requests [#116640](https://github.com/rust-lang/rust/pull/11664
101125
| Improvements ✅ <br /> (secondary) | -0.4% | [-0.5%, -0.4%] | 6 |
102126
| All ❌✅ (primary) | -0.3% | [-0.4%, -0.2%] | 4 |
103127

128+
* sole regression was to secondary benchmark coercions debug incr-patched: add static arr item
129+
* Looks like a blip (i.e. noise) based on the graph over time.
130+
* marking as triaged
104131

105132
exhaustiveness: Rework constructor splitting [#116391](https://github.com/rust-lang/rust/pull/116391) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=df4379b4eb5357263f0cf75475953f9b5c48c31f&end=e20cb7702117f1ad8127a16406ba9edd230c4f65&stat=instructions:u)
106133

@@ -112,6 +139,16 @@ exhaustiveness: Rework constructor splitting [#116391](https://github.com/rust-l
112139
| Improvements ✅ <br /> (secondary) | - | - | 0 |
113140
| All ❌✅ (primary) | 0.1% | [-0.4%, 0.3%] | 5 |
114141

142+
* the primary regressions were to cranelift-codegen-0.82.1 and cargo-0.60.0 in various incremental settings (mostly check builds)
143+
* the large (>5%) secondary regressions are all to match-stress.
144+
* the above cases were regressions for instruction-counts, but the cycle-counts didn't get marked as regressed in *any* of the same cases.
145+
* in all cases, the performance loss from these regressions was subsequently recovered (or masked) by [PR 116505](https://github.com/rust-lang/rust/pull/116505) "Automatically enable cross-crate inlining for small functions".
146+
(I don't know if that's actually related or just an awesome change that bought so much performance that it masked this problem).
147+
* Since the match-stress one was relatively large, I looked at the
148+
self-profile results in the [details](https://perf.rust-lang.org/detailed-query.html?commit=e20cb7702117f1ad8127a16406ba9edd230c4f65&benchmark=match-stress-check&scenario=full&base_commit=df4379b4eb5357263f0cf75475953f9b5c48c31f)
149+
which indicates a change in the delta(time) for match-stress might be due to new overheads in `check_match` and `mir_borrowck`.
150+
* But this is strange; I cannot tell how this PR could have affected codegen, which would be the only way I could imagine those functions being impacted.
151+
* Not marking as triaged for now; this mystery might be worth looking into a bit more. (But then again, the only significant regression was to a secondary stress test, so maybe its not worth spending time on.)
115152

116153
Automatically enable cross-crate inlining for small functions [#116505](https://github.com/rust-lang/rust/pull/116505) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ca89f732ec0f910fc92111a45dd7e6829baa9d4b&end=5d5edf0248d967baa6ac5cbea09b91c7c9947942&stat=instructions:u)
117154

@@ -123,6 +160,9 @@ Automatically enable cross-crate inlining for small functions [#116505](https://
123160
| Improvements ✅ <br /> (secondary) | -2.2% | [-39.8%, -0.2%] | 209 |
124161
| All ❌✅ (primary) | -1.0% | [-18.1%, 13.0%] | 156 |
125162

163+
* Already marked as triaged
164+
* This was clearly awesome and amazing (all the more amazing if you review the history)
165+
* 'Nuff said.
126166

127167
#### Untriaged Pull Requests
128168

@@ -156,8 +196,3 @@ Automatically enable cross-crate inlining for small functions [#116505](https://
156196
- [#112963 Stop bubbling out hidden types from the eval obligation queries](https://github.com/rust-lang/rust/pull/112963)
157197
- [#112882 Rewrite `UnDerefer`](https://github.com/rust-lang/rust/pull/112882)
158198
- [#112420 Rollup of 4 pull requests](https://github.com/rust-lang/rust/pull/112420)
159-
160-
#### Nags requiring follow up
161-
162-
TODO: Nags
163-

0 commit comments

Comments
 (0)