|
| 1 | +# 2025-10-06 Triage Log |
| 2 | + |
| 3 | +Largely a positive week. Big win coming from avoiding unnesesary work for debug log in [#147293](https://github.com/rust-lang/rust/pull/147293), and another one for rustdoc from optimized span representation for highlighter [#147189](https://github.com/rust-lang/rust/pull/147189). Lots of noisy results otherwise. |
| 4 | + |
| 5 | +Triage done by **@panstromek**. |
| 6 | +Revision range: [8d72d3e1..1a3cdd34](https://perf.rust-lang.org/?start=8d72d3e1e96f58ca10059a6bb6e8aecba4a0e9cd&end=1a3cdd34629306fa67624eaa60d73687e7fcf855&absolute=false&stat=instructions%3Au) |
| 7 | + |
| 8 | +**Summary**: |
| 9 | + |
| 10 | +| (instructions:u) | mean | range | count | |
| 11 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 12 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 2.0%] | 10 | |
| 13 | +| Regressions ❌ <br /> (secondary) | 0.4% | [0.0%, 0.8%] | 50 | |
| 14 | +| Improvements ✅ <br /> (primary) | -1.3% | [-5.3%, -0.2%] | 147 | |
| 15 | +| Improvements ✅ <br /> (secondary) | -1.3% | [-12.7%, -0.1%] | 111 | |
| 16 | +| All ❌✅ (primary) | -1.2% | [-5.3%, 2.0%] | 157 | |
| 17 | + |
| 18 | + |
| 19 | +6 Regressions, 3 Improvements, 6 Mixed; 8 of them in rollups |
| 20 | +40 artifact comparisons made in total |
| 21 | + |
| 22 | +#### Regressions |
| 23 | + |
| 24 | +Rollup of 7 pull requests [#147140](https://github.com/rust-lang/rust/pull/147140) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=772f380092b30680313b70a622cafc17f03e6bff&end=7af913fc90968844286e5ff6675ab66afa98cdc6&stat=instructions:u) |
| 25 | + |
| 26 | +| (instructions:u) | mean | range | count | |
| 27 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 28 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.3%] | 6 | |
| 29 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.0%, 0.4%] | 2 | |
| 30 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 31 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 32 | +| All ❌✅ (primary) | 0.2% | [0.1%, 0.3%] | 6 | |
| 33 | + |
| 34 | +Based on perf runs on respective PRs, this seems to be https://github.com/rust-lang/rust/pull/133477. https://github.com/rust-lang/rust/pull/147092 was tested but regressions on that are noise and don't match this PR. Other PR's don't touch benchmarked code. |
| 35 | + |
| 36 | +This could also be noise, since the results somewhat fit a bimodal pattern and changes are tiny, but detailed results show increases in number of executed visibility related queries. |
| 37 | + |
| 38 | +Rollup of 5 pull requests [#147186](https://github.com/rust-lang/rust/pull/147186) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=a2db9280539229a3b8a084a09886670a57bc7e9c&end=42d009c0a9be0f7020a03f85dd47faa00d6d7bdf&stat=instructions:u) |
| 39 | + |
| 40 | +| (instructions:u) | mean | range | count | |
| 41 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 42 | +| Regressions ❌ <br /> (primary) | 3.0% | [3.0%, 3.0%] | 1 | |
| 43 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 44 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 45 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 46 | +| All ❌✅ (primary) | 3.0% | [3.0%, 3.0%] | 1 | |
| 47 | + |
| 48 | +`clap_derive` bimodal noise |
| 49 | + |
| 50 | +Turn ProjectionElem::Subtype into CastKind::Subtype [#147055](https://github.com/rust-lang/rust/pull/147055) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=3369e82c6bc03c5cdb66f730dba6f738b74c8e1d&end=42b384ec0dfcd528d99a4db0a337d9188a9eecaa&stat=instructions:u) |
| 51 | + |
| 52 | +| (instructions:u) | mean | range | count | |
| 53 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 54 | +| Regressions ❌ <br /> (primary) | 3.0% | [3.0%, 3.0%] | 1 | |
| 55 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 56 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 57 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 58 | +| All ❌✅ (primary) | 3.0% | [3.0%, 3.0%] | 1 | |
| 59 | + |
| 60 | +`clap_derive` bimodal noise |
| 61 | + |
| 62 | +Rollup of 9 pull requests [#147261](https://github.com/rust-lang/rust/pull/147261) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4b9c62b4da3e17cee99d3d2052f1c576b188e2a8&end=94ecb52bbeeccc990545d4ebc9e9c35dcaf285e3&stat=instructions:u) |
| 63 | + |
| 64 | +| (instructions:u) | mean | range | count | |
| 65 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 66 | +| Regressions ❌ <br /> (primary) | 2.8% | [2.8%, 2.8%] | 1 | |
| 67 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 1 | |
| 68 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 69 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 70 | +| All ❌✅ (primary) | 2.8% | [2.8%, 2.8%] | 1 | |
| 71 | + |
| 72 | +`clap_derive` bimodal noise and something that looks like optimization shuffling in `coercions` (most of the changes are in the backend). This is a small change in secondary benchmark, so I don't think this is worth more investigation. |
| 73 | + |
| 74 | +Extending `#[rustc_force_inline]` to be applicable to inherent methods [#147231](https://github.com/rust-lang/rust/pull/147231) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=5c7ae0c7ed184c603e5224604a9f33ca0e8e0b36&end=8d603ef2879fd263f8e9aea340b4c035ed7973db&stat=instructions:u) |
| 75 | + |
| 76 | +| (instructions:u) | mean | range | count | |
| 77 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 78 | +| Regressions ❌ <br /> (primary) | 3.1% | [3.1%, 3.1%] | 1 | |
| 79 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 80 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 81 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 82 | +| All ❌✅ (primary) | 3.1% | [3.1%, 3.1%] | 1 | |
| 83 | + |
| 84 | +`clap_derive` bimodal noise |
| 85 | + |
| 86 | +don't make empty ident when printing `'` ident from `extern "'"` [#147377](https://github.com/rust-lang/rust/pull/147377) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=828c2a9afccf3b3ff8133368cfbc8bfe526aaa4d&end=1a3cdd34629306fa67624eaa60d73687e7fcf855&stat=instructions:u) |
| 87 | + |
| 88 | +| (instructions:u) | mean | range | count | |
| 89 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 90 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 91 | +| Regressions ❌ <br /> (secondary) | 0.9% | [0.8%, 1.0%] | 6 | |
| 92 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 93 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 94 | +| All ❌✅ (primary) | - | - | 0 | |
| 95 | + |
| 96 | +Perf results are noise. Looks like `wg-grammar` became bimodal recently. |
| 97 | + |
| 98 | +#### Improvements |
| 99 | + |
| 100 | +Rollup of 11 pull requests [#147220](https://github.com/rust-lang/rust/pull/147220) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=1e1a39441bd11aba541a48ba714d939490fc7b85&end=d4ae855111df8c7ee255bea4c112e74b7d72cf45&stat=instructions:u) |
| 101 | + |
| 102 | +| (instructions:u) | mean | range | count | |
| 103 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 104 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 105 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 1 | |
| 106 | +| Improvements ✅ <br /> (primary) | -1.3% | [-5.4%, -0.2%] | 19 | |
| 107 | +| Improvements ✅ <br /> (secondary) | -3.8% | [-12.6%, -0.2%] | 13 | |
| 108 | +| All ❌✅ (primary) | -1.3% | [-5.4%, -0.2%] | 19 | |
| 109 | + |
| 110 | + |
| 111 | +Test: Ambigious bindings in same namespace with the same res [#147196](https://github.com/rust-lang/rust/pull/147196) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=94ecb52bbeeccc990545d4ebc9e9c35dcaf285e3&end=5c7ae0c7ed184c603e5224604a9f33ca0e8e0b36&stat=instructions:u) |
| 112 | + |
| 113 | +| (instructions:u) | mean | range | count | |
| 114 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 115 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 116 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 117 | +| Improvements ✅ <br /> (primary) | -2.9% | [-2.9%, -2.9%] | 1 | |
| 118 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 119 | +| All ❌✅ (primary) | -2.9% | [-2.9%, -2.9%] | 1 | |
| 120 | + |
| 121 | + |
| 122 | +Rollup of 6 pull requests [#147282](https://github.com/rust-lang/rust/pull/147282) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=8d603ef2879fd263f8e9aea340b4c035ed7973db&end=3b8665c5ab3aeced9b01672404c3764583e722ca&stat=instructions:u) |
| 123 | + |
| 124 | +| (instructions:u) | mean | range | count | |
| 125 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 126 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 127 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 128 | +| Improvements ✅ <br /> (primary) | -2.9% | [-2.9%, -2.9%] | 1 | |
| 129 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 130 | +| All ❌✅ (primary) | -2.9% | [-2.9%, -2.9%] | 1 | |
| 131 | + |
| 132 | + |
| 133 | +#### Mixed |
| 134 | + |
| 135 | +Rollup of 6 pull requests [#147197](https://github.com/rust-lang/rust/pull/147197) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=42d009c0a9be0f7020a03f85dd47faa00d6d7bdf&end=fa3155a644dd62e865825087b403646be01d4cef&stat=instructions:u) |
| 136 | + |
| 137 | +| (instructions:u) | mean | range | count | |
| 138 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 139 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 140 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.3%, 0.3%] | 1 | |
| 141 | +| Improvements ✅ <br /> (primary) | -1.5% | [-2.9%, -0.4%] | 3 | |
| 142 | +| Improvements ✅ <br /> (secondary) | -0.6% | [-1.2%, -0.3%] | 5 | |
| 143 | +| All ❌✅ (primary) | -1.5% | [-2.9%, -0.4%] | 3 | |
| 144 | + |
| 145 | +Improvements outweigh regressions. `coercions` regression also looks like noise. |
| 146 | + |
| 147 | +Split Bound index into Canonical and Bound [#147138](https://github.com/rust-lang/rust/pull/147138) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=42b384ec0dfcd528d99a4db0a337d9188a9eecaa&end=4b9c62b4da3e17cee99d3d2052f1c576b188e2a8&stat=instructions:u) |
| 148 | + |
| 149 | +| (instructions:u) | mean | range | count | |
| 150 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 151 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.4%] | 7 | |
| 152 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.2%] | 11 | |
| 153 | +| Improvements ✅ <br /> (primary) | -1.0% | [-2.8%, -0.1%] | 4 | |
| 154 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-1.1%, -0.0%] | 11 | |
| 155 | +| All ❌✅ (primary) | -0.3% | [-2.8%, 0.4%] | 11 | |
| 156 | + |
| 157 | +Improvements outweigh regressions, but some of those improvements are noise (clap-derive and syn). Main regressions match pre-merge results, so I assume this was deemed acceptable as a part of work on new solver, but I don't see any explicit justification. |
| 158 | + |
| 159 | +Introduce debuginfo to statements in MIR [#142771](https://github.com/rust-lang/rust/pull/142771) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=dd091003ace19d9556c647d87f7a9cd1e8dcc17e&end=8b6b15b877fbceb1ee5d9a5a4746e7515901574a&stat=instructions:u) |
| 160 | + |
| 161 | +| (instructions:u) | mean | range | count | |
| 162 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 163 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.1%, 2.0%] | 9 | |
| 164 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 0.9%] | 43 | |
| 165 | +| Improvements ✅ <br /> (primary) | -0.3% | [-1.2%, -0.1%] | 101 | |
| 166 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-1.0%, -0.1%] | 102 | |
| 167 | +| All ❌✅ (primary) | -0.3% | [-1.2%, 2.0%] | 110 | |
| 168 | + |
| 169 | +Improvements outweigh regressions. Some secondary regressions are just noise (`wg-grammar`), the biggest meaningful change seems to be `diesel` opt, as mentioned in https://github.com/rust-lang/rust/pull/142771#issuecomment-3367798805, due to more inlining, `syn` seems to be a similar case. |
| 170 | + |
| 171 | +Rollup of 10 pull requests [#147340](https://github.com/rust-lang/rust/pull/147340) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=99ca0ae87ba5571acee116ea83d1f9e88a7bf8d8&end=2cb4e7dce84fdebc0279159f1082f92b99299d87&stat=instructions:u) |
| 172 | + |
| 173 | +| (instructions:u) | mean | range | count | |
| 174 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 175 | +| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 2 | |
| 176 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.3%] | 12 | |
| 177 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 178 | +| Improvements ✅ <br /> (secondary) | -0.9% | [-1.0%, -0.8%] | 6 | |
| 179 | +| All ❌✅ (primary) | 0.1% | [0.1%, 0.1%] | 2 | |
| 180 | + |
| 181 | +Non-doc changes are mostly noise. Doc changes are not super clear to me. Even hello-world changed a tiny bit, so maybe this is just caused by the number of std changes? Some of those changes also mirror https://github.com/rust-lang/rust/pull/142771 dip, so it could also be noise. |
| 182 | + |
| 183 | +Either way, all doc changes are small and mostly secondary, I think we don't need to look more deeply into it. |
| 184 | + |
| 185 | +Avoid getting `dep_dep_node` unnecessarily. [#147293](https://github.com/rust-lang/rust/pull/147293) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2cb4e7dce84fdebc0279159f1082f92b99299d87&end=227ac7c3cd486872d5c2352b3df02b571500e53a&stat=instructions:u) |
| 186 | + |
| 187 | +| (instructions:u) | mean | range | count | |
| 188 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 189 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 190 | +| Regressions ❌ <br /> (secondary) | 0.9% | [0.8%, 1.0%] | 6 | |
| 191 | +| Improvements ✅ <br /> (primary) | -1.3% | [-3.5%, -0.2%] | 115 | |
| 192 | +| Improvements ✅ <br /> (secondary) | -1.1% | [-2.6%, -0.2%] | 61 | |
| 193 | +| All ❌✅ (primary) | -1.3% | [-3.5%, -0.2%] | 115 | |
| 194 | + |
| 195 | +`wg-grammar` regressions are noise, this is clearly a win otherwise. |
| 196 | + |
| 197 | +Rollup of 7 pull requests [#147363](https://github.com/rust-lang/rust/pull/147363) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=227ac7c3cd486872d5c2352b3df02b571500e53a&end=e2c96cc06bdbdbc6f59c7551194d6a742260d6ff&stat=instructions:u) |
| 198 | + |
| 199 | +| (instructions:u) | mean | range | count | |
| 200 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 201 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 202 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 1 | |
| 203 | +| Improvements ✅ <br /> (primary) | -0.5% | [-1.6%, -0.2%] | 6 | |
| 204 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-1.6%, -0.0%] | 4 | |
| 205 | +| All ❌✅ (primary) | -0.5% | [-1.6%, -0.2%] | 6 | |
| 206 | + |
| 207 | + |
| 208 | +Improvements outweigh a small regression in secondary stress test. |
0 commit comments