Skip to content

Commit 7929852

Browse files
Add perf report for this week
1 parent f33ebea commit 7929852

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed

triage/2025/2025-07-28.md

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
# 2025-07-28 Triage Log
2+
3+
A week with lots of mixed results, including a few benchmarks that appear to be
4+
newly bimodal, which made some of the results look closer to noise than signal.
5+
Overall, however, the week ended as a slight improvement.
6+
7+
Triage done by **@simulacrum**.
8+
Revision range: [3f9f20f7..e3514bde](https://perf.rust-lang.org/?start=3f9f20f71dd945fe7d044e274094a53c90788269&end=e3514bde96d2d13586337a48db77fa64b850d249&absolute=false&stat=instructions%3Au)
9+
10+
**Summary**:
11+
12+
| (instructions:u) | mean | range | count |
13+
|:----------------------------------:|:-----:|:---------------:|:-----:|
14+
| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 0.9%] | 7 |
15+
| Regressions ❌ <br /> (secondary) | 0.4% | [0.0%, 0.7%] | 26 |
16+
| Improvements ✅ <br /> (primary) | -0.4% | [-1.1%, -0.2%] | 69 |
17+
| Improvements ✅ <br /> (secondary) | -1.8% | [-10.3%, -0.0%] | 96 |
18+
| All ❌✅ (primary) | -0.3% | [-1.1%, 0.9%] | 76 |
19+
20+
1 Regressions, 2 Improvements, 9 Mixed; 2 of them in rollups
21+
38 artifact comparisons made in total
22+
23+
#### Regressions
24+
25+
resolve: Make disambiguators for underscore bindings module-local (take 2) [#144272](https://github.com/rust-lang/rust/pull/144272) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=3c30dbbe31bfbf6029f4534170165ba573ff0fd1&end=fc5af1813307d25a84d633f21e2e53c9376eb547&stat=instructions:u)
26+
27+
| (instructions:u) | mean | range | count |
28+
|:----------------------------------:|:----:|:------------:|:-----:|
29+
| Regressions ❌ <br /> (primary) | 0.4% | [0.1%, 0.7%] | 17 |
30+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.0%, 0.6%] | 21 |
31+
| Improvements ✅ <br /> (primary) | - | - | 0 |
32+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
33+
| All ❌✅ (primary) | 0.4% | [0.1%, 0.7%] | 17 |
34+
35+
Unclear root cause; cachegrind diffs point at the regression ocurring in an
36+
unrelated function. It may also be bimodality as the regression temporarily
37+
self-resolves in a subsequent commmit.
38+
39+
#### Improvements
40+
41+
Various refactors to the LTO handling code (part 2) [#144062](https://github.com/rust-lang/rust/pull/144062) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=fc5af1813307d25a84d633f21e2e53c9376eb547&end=5d22242a3a84a55be2f648a94eecff58887547f4&stat=instructions:u)
42+
43+
| (instructions:u) | mean | range | count |
44+
|:----------------------------------:|:-----:|:--------------:|:-----:|
45+
| Regressions ❌ <br /> (primary) | - | - | 0 |
46+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
47+
| Improvements ✅ <br /> (primary) | - | - | 0 |
48+
| Improvements ✅ <br /> (secondary) | -3.4% | [-6.7%, -1.1%] | 6 |
49+
| All ❌✅ (primary) | - | - | 0 |
50+
51+
Avoids doing some work unless LTO is actually requested, which seems to lead to a nice improvement in the large workspace benchmark.
52+
53+
Do not run per-module late lints if they can be all skipped [#139597](https://github.com/rust-lang/rust/pull/139597) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0dd07bd2165db70ffbe0b903635de26ca630bf20&end=f32b23204a0efe2fe8383ed4be1a30b56c1bbf94&stat=instructions:u)
54+
55+
| (instructions:u) | mean | range | count |
56+
|:----------------------------------:|:-----:|:--------------:|:-----:|
57+
| Regressions ❌ <br /> (primary) | - | - | 0 |
58+
| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 4 |
59+
| Improvements ✅ <br /> (primary) | -0.4% | [-0.5%, -0.2%] | 17 |
60+
| Improvements ✅ <br /> (secondary) | -0.5% | [-1.5%, -0.1%] | 24 |
61+
| All ❌✅ (primary) | -0.4% | [-0.5%, -0.2%] | 17 |
62+
63+
64+
#### Mixed
65+
66+
Ports `#[macro_use]` and `#[macro_escape]` to the new attribute parsing infrastructure [#143843](https://github.com/rust-lang/rust/pull/143843) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=5a30e4307f0506bed87eeecd171f8366fdbda1dc&end=4ff3fa01cbdd468851b1b859541ee1c648cde7de&stat=instructions:u)
67+
68+
| (instructions:u) | mean | range | count |
69+
|:----------------------------------:|:-----:|:--------------:|:-----:|
70+
| Regressions ❌ <br /> (primary) | - | - | 0 |
71+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.2%, 0.2%] | 7 |
72+
| Improvements ✅ <br /> (primary) | - | - | 0 |
73+
| Improvements ✅ <br /> (secondary) | -0.6% | [-0.9%, -0.0%] | 4 |
74+
| All ❌✅ (primary) | - | - | 0 |
75+
76+
Not particularly worried about the regressions here, they affect
77+
unused-warnings and deep-vector only (and not too high in magnitude) and this
78+
is part of larger changes throughout the compiler.
79+
80+
Create an `AllocId` for `ConstValue::Slice`. [#116707](https://github.com/rust-lang/rust/pull/116707) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=efd420c770bb179537c01063e98cb6990c439654&end=3c30dbbe31bfbf6029f4534170165ba573ff0fd1&stat=instructions:u)
81+
82+
| (instructions:u) | mean | range | count |
83+
|:----------------------------------:|:-----:|:---------------:|:-----:|
84+
| Regressions ❌ <br /> (primary) | 0.7% | [0.2%, 1.0%] | 6 |
85+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.0%, 0.9%] | 38 |
86+
| Improvements ✅ <br /> (primary) | -0.3% | [-0.6%, -0.1%] | 17 |
87+
| Improvements ✅ <br /> (secondary) | -1.9% | [-10.2%, -0.0%] | 56 |
88+
| All ❌✅ (primary) | -0.1% | [-0.6%, 1.0%] | 23 |
89+
90+
Overall an improvement and potentially will allow for further simplifications
91+
(https://github.com/rust-lang/rust/pull/116707#issuecomment-3069572150).
92+
93+
Rollup of 15 pull requests [#144398](https://github.com/rust-lang/rust/pull/144398) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=5d22242a3a84a55be2f648a94eecff58887547f4&end=246733a3d978de41c5b77b8120ba8f41592df9f1&stat=instructions:u)
94+
95+
| (instructions:u) | mean | range | count |
96+
|:----------------------------------:|:-----:|:--------------:|:-----:|
97+
| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.4%] | 3 |
98+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.0%, 0.2%] | 3 |
99+
| Improvements ✅ <br /> (primary) | -0.4% | [-0.8%, -0.1%] | 14 |
100+
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.6%, -0.1%] | 21 |
101+
| All ❌✅ (primary) | -0.3% | [-0.8%, 0.4%] | 17 |
102+
103+
Regressions appear limited to incr-println-like scenarios most likely from
104+
https://github.com/rust-lang/rust/pull/143374#issuecomment-3037244091. Not
105+
worth further investigation given limited impact and the change looks fairly
106+
benign.
107+
108+
MIR-build: No longer emit assumes in enum-as casting [#144389](https://github.com/rust-lang/rust/pull/144389) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=246733a3d978de41c5b77b8120ba8f41592df9f1&end=b56aaec52bc0fa35591a872fb4aac81f606e265c&stat=instructions:u)
109+
110+
| (instructions:u) | mean | range | count |
111+
|:----------------------------------:|:-----:|:--------------:|:-----:|
112+
| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 0.7%] | 13 |
113+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 0.6%] | 17 |
114+
| Improvements ✅ <br /> (primary) | -0.4% | [-0.9%, -0.1%] | 8 |
115+
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
116+
| All ❌✅ (primary) | 0.1% | [-0.9%, 0.7%] | 21 |
117+
118+
> looks like html5ever has gone bimodal
119+
120+
(https://github.com/rust-lang/rust/pull/144389#issuecomment-3116885962)
121+
122+
Resolve: refactor `define` into `define_local` and `define_extern` [#143884](https://github.com/rust-lang/rust/pull/143884) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=eed187cfce988dd669b7d9161f324433e64358ee&end=edc3841c5d28e0f54c6d3c7e906ad083129f3903&stat=instructions:u)
123+
124+
| (instructions:u) | mean | range | count |
125+
|:----------------------------------:|:-----:|:--------------:|:-----:|
126+
| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 3 |
127+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.3%, 0.7%] | 5 |
128+
| Improvements ✅ <br /> (primary) | -0.5% | [-0.8%, -0.2%] | 15 |
129+
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.5%, -0.2%] | 27 |
130+
| All ❌✅ (primary) | -0.4% | [-0.8%, 0.1%] | 18 |
131+
132+
Overall positive, few regressions look like they might be within bimodality
133+
thresholds.
134+
135+
Avoid unnecessary `new_adt`/`new_fn_def` calls. [#144425](https://github.com/rust-lang/rust/pull/144425) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=edc3841c5d28e0f54c6d3c7e906ad083129f3903&end=4b596bbd847672da87763b76171687d3544863c2&stat=instructions:u)
136+
137+
| (instructions:u) | mean | range | count |
138+
|:----------------------------------:|:-----:|:--------------:|:-----:|
139+
| Regressions ❌ <br /> (primary) | 0.4% | [0.4%, 0.5%] | 6 |
140+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.3%, 0.7%] | 9 |
141+
| Improvements ✅ <br /> (primary) | -0.3% | [-0.5%, -0.1%] | 46 |
142+
| Improvements ✅ <br /> (secondary) | -0.7% | [-1.6%, -0.1%] | 44 |
143+
| All ❌✅ (primary) | -0.2% | [-0.5%, 0.5%] | 52 |
144+
145+
Overall positive, few regressions look like they might be within bimodality
146+
thresholds.
147+
148+
Preintern some `TyKind::Bound` values [#144434](https://github.com/rust-lang/rust/pull/144434) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4b596bbd847672da87763b76171687d3544863c2&end=f8e355c230c6eb7b78ffce6a92fd81f78c890524&stat=instructions:u)
149+
150+
| (instructions:u) | mean | range | count |
151+
|:----------------------------------:|:-----:|:--------------:|:-----:|
152+
| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 1 |
153+
| Regressions ❌ <br /> (secondary) | 0.8% | [0.3%, 1.0%] | 8 |
154+
| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.1%] | 4 |
155+
| Improvements ✅ <br /> (secondary) | -0.9% | [-1.7%, -0.2%] | 23 |
156+
| All ❌✅ (primary) | -0.2% | [-0.4%, 0.1%] | 5 |
157+
158+
match-stress regression looks plausibly like bimodality to me. ucd and
159+
unicode-normalization look more real but are small in magnitude and limited in
160+
which scenarios are affected; overall the change remains positive, so marking
161+
as triaged.
162+
163+
Rollup of 6 pull requests [#144556](https://github.com/rust-lang/rust/pull/144556) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2b5e239c6b86cde974b0ef0f8e23754fb08ff3c5&end=733dab558992d902d6d17576de1da768094e2cf3&stat=instructions:u)
164+
165+
| (instructions:u) | mean | range | count |
166+
|:----------------------------------:|:-----:|:--------------:|:-----:|
167+
| Regressions ❌ <br /> (primary) | - | - | 0 |
168+
| Regressions ❌ <br /> (secondary) | 0.6% | [0.2%, 1.2%] | 6 |
169+
| Improvements ✅ <br /> (primary) | - | - | 0 |
170+
| Improvements ✅ <br /> (secondary) | -0.7% | [-1.0%, -0.0%] | 8 |
171+
| All ❌✅ (primary) | - | - | 0 |
172+
173+
> So that's probably #143607. One secondary proc-macro benchmark with
174+
> regressions, another one with gains. I guess the magnitude evens out...
175+
>
176+
> I haven't dived into the regression yet but it's probably caused by #143940 (attributes are parsed twice).
177+
178+
Marked as triaged.
179+
180+
Allow more MIR SROA [#144543](https://github.com/rust-lang/rust/pull/144543) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=65b6cdb6a6d33987b9d642a4882283c71fbe3957&end=9ba00e0f9e00990fb88c1beac7172afe93b15609&stat=instructions:u)
181+
182+
| (instructions:u) | mean | range | count |
183+
|:----------------------------------:|:-----:|:--------------:|:-----:|
184+
| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 0.8%] | 3 |
185+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.3%] | 6 |
186+
| Improvements ✅ <br /> (primary) | -0.4% | [-0.6%, -0.2%] | 3 |
187+
| Improvements ✅ <br /> (secondary) | -0.9% | [-1.0%, -0.9%] | 6 |
188+
| All ❌✅ (primary) | 0.0% | [-0.6%, 0.8%] | 6 |
189+
190+
Changes look possibly like longer-term bimodality? But this is also a MIR
191+
optimization, so mixed results are somewhat expected.

0 commit comments

Comments
 (0)