Skip to content

Commit 313c8d6

Browse files
authored
Merge pull request #2302 from rust-lang/panstromek-patch-1
Add perf triage for 2025-10-27
2 parents db1e526 + 0d28673 commit 313c8d6

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed

triage/2025/2025-10-27.md

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
# 2025-10-27 Triage Log
2+
3+
Mostly negative week, coming almost entirely from adding sizedness bounds in [#142712](https://github.com/rust-lang/rust/pull/142712). Other than that, we got a nice win for async code from state transform optimization in [#147493](https://github.com/rust-lang/rust/pull/147493) and quite a few smaller improvements from codegen optimization in [#147890](https://github.com/rust-lang/rust/pull/147890).
4+
5+
Triage done by **@panstromek**.
6+
Revision range: [4068bafe..23fced0f](https://perf.rust-lang.org/?start=4068bafedd8ba724e332a5221c06a6fa531a30d2&end=23fced0fcc5e0ec260d25f04a8b78b269e5e90f0&absolute=false&stat=instructions%3Au)
7+
8+
**Summary**:
9+
10+
| (instructions:u) | mean | range | count |
11+
|:----------------------------------:|:-----:|:---------------:|:-----:|
12+
| Regressions ❌ <br /> (primary) | 0.7% | [0.2%, 3.7%] | 113 |
13+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.7%] | 75 |
14+
| Improvements ✅ <br /> (primary) | -0.4% | [-0.7%, -0.2%] | 3 |
15+
| Improvements ✅ <br /> (secondary) | -2.3% | [-20.8%, -0.1%] | 30 |
16+
| All ❌✅ (primary) | 0.7% | [-0.7%, 3.7%] | 116 |
17+
18+
19+
2 Regressions, 2 Improvements, 7 Mixed; 2 of them in rollups
20+
42 artifact comparisons made in total
21+
22+
#### Regressions
23+
24+
Rollup of 5 pull requests [#148059](https://github.com/rust-lang/rust/pull/148059) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=38bc2468dea062750e767bdd5c25f8279275baa0&end=75948c8bb3bd37f1e8ee20273a04edea4c1f84f8&stat=instructions:u)
25+
26+
| (instructions:u) | mean | range | count |
27+
|:----------------------------------:|:----:|:------------:|:-----:|
28+
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.4%] | 35 |
29+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.0%, 1.5%] | 34 |
30+
| Improvements ✅ <br /> (primary) | - | - | 0 |
31+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
32+
| All ❌✅ (primary) | 0.2% | [0.1%, 0.4%] | 35 |
33+
34+
Identified by @Zalathar here: https://github.com/rust-lang/rust/pull/148054#issuecomment-3445258937, will be addressed in a followup.
35+
36+
Mark desugared range expression spans with DesugaringKind::RangeExpr [#146069](https://github.com/rust-lang/rust/pull/146069) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=b1b464d6f61ec8c4e609c1328106378c066a9729&end=23fced0fcc5e0ec260d25f04a8b78b269e5e90f0&stat=instructions:u)
37+
38+
| (instructions:u) | mean | range | count |
39+
|:----------------------------------:|:-----:|:--------------:|:-----:|
40+
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.3%] | 8 |
41+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.3%] | 13 |
42+
| Improvements ✅ <br /> (primary) | - | - | 0 |
43+
| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
44+
| All ❌✅ (primary) | 0.2% | [0.1%, 0.3%] | 8 |
45+
46+
Regression was deemed acceptable here: https://github.com/rust-lang/rust/pull/146069#issuecomment-3392694635
47+
48+
Note that the regression mostly affects very short benchmarks (incr-unchanged and such), so this is not as bad as it might seem from the summary.
49+
50+
#### Improvements
51+
52+
refactor: Move to anstream + anstyle for styling [#147207](https://github.com/rust-lang/rust/pull/147207) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4d94478977b5d6c0caa1e66390c6b137520af368&end=dc1feabef242259d61bd930713de3250577c1c71&stat=instructions:u)
53+
54+
| (instructions:u) | mean | range | count |
55+
|:----------------------------------:|:-----:|:--------------:|:-----:|
56+
| Regressions ❌ <br /> (primary) | - | - | 0 |
57+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
58+
| Improvements ✅ <br /> (primary) | -0.1% | [-0.2%, -0.1%] | 11 |
59+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
60+
| All ❌✅ (primary) | -0.1% | [-0.2%, -0.1%] | 11 |
61+
62+
63+
StateTransform: Only load pin field once. [#147493](https://github.com/rust-lang/rust/pull/147493) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=04ff05c9c0cfbca33115c5f1b8bb20a66a54b799&end=79966ae420f38c5861d177356a3446023c090d6d&stat=instructions:u)
64+
65+
| (instructions:u) | mean | range | count |
66+
|:----------------------------------:|:-----:|:--------------:|:-----:|
67+
| Regressions ❌ <br /> (primary) | - | - | 0 |
68+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
69+
| Improvements ✅ <br /> (primary) | - | - | 0 |
70+
| Improvements ✅ <br /> (secondary) | -0.9% | [-1.9%, -0.3%] | 15 |
71+
| All ❌✅ (primary) | - | - | 0 |
72+
73+
74+
#### Mixed
75+
76+
Remove current code for embedding command-line args in PDB [#147022](https://github.com/rust-lang/rust/pull/147022) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=37ec98f5d33c0876a9ffa5ee17dc0895659efe37&end=96fe3c31c2ec385f3d3263346bcdde3d118cdaf6&stat=instructions:u)
77+
78+
| (instructions:u) | mean | range | count |
79+
|:----------------------------------:|:-----:|:---------------:|:-----:|
80+
| Regressions ❌ <br /> (primary) | 1.2% | [1.2%, 1.2%] | 1 |
81+
| Regressions ❌ <br /> (secondary) | 1.2% | [1.2%, 1.2%] | 1 |
82+
| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.2%] | 6 |
83+
| Improvements ✅ <br /> (secondary) | -4.2% | [-20.9%, -0.3%] | 14 |
84+
| All ❌✅ (primary) | -0.1% | [-0.4%, 1.2%] | 7 |
85+
86+
`syn` regression is noise.
87+
88+
Rollup of 7 pull requests [#147957](https://github.com/rust-lang/rust/pull/147957) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0d7813d9a227efc1e5fee4716615b4c417dafcbe&end=b2ee1b333aea9951c3eefa4967098cc763de59ca&stat=instructions:u)
89+
90+
| (instructions:u) | mean | range | count |
91+
|:----------------------------------:|:-----:|:--------------:|:-----:|
92+
| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 2 |
93+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.0%, 0.7%] | 6 |
94+
| Improvements ✅ <br /> (primary) | - | - | 0 |
95+
| Improvements ✅ <br /> (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
96+
| All ❌✅ (primary) | 0.1% | [0.1%, 0.1%] | 2 |
97+
98+
Small regression in the frontend on a few benchmarks. Regressions seem to come from `incremental_verify_ich` which doesn't run by default and `check_mod_privacy`, so I suspect this is either https://github.com/rust-lang/rust/pull/147932 (more code in std), or maybe https://github.com/rust-lang/rust/pull/147768 (refactor on the frontend), or https://github.com/rust-lang/rust/pull/142339 (more frontend work). Unfortunately, we don't have unrolled perf builds for PRs in this rollup, so it's a bit complicated to investigate further. Changes are small, so I don't think this is worth more investigation.
99+
100+
Replace NullOp::SizeOf and NullOp::AlignOf by lang items. [#147793](https://github.com/rust-lang/rust/pull/147793) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=7838ce1a3a0046d02c8a0d30d54465c39cceb8de&end=4b3ba5844e8831c9b3ee5a5643cdff5da0677426&stat=instructions:u)
101+
102+
| (instructions:u) | mean | range | count |
103+
|:----------------------------------:|:-----:|:--------------:|:-----:|
104+
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.5%] | 3 |
105+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 0.7%] | 30 |
106+
| Improvements ✅ <br /> (primary) | -0.4% | [-0.7%, -0.1%] | 4 |
107+
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.7%, -0.1%] | 5 |
108+
| All ❌✅ (primary) | -0.1% | [-0.7%, 0.5%] | 7 |
109+
110+
Justified by https://github.com/rust-lang/rust/pull/147793#issuecomment-3424111320 and https://github.com/rust-lang/rust/pull/147793#issuecomment-3424123985. Post-merge results seem worse, mostly because there's some `deep-vector` spike that came back in https://github.com/rust-lang/rust/pull/142712 (possibly noise?).
111+
112+
privacy: Introduce some caching to type visiting in `DefIdVisitorSkeleton` [#147486](https://github.com/rust-lang/rust/pull/147486) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=11d2046fe9962720558cb15f72541f7fd170dec9&end=6501e64fcb02d22b49d6e59d10a7692ec8095619&stat=instructions:u)
113+
114+
| (instructions:u) | mean | range | count |
115+
|:----------------------------------:|:-----:|:--------------:|:-----:|
116+
| Regressions ❌ <br /> (primary) | 0.2% | [0.0%, 0.4%] | 17 |
117+
| Regressions ❌ <br /> (secondary) | 0.7% | [0.1%, 1.2%] | 6 |
118+
| Improvements ✅ <br /> (primary) | -0.4% | [-0.5%, -0.2%] | 7 |
119+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
120+
| All ❌✅ (primary) | 0.0% | [-0.5%, 0.4%] | 24 |
121+
122+
This PR fixes exponential blowup. Small regressions from caching overhead are expected. Asked the author whether we should add the original exponential case to our benchmarks, it looks like it got discussed here: https://github.com/rust-lang/rust/pull/146128#discussion_r2447992775.
123+
124+
hir_analysis: add missing sizedness bounds [#142712](https://github.com/rust-lang/rust/pull/142712) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2aaa62b89d22b570e560731b03e3d2d6f5c3bbce&end=f435972085b697a1ece8ee6a1ac76efff8d1df7b&stat=instructions:u)
125+
126+
| (instructions:u) | mean | range | count |
127+
|:----------------------------------:|:-----:|:--------------:|:-----:|
128+
| Regressions ❌ <br /> (primary) | 0.8% | [0.1%, 3.6%] | 72 |
129+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.0%, 1.6%] | 63 |
130+
| Improvements ✅ <br /> (primary) | -0.1% | [-0.1%, -0.1%] | 1 |
131+
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.4%, -0.1%] | 23 |
132+
| All ❌✅ (primary) | 0.8% | [-0.1%, 3.6%] | 73 |
133+
134+
Pretty large regresion on many benchmarks. There was no perf run or perf concern mentioned before so it looks unexpected. Pinged the author.
135+
136+
Improve source code for `highlight.rs` [#146992](https://github.com/rust-lang/rust/pull/146992) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2888098522be731065efe51f85eaba8b49fee1a5&end=f977dfc388ea39c9886b7f8c49abce26e6918df6&stat=instructions:u)
137+
138+
| (instructions:u) | mean | range | count |
139+
|:----------------------------------:|:-----:|:--------------:|:-----:|
140+
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.2%] | 6 |
141+
| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.3%] | 3 |
142+
| Improvements ✅ <br /> (primary) | - | - | 0 |
143+
| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
144+
| All ❌✅ (primary) | 0.2% | [0.1%, 0.2%] | 6 |
145+
146+
Small regressions were expected based on the pre-merge run and following comment: https://github.com/rust-lang/rust/pull/146992#issuecomment-3410213402. Overall the impact is not big and looks partially like noise, since the results got better in next PR (which is unrelated).
147+
148+
Deduce captures(none) for a return place and parameters [#147890](https://github.com/rust-lang/rust/pull/147890) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f977dfc388ea39c9886b7f8c49abce26e6918df6&end=f37aa9955f03bb1bc6fe08670cb1ecae534b5815&stat=instructions:u)
149+
150+
| (instructions:u) | mean | range | count |
151+
|:----------------------------------:|:-----:|:--------------:|:-----:|
152+
| Regressions ❌ <br /> (primary) | 0.3% | [0.3%, 0.3%] | 1 |
153+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.1%] | 3 |
154+
| Improvements ✅ <br /> (primary) | -0.2% | [-0.5%, -0.1%] | 31 |
155+
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.6%, -0.0%] | 34 |
156+
| All ❌✅ (primary) | -0.2% | [-0.5%, 0.3%] | 32 |
157+
158+
Improvements outweigh regressions.

0 commit comments

Comments
 (0)