Skip to content

Commit b5095bf

Browse files
Merge pull request #1767 from Mark-Simulacrum/triage
Add triage for this week
2 parents 42e9168 + 022edbe commit b5095bf

File tree

1 file changed

+167
-0
lines changed

1 file changed

+167
-0
lines changed

triage/2023-12-11.md

+167
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
# 2023-12-11 Triage Log
2+
3+
A quiet week overall. A few smaller crate (e.g., helloworld) benchmarks saw
4+
significant improvements in
5+
[#118568](https://github.com/rust-lang/rust/pull/118568), but this merely
6+
restores performance regressed earlier.
7+
8+
Triage done by **@simulacrum**.
9+
Revision range: [9358642..5701093](https://perf.rust-lang.org/?start=9358642e3b8560eee89e6f40aa996c8394a3db31&end=57010939ed1d00076b4af0ed06a81ec69ea5e4a8&absolute=false&stat=instructions%3Au)
10+
11+
**Summary**:
12+
13+
| (instructions:u) | mean | range | count |
14+
|:----------------------------------:|:-----:|:---------------:|:-----:|
15+
| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 1.3%] | 111 |
16+
| Regressions ❌ <br /> (secondary) | 0.7% | [0.1%, 1.5%] | 34 |
17+
| Improvements ✅ <br /> (primary) | -5.2% | [-11.1%, -0.5%] | 18 |
18+
| Improvements ✅ <br /> (secondary) | -4.6% | [-10.5%, -0.4%] | 72 |
19+
| All ❌✅ (primary) | -0.3% | [-11.1%, 1.3%] | 129 |
20+
21+
5 Regressions, 2 Improvements, 3 Mixed; 2 of them in rollups
22+
69 artifact comparisons made in total
23+
24+
#### Regressions
25+
26+
compile-time evaluation: detect writes through immutable pointers [#118324](https://github.com/rust-lang/rust/pull/118324) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f16c81fa79940da0c3e4cedd7b064ecdee2278bf&end=0e7f91b75e7484a713e2f644212cfc1aa7478a28&stat=instructions:u)
27+
28+
| (instructions:u) | mean | range | count |
29+
|:----------------------------------:|:----:|:------------:|:-----:|
30+
| Regressions ❌ <br /> (primary) | - | - | 0 |
31+
| Regressions ❌ <br /> (secondary) | 0.9% | [0.3%, 1.4%] | 12 |
32+
| Improvements ✅ <br /> (primary) | - | - | 0 |
33+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
34+
| All ❌✅ (primary) | - | - | 0 |
35+
36+
> I feel like the remaining regression is small enough to be acceptable. We're doing more checks in const-eval, and there are no regressions in the builds of real crates.
37+
38+
(https://github.com/rust-lang/rust/pull/118324#issuecomment-1832836626)
39+
40+
Introduce support for `async gen` blocks [#118420](https://github.com/rust-lang/rust/pull/118420) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2b399b52753eac351067e73f4ff0de829443b9a7&end=f967532a47eb728ada44473a5c4c2eca1a45fe30&stat=instructions:u)
41+
42+
| (instructions:u) | mean | range | count |
43+
|:----------------------------------:|:----:|:------------:|:-----:|
44+
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.3%] | 23 |
45+
| Regressions ❌ <br /> (secondary) | 0.4% | [0.2%, 0.7%] | 3 |
46+
| Improvements ✅ <br /> (primary) | - | - | 0 |
47+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
48+
| All ❌✅ (primary) | 0.2% | [0.1%, 0.3%] | 23 |
49+
50+
New functionality costs some additional time across some benchmarks.
51+
52+
Rollup of 6 pull requests [#118763](https://github.com/rust-lang/rust/pull/118763) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2d2f1b2099a9cf10d4300042f5ea15a65a203dae&end=dc3a3539d595272c6a578c35f5eb6a85b867aca8&stat=instructions:u)
53+
54+
| (instructions:u) | mean | range | count |
55+
|:----------------------------------:|:----:|:------------:|:-----:|
56+
| Regressions ❌ <br /> (primary) | 0.4% | [0.2%, 0.5%] | 18 |
57+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
58+
| Improvements ✅ <br /> (primary) | - | - | 0 |
59+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
60+
| All ❌✅ (primary) | 0.4% | [0.2%, 0.5%] | 18 |
61+
62+
> We do a little bit more work after that PR because the reachable set is
63+
> slightly bigger and that in turn means more MIR gets encoded and things like
64+
> that.
65+
66+
(https://github.com/rust-lang/rust/pull/118763#issuecomment-1850073772)
67+
68+
Don't warn an empty pattern unreachable if we're not sure the data is valid [#118308](https://github.com/rust-lang/rust/pull/118308) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c722d5191c26bbeea77dee2c06d814075ae785f2&end=06e02d5b259c1e88cbf0c74366d9e0a4c7cfd6d9&stat=instructions:u)
69+
70+
| (instructions:u) | mean | range | count |
71+
|:----------------------------------:|:----:|:------------:|:-----:|
72+
| Regressions ❌ <br /> (primary) | 0.6% | [0.2%, 0.9%] | 4 |
73+
| Regressions ❌ <br /> (secondary) | 1.0% | [1.0%, 1.0%] | 6 |
74+
| Improvements ✅ <br /> (primary) | - | - | 0 |
75+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
76+
| All ❌✅ (primary) | 0.6% | [0.2%, 0.9%] | 4 |
77+
78+
> Yeah I expected a perf regression because of the validity tracking. It adds
79+
> an extra step for every constructor we try, and match-stress has an enum with
80+
> 8000 of these. I don't think there's a way around it, I need to know the
81+
> validity of every inspected place.
82+
83+
(https://github.com/rust-lang/rust/pull/118308#issuecomment-1831103831)
84+
85+
This adds costs particularly to crates with lots or large matches, seen across
86+
a few primary workloads and within rustc bootstrap. This is a diagnostic
87+
correctness fix, so some cost is acceptable.
88+
89+
Restore `const PartialEq` [#118661](https://github.com/rust-lang/rust/pull/118661) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=8b1ba11cb1176cd7b8a0f4b55d1c97ee9fd3662d&end=6f40082313d8374bdf962aba943a712d5322fae6&stat=instructions:u)
90+
91+
| (instructions:u) | mean | range | count |
92+
|:----------------------------------:|:-----:|:--------------:|:-----:|
93+
| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.4%] | 9 |
94+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.6%] | 11 |
95+
| Improvements ✅ <br /> (primary) | - | - | 0 |
96+
| Improvements ✅ <br /> (secondary) | -0.8% | [-0.8%, -0.8%] | 1 |
97+
| All ❌✅ (primary) | 0.3% | [0.2%, 0.4%] | 9 |
98+
99+
Feature addition carrying likely unavoidable cost in some benchmarks.
100+
101+
#### Improvements
102+
103+
Avoid adding builtin functions to `symbols.o` [#118568](https://github.com/rust-lang/rust/pull/118568) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0e7f91b75e7484a713e2f644212cfc1aa7478a28&end=503e129328080e924c0ddfca6abf4c2812580102&stat=instructions:u)
104+
105+
| (instructions:u) | mean | range | count |
106+
|:----------------------------------:|:-----:|:---------------:|:-----:|
107+
| Regressions ❌ <br /> (primary) | - | - | 0 |
108+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
109+
| Improvements ✅ <br /> (primary) | -6.6% | [-11.0%, -0.7%] | 14 |
110+
| Improvements ✅ <br /> (secondary) | -5.0% | [-10.7%, -0.3%] | 66 |
111+
| All ❌✅ (primary) | -6.6% | [-11.0%, -0.7%] | 14 |
112+
113+
Smaller benchmarks show significant improvements, recovering a past performance
114+
regression. See PR description for details.
115+
116+
Rollup of 8 pull requests [#118838](https://github.com/rust-lang/rust/pull/118838) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=57010939ed1d00076b4af0ed06a81ec69ea5e4a8&end=21cce21d8c012f14cf74d5afddd795d324600dac&stat=instructions:u)
117+
118+
| (instructions:u) | mean | range | count |
119+
|:----------------------------------:|:-----:|:--------------:|:-----:|
120+
| Regressions ❌ <br /> (primary) | - | - | 0 |
121+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
122+
| Improvements ✅ <br /> (primary) | - | - | 0 |
123+
| Improvements ✅ <br /> (secondary) | -0.9% | [-1.0%, -0.9%] | 6 |
124+
| All ❌✅ (primary) | - | - | 0 |
125+
126+
https://github.com/rust-lang/rust/pull/118822 is the likely cause, but not
127+
worth digging deeper on this improvement.
128+
129+
#### Mixed
130+
131+
split `NormalizesTo` out of `Projection` 3 [#118725](https://github.com/rust-lang/rust/pull/118725) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d6fa38a9b2426487e010a6c16862132f89755e41&end=21982a4383a92ec00ec11204584b86f3f17c92ef&stat=instructions:u)
132+
133+
| (instructions:u) | mean | range | count |
134+
|:----------------------------------:|:-----:|:--------------:|:-----:|
135+
| Regressions ❌ <br /> (primary) | 0.4% | [0.2%, 0.9%] | 17 |
136+
| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.3%] | 3 |
137+
| Improvements ✅ <br /> (primary) | -2.6% | [-2.6%, -2.6%] | 1 |
138+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
139+
| All ❌✅ (primary) | 0.3% | [-2.6%, 0.9%] | 18 |
140+
141+
Moving code around in hot area, with slightly different work being done. Seems to add some cost to a few primary benchmarks.
142+
143+
See details in https://github.com/rust-lang/rust/pull/118725#issuecomment-1847121861
144+
145+
never_patterns: Parse match arms with no body [#118527](https://github.com/rust-lang/rust/pull/118527) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ae612bedcbfc7098d1711eb35bc7ca994eb17a4c&end=2b399b52753eac351067e73f4ff0de829443b9a7&stat=instructions:u)
146+
147+
| (instructions:u) | mean | range | count |
148+
|:----------------------------------:|:-----:|:--------------:|:-----:|
149+
| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 1 |
150+
| Regressions ❌ <br /> (secondary) | - | - | 0 |
151+
| Improvements ✅ <br /> (primary) | -0.9% | [-1.0%, -0.8%] | 2 |
152+
| Improvements ✅ <br /> (secondary) | - | - | 0 |
153+
| All ❌✅ (primary) | -0.5% | [-1.0%, 0.1%] | 3 |
154+
155+
Regression is justified by the extra work for this new feature.
156+
157+
Improve `print_tts` [#114571](https://github.com/rust-lang/rust/pull/114571) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d86d65bbc19b928387f68427fcc3a0da498d8a19&end=a9cb8ee82132b6ef0f8db3e3bc25f98dfae08c04&stat=instructions:u)
158+
159+
| (instructions:u) | mean | range | count |
160+
|:----------------------------------:|:-----:|:--------------:|:-----:|
161+
| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.2%] | 1 |
162+
| Regressions ❌ <br /> (secondary) | 0.8% | [0.5%, 1.0%] | 8 |
163+
| Improvements ✅ <br /> (primary) | - | - | 0 |
164+
| Improvements ✅ <br /> (secondary) | -0.2% | [-0.3%, -0.2%] | 2 |
165+
| All ❌✅ (primary) | 0.2% | [0.2%, 0.2%] | 1 |
166+
167+
Regressions mostly limited to secondary benchmarks. Single primary regression is in incr-unchanged and is relatively small.

0 commit comments

Comments
 (0)