Skip to content

Commit 8627cf5

Browse files
authored
Merge pull request #2140 from rylev/perf-triage-2025-05-27
2 parents 9863312 + 02eafc9 commit 8627cf5

File tree

1 file changed

+259
-0
lines changed

1 file changed

+259
-0
lines changed

triage/2025-05-27.md

Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
# 2025-05-27 Triage Log
2+
3+
A week dominated by new sources of noise. By and large there were not that many real changes to compiler performance. Some highlights of real change to focus on are an improvement in rustdoc that had large wins in a few key benchmarks and an improvement in trait selection that comes from moving from an if/else chain to pattern matching.
4+
5+
Triage done by **@rylev**.
6+
Revision range: [59372f2c..2805e1dc](https://perf.rust-lang.org/?start=59372f2c81ba74554d9a71b12a4ed7f29adb33a2&end=2805e1dc4c18ed4c84d161502c48da870c56f68a&absolute=false&stat=instructions%3Au)
7+
8+
**Summary**:
9+
10+
| (instructions:u) | mean | range | count |
11+
|:----------------------------------:|:-----:|:---------------:|:-----:|
12+
| Regressions ❌ <br /> (primary) | 0.7% | [0.1%, 7.5%] | 73 |
13+
| Regressions ❌ <br /> (secondary) | 1.4% | [0.1%, 6.8%] | 34 |
14+
| Improvements ✅ <br /> (primary) | -4.0% | [-78.5%, -0.1%] | 41 |
15+
| Improvements ✅ <br /> (secondary) | -6.2% | [-22.1%, -0.1%] | 28 |
16+
| All ❌✅ (primary) | -1.0% | [-78.5%, 7.5%] | 114 |
17+
18+
19+
5 Regressions, 7 Improvements, 8 Mixed; 9 of them in rollups
20+
45 artifact comparisons made in total
21+
22+
#### Regressions
23+
24+
Add `std::io::Seek` instance for `std::io::Take` [#138023](https://github.com/rust-lang/rust/pull/138023) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=59372f2c81ba74554d9a71b12a4ed7f29adb33a2&end=60dabef95a3de3ec974dcb50926e4bfe743f078f&stat=instructions:u)
25+
26+
| (instructions:u) | mean | range | count |
27+
|:----------------------------------:|:----:|:------------:|:-----:|
28+
| Regressions ❌ <br /> (primary) | 2.0% | [1.0%, 3.0%] | 2 |
29+
| Regressions ❌ <br /> (secondary) | 1.0% | [1.0%, 1.0%] | 1 |
30+
| Improvements ✅ <br /> (primary) | - | - | 0 |
31+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
32+
| All ❌✅ (primary) | 2.0% | [1.0%, 3.0%] | 2 |
33+
- Noise in newly added benchmarks.
34+
35+
36+
update llvm-tools logic for `dist` and `install` steps [#140932](https://github.com/rust-lang/rust/pull/140932) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=28174fc1a0525888615c8bce8f4ecec13c85ecc6&end=6cab15c1aef39456d86ce51be6096088cb2ef1da&stat=instructions:u)
37+
38+
| (instructions:u) | mean | range | count |
39+
|:----------------------------------:|:----:|:------------:|:-----:|
40+
| Regressions ❌ <br /> (primary) | 3.0% | [3.0%, 3.0%] | 1 |
41+
| Regressions ❌ <br /> (secondary) | 0.4% | [0.4%, 0.4%] | 1 |
42+
| Improvements ✅ <br /> (primary) | - | - | 0 |
43+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
44+
| All ❌✅ (primary) | 3.0% | [3.0%, 3.0%] | 1 |
45+
- Noise
46+
47+
48+
Rollup of 7 pull requests [#141345](https://github.com/rust-lang/rust/pull/141345) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=356f2d077498d0ebe5ec4f9cfef04293a2b17611&end=462cc099c93b2915eef61c3fbc504588b41b27d1&stat=instructions:u)
49+
50+
| (instructions:u) | mean | range | count |
51+
|:----------------------------------:|:----:|:------------:|:-----:|
52+
| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 6 |
53+
| Regressions ❌ <br /> (secondary) | 1.1% | [0.8%, 1.4%] | 4 |
54+
| Improvements ✅ <br /> (primary) | - | - | 0 |
55+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
56+
| All ❌✅ (primary) | 0.1% | [0.1%, 0.1%] | 6 |
57+
- All of the regressions seem like slight returns back to a previous mean so I don't think this merits an investigation.
58+
59+
60+
Defer evaluating type system constants when they use infers or params [#140553](https://github.com/rust-lang/rust/pull/140553) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=e7f4317ea0e891296163414c6f681ccec976abc3&end=52bf0cf795dfecc8b929ebb1c1e2545c3f41d4c9&stat=instructions:u)
61+
62+
| (instructions:u) | mean | range | count |
63+
|:----------------------------------:|:----:|:------------:|:-----:|
64+
| Regressions ❌ <br /> (primary) | 0.3% | [0.1%, 0.5%] | 15 |
65+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
66+
| Improvements ✅ <br /> (primary) | - | - | 0 |
67+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
68+
| All ❌✅ (primary) | 0.3% | [0.1%, 0.5%] | 15 |
69+
- perf regressions were expected, but checking with the author/reviewer to make sure the magnitude seen is still acceptable.
70+
71+
72+
Rollup of 8 pull requests [#141567](https://github.com/rust-lang/rust/pull/141567) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=46264e6dfd8f0bacae05c520b4617e054d6ef990&end=95a2212587f1b8500af1ac630322b0cb2e030c61&stat=instructions:u)
73+
74+
| (instructions:u) | mean | range | count |
75+
|:----------------------------------:|:----:|:------------:|:-----:|
76+
| Regressions ❌ <br /> (primary) | 3.0% | [3.0%, 3.0%] | 1 |
77+
| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 1 |
78+
| Improvements ✅ <br /> (primary) | - | - | 0 |
79+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
80+
| All ❌✅ (primary) | 3.0% | [3.0%, 3.0%] | 1 |
81+
- clap_derive is noisy, and has since gone back to its previous state.
82+
83+
84+
#### Improvements
85+
86+
Rollup of 5 pull requests [#141270](https://github.com/rust-lang/rust/pull/141270) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=60dabef95a3de3ec974dcb50926e4bfe743f078f&end=a8e4c68dcb4dc1e48a0db294c5323cab0227fcb9&stat=instructions:u)
87+
88+
| (instructions:u) | mean | range | count |
89+
|:----------------------------------:|:-----:|:--------------:|:-----:|
90+
| Regressions ❌ <br /> (primary) | - | - | 0 |
91+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
92+
| Improvements ✅ <br /> (primary) | -1.5% | [-2.8%, -1.1%] | 5 |
93+
| Improvements ✅ <br /> (secondary) | -1.0% | [-1.0%, -1.0%] | 1 |
94+
| All ❌✅ (primary) | -1.5% | [-2.8%, -1.1%] | 5 |
95+
96+
97+
Rollup of 7 pull requests [#141292](https://github.com/rust-lang/rust/pull/141292) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=6cab15c1aef39456d86ce51be6096088cb2ef1da&end=444a62712a29e14d3b6147b51fd24e623496bf58&stat=instructions:u)
98+
99+
| (instructions:u) | mean | range | count |
100+
|:----------------------------------:|:-----:|:--------------:|:-----:|
101+
| Regressions ❌ <br /> (primary) | - | - | 0 |
102+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
103+
| Improvements ✅ <br /> (primary) | -2.3% | [-3.0%, -1.5%] | 2 |
104+
| Improvements ✅ <br /> (secondary) | -1.4% | [-1.4%, -1.4%] | 1 |
105+
| All ❌✅ (primary) | -2.3% | [-3.0%, -1.5%] | 2 |
106+
107+
108+
Fast path for processing some obligations in the new solver [#141135](https://github.com/rust-lang/rust/pull/141135) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=1d679446b01e65f9bc9ae609d0ae1e4a9c0ccaa3&end=d423c815a69bbcfb4abcd23a828b9a513c397632&stat=instructions:u)
109+
110+
| (instructions:u) | mean | range | count |
111+
|:----------------------------------:|:-----:|:--------------:|:-----:|
112+
| Regressions ❌ <br /> (primary) | - | - | 0 |
113+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
114+
| Improvements ✅ <br /> (primary) | - | - | 0 |
115+
| Improvements ✅ <br /> (secondary) | -2.2% | [-5.0%, -0.1%] | 16 |
116+
| All ❌✅ (primary) | - | - | 0 |
117+
118+
119+
Rollup of 6 pull requests [#141545](https://github.com/rust-lang/rust/pull/141545) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=88b3b520e852e01970c3f519339ba64ed3e7db6d&end=283db70ace62a0ae704a624e43b68c2ee44b87a6&stat=instructions:u)
120+
121+
| (instructions:u) | mean | range | count |
122+
|:----------------------------------:|:-----:|:--------------:|:-----:|
123+
| Regressions ❌ <br /> (primary) | - | - | 0 |
124+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
125+
| Improvements ✅ <br /> (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
126+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
127+
| All ❌✅ (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
128+
129+
130+
interpret: do not force_allocate all return places [#141406](https://github.com/rust-lang/rust/pull/141406) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=95a2212587f1b8500af1ac630322b0cb2e030c61&end=b5eb9893f42a469d330046089539f908d4728384&stat=instructions:u)
131+
132+
| (instructions:u) | mean | range | count |
133+
|:----------------------------------:|:-----:|:--------------:|:-----:|
134+
| Regressions ❌ <br /> (primary) | - | - | 0 |
135+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
136+
| Improvements ✅ <br /> (primary) | -1.6% | [-2.9%, -0.2%] | 2 |
137+
| Improvements ✅ <br /> (secondary) | -3.5% | [-4.6%, -0.3%] | 7 |
138+
| All ❌✅ (primary) | -1.6% | [-2.9%, -0.2%] | 2 |
139+
140+
141+
Fold predicate fast path in canonicalizer and eager resolver [#141442](https://github.com/rust-lang/rust/pull/141442) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=b5eb9893f42a469d330046089539f908d4728384&end=9c0bcb514f49cd1e6a30affb2fe4cfca060129a2&stat=instructions:u)
142+
143+
| (instructions:u) | mean | range | count |
144+
|:----------------------------------:|:-----:|:---------------:|:-----:|
145+
| Regressions ❌ <br /> (primary) | - | - | 0 |
146+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
147+
| Improvements ✅ <br /> (primary) | - | - | 0 |
148+
| Improvements ✅ <br /> (secondary) | -6.1% | [-15.7%, -0.2%] | 15 |
149+
| All ❌✅ (primary) | - | - | 0 |
150+
151+
152+
Don't rerun goals if none of their vars have changed [#141500](https://github.com/rust-lang/rust/pull/141500) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=9c0bcb514f49cd1e6a30affb2fe4cfca060129a2&end=40d2563ea200f9327a8cb8b99a0fb82f75a7365c&stat=instructions:u)
153+
154+
| (instructions:u) | mean | range | count |
155+
|:----------------------------------:|:-----:|:---------------:|:-----:|
156+
| Regressions ❌ <br /> (primary) | - | - | 0 |
157+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
158+
| Improvements ✅ <br /> (primary) | -0.1% | [-0.2%, -0.1%] | 2 |
159+
| Improvements ✅ <br /> (secondary) | -4.1% | [-17.9%, -0.3%] | 9 |
160+
| All ❌✅ (primary) | -0.1% | [-0.2%, -0.1%] | 2 |
161+
162+
163+
#### Mixed
164+
165+
Match on lang item kind instead of using an if/else chain [#140386](https://github.com/rust-lang/rust/pull/140386) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c43786c9b7b8d8dcc3f9c604e0e3074c16ed69d3&end=356f2d077498d0ebe5ec4f9cfef04293a2b17611&stat=instructions:u)
166+
167+
| (instructions:u) | mean | range | count |
168+
|:----------------------------------:|:-----:|:--------------:|:-----:|
169+
| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 0.7%] | 2 |
170+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.4%] | 4 |
171+
| Improvements ✅ <br /> (primary) | -0.3% | [-0.7%, -0.1%] | 55 |
172+
| Improvements ✅ <br /> (secondary) | -0.2% | [-0.2%, -0.1%] | 3 |
173+
| All ❌✅ (primary) | -0.2% | [-0.7%, 0.7%] | 57 |
174+
- Improvements vastly outweigh regressions
175+
176+
177+
Rollup of 7 pull requests [#141396](https://github.com/rust-lang/rust/pull/141396) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2eef47813f25df637026ce3288880e5c587abd92&end=912981a9eab199a6429d3c65a58f1b80487620ea&stat=instructions:u)
178+
179+
| (instructions:u) | mean | range | count |
180+
|:----------------------------------:|:-----:|:--------------:|:-----:|
181+
| Regressions ❌ <br /> (primary) | - | - | 0 |
182+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.2%] | 2 |
183+
| Improvements ✅ <br /> (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
184+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
185+
| All ❌✅ (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
186+
- Small enough regressions that I don't think it warrants an investigation
187+
188+
189+
Rollup of 7 pull requests [#141463](https://github.com/rust-lang/rust/pull/141463) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=e88e85463468ce5d5ce468414eb69e3b15fa8d42&end=3e674b06b5c74adea662bd0b0b06450757994b16&stat=instructions:u)
190+
191+
| (instructions:u) | mean | range | count |
192+
|:----------------------------------:|:-----:|:--------------:|:-----:|
193+
| Regressions ❌ <br /> (primary) | - | - | 0 |
194+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.3%, 1.2%] | 4 |
195+
| Improvements ✅ <br /> (primary) | -1.0% | [-1.0%, -1.0%] | 1 |
196+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
197+
| All ❌✅ (primary) | -1.0% | [-1.0%, -1.0%] | 1 |
198+
- The only significant regression is in the new trait solver stress test, and that benchmark is still settling so I don't think it's worth a deeper look.
199+
200+
201+
rustdoc: Speed up `TypeAliasPart::get` [#141421](https://github.com/rust-lang/rust/pull/141421) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=80c34983c63968c204096e79b9126c0039790741&end=105354db48223b7bf799b05d4dd3a412aca7bd05&stat=instructions:u)
202+
203+
| (instructions:u) | mean | range | count |
204+
|:----------------------------------:|:------:|:---------------:|:-----:|
205+
| Regressions ❌ <br /> (primary) | - | - | 0 |
206+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
207+
| Improvements ✅ <br /> (primary) | -19.5% | [-78.7%, -0.3%] | 8 |
208+
| Improvements ✅ <br /> (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
209+
| All ❌✅ (primary) | -19.5% | [-78.7%, -0.3%] | 8 |
210+
- Pure rustdoc change, so coercions result is just noise.
211+
212+
213+
Rollup of 6 pull requests [#141506](https://github.com/rust-lang/rust/pull/141506) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=3de4f1ccf3873782fae2a3883d029ed3d4542581&end=038d599eda4fe3e3d78103fba51ee663df86dadf&stat=instructions:u)
214+
215+
| (instructions:u) | mean | range | count |
216+
|:----------------------------------:|:-----:|:--------------:|:-----:|
217+
| Regressions ❌ <br /> (primary) | 3.0% | [3.0%, 3.0%] | 1 |
218+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
219+
| Improvements ✅ <br /> (primary) | - | - | 0 |
220+
| Improvements ✅ <br /> (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
221+
| All ❌✅ (primary) | 3.0% | [3.0%, 3.0%] | 1 |
222+
- Noise in the clap benchmark
223+
224+
225+
Use the fn_span when emitting function calls for better debug info. [#141372](https://github.com/rust-lang/rust/pull/141372) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=038d599eda4fe3e3d78103fba51ee663df86dadf&end=5e16c662062fd6dee91f0fe2a1580483488d80cf&stat=instructions:u)
226+
227+
| (instructions:u) | mean | range | count |
228+
|:----------------------------------:|:-----:|:--------------:|:-----:|
229+
| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.3%] | 2 |
230+
| Regressions ❌ <br /> (secondary) | 2.9% | [2.8%, 3.0%] | 2 |
231+
| Improvements ✅ <br /> (primary) | -2.8% | [-2.8%, -2.8%] | 1 |
232+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
233+
| All ❌✅ (primary) | -0.8% | [-2.8%, 0.3%] | 3 |
234+
- the big improvement is noise, but some of the regressions seem legit. It seems like perhaps more time is being spent in codegen_module which I suspect tracks well with the change here
235+
236+
237+
Implement `advance_by` via `try_fold` for `Sized` iterators [#141086](https://github.com/rust-lang/rust/pull/141086) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=aa57e46e24a4a08cc336325e92567b40b0c2ba62&end=88b3b520e852e01970c3f519339ba64ed3e7db6d&stat=instructions:u)
238+
239+
| (instructions:u) | mean | range | count |
240+
|:----------------------------------:|:-----:|:--------------:|:-----:|
241+
| Regressions ❌ <br /> (primary) | 1.4% | [0.6%, 3.0%] | 4 |
242+
| Regressions ❌ <br /> (secondary) | 3.6% | [0.3%, 6.8%] | 2 |
243+
| Improvements ✅ <br /> (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
244+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
245+
| All ❌✅ (primary) | 1.0% | [-0.3%, 3.0%] | 5 |
246+
- the regression in clap is noise, but the regressions in ripgrep seem to be legit. This might just be more time spent in LLM crunching through things.
247+
248+
249+
Rollup of 10 pull requests [#141605](https://github.com/rust-lang/rust/pull/141605) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=40d2563ea200f9327a8cb8b99a0fb82f75a7365c&end=2805e1dc4c18ed4c84d161502c48da870c56f68a&stat=instructions:u)
250+
251+
| (instructions:u) | mean | range | count |
252+
|:----------------------------------:|:-----:|:--------------:|:-----:|
253+
| Regressions ❌ <br /> (primary) | 1.3% | [0.1%, 7.8%] | 37 |
254+
| Regressions ❌ <br /> (secondary) | 1.3% | [0.2%, 2.6%] | 26 |
255+
| Improvements ✅ <br /> (primary) | -1.1% | [-1.8%, -0.5%] | 2 |
256+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
257+
| All ❌✅ (primary) | 1.2% | [-1.8%, 7.8%] | 39 |
258+
- Investigation into this is underway.
259+

0 commit comments

Comments
 (0)