|
| 1 | +# 2025-05-12 Triage Log |
| 2 | + |
| 3 | +Lot of changes this week. Overall result is positive, with one large win in type check. |
| 4 | + |
| 5 | +Triage done by **@panstromek**. |
| 6 | +Revision range: [62c5f58f..718ddf66](https://perf.rust-lang.org/?start=62c5f58f57670ce65e7fec34f8c4ba00c27da2d9&end=718ddf660e6a1802c39b4962cf7eaa4db57025ef&absolute=false&stat=instructions%3Au) |
| 7 | + |
| 8 | +**Summary**: |
| 9 | + |
| 10 | +| (instructions:u) | mean | range | count | |
| 11 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 12 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 1.4%] | 113 | |
| 13 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.5%] | 54 | |
| 14 | +| Improvements ✅ <br /> (primary) | -2.5% | [-22.5%, -0.3%] | 45 | |
| 15 | +| Improvements ✅ <br /> (secondary) | -0.9% | [-2.3%, -0.2%] | 10 | |
| 16 | +| All ❌✅ (primary) | -0.3% | [-22.5%, 1.4%] | 158 | |
| 17 | + |
| 18 | + |
| 19 | +8 Regressions, 5 Improvements, 3 Mixed; 6 of them in rollups |
| 20 | +47 artifact comparisons made in total |
| 21 | + |
| 22 | +#### Regressions |
| 23 | + |
| 24 | +Don't name variables from external macros in borrow errors. [#140580](https://github.com/rust-lang/rust/pull/140580) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=62c5f58f57670ce65e7fec34f8c4ba00c27da2d9&end=ab62d56603293e9264b4d811d2d6f5b49a3264f9&stat=instructions:u) |
| 25 | + |
| 26 | +| (instructions:u) | mean | range | count | |
| 27 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 28 | +| Regressions ❌ <br /> (primary) | 1.7% | [1.7%, 1.7%] | 1 | |
| 29 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 30 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 31 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 32 | +| All ❌✅ (primary) | 1.7% | [1.7%, 1.7%] | 1 | |
| 33 | + |
| 34 | +Within noise, triaged by Mark. |
| 35 | + |
| 36 | +Weekly `cargo update` [#140353](https://github.com/rust-lang/rust/pull/140353) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2958d8969cb3096a533927a566e72477c55d8653&end=cd55868a8db4b9394be64082a290f11b1e03b5d3&stat=instructions:u) |
| 37 | + |
| 38 | +| (instructions:u) | mean | range | count | |
| 39 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 40 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.2%, 1.2%] | 8 | |
| 41 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.2%] | 11 | |
| 42 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 43 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 44 | +| All ❌✅ (primary) | 0.4% | [0.2%, 1.2%] | 8 | |
| 45 | + |
| 46 | +Regressions are small, but look real, mostly in backend. Even with non-relevant results, this is almost all just regressions. Left a comment and we will see if this is worth more investigation. |
| 47 | + |
| 48 | +Rollup of 4 pull requests [#140708](https://github.com/rust-lang/rust/pull/140708) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=1a95cc6f9d950992ba27746e45caf40118581cb1&end=27d6200a70601f6fcf419bf2f9e37989f3624ca4&stat=instructions:u) |
| 49 | + |
| 50 | +| (instructions:u) | mean | range | count | |
| 51 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 52 | +| Regressions ❌ <br /> (primary) | 1.1% | [1.1%, 1.1%] | 1 | |
| 53 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 54 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 55 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 56 | +| All ❌✅ (primary) | 1.1% | [1.1%, 1.1%] | 1 | |
| 57 | + |
| 58 | +Small `nalgebra` regression, looks spurious. The benchmark returned to previous state afterwards and looks like it became bi-modal. |
| 59 | + |
| 60 | +Use thread local dep graph encoding [#139758](https://github.com/rust-lang/rust/pull/139758) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=db0e836148accac8a22532e3596ac612b63c2d8e&end=3ef8e64ce9f72ee8d600d55bc43b36eed069b252&stat=instructions:u) |
| 61 | + |
| 62 | +| (instructions:u) | mean | range | count | |
| 63 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 64 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.7%] | 90 | |
| 65 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.5%] | 12 | |
| 66 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 67 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 68 | +| All ❌✅ (primary) | 0.3% | [0.2%, 0.7%] | 90 | |
| 69 | + |
| 70 | +Small regression on a lot of benchmarks, mostly tiny incremental-unchanged scenarios. This is supposed to improve incremental performance with parallel compiler, which is not yet covered by benchmarks. |
| 71 | + |
| 72 | +borrowck nested items in dead code [#140590](https://github.com/rust-lang/rust/pull/140590) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=3ef8e64ce9f72ee8d600d55bc43b36eed069b252&end=e9f8103f93f8ce2fa2c15c0c6796ec821f8ae15d&stat=instructions:u) |
| 73 | + |
| 74 | +| (instructions:u) | mean | range | count | |
| 75 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 76 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.5%] | 29 | |
| 77 | +| Regressions ❌ <br /> (secondary) | 0.6% | [0.2%, 1.5%] | 24 | |
| 78 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 79 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 80 | +| All ❌✅ (primary) | 0.3% | [0.2%, 0.5%] | 29 | |
| 81 | + |
| 82 | +Fixes P-critical regression. Perf reggression is expected as this is doing more work, which will also be necessary to stabilize new solver. |
| 83 | + |
| 84 | +Remove `Ident::empty` [#140252](https://github.com/rust-lang/rust/pull/140252) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c8b7f32434c0306db5c1b974ee43443746098a92&end=a7b1b24587dcbebf12455c41ed828d9b486487be&stat=instructions:u) |
| 85 | + |
| 86 | +| (instructions:u) | mean | range | count | |
| 87 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 88 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.1%, 1.1%] | 115 | |
| 89 | +| Regressions ❌ <br /> (secondary) | 0.4% | [0.2%, 0.7%] | 41 | |
| 90 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 91 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 92 | +| All ❌✅ (primary) | 0.3% | [0.1%, 1.1%] | 115 | |
| 93 | + |
| 94 | +Caused by new `assert!`. Fixed by changing to `debug_assert!` in a followup [#140880](https://github.com/rust-lang/rust/pull/140880). |
| 95 | + |
| 96 | +Bump version number to 1.89.0 [#140839](https://github.com/rust-lang/rust/pull/140839) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=da1e442ebde8d527f3872c0cac5b371ff6ea0cc7&end=dcecb99176edf2eec51613730937d21cdd5c8f6e&stat=instructions:u) |
| 97 | + |
| 98 | +| (instructions:u) | mean | range | count | |
| 99 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 100 | +| Regressions ❌ <br /> (primary) | 1.1% | [1.1%, 1.1%] | 1 | |
| 101 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 2 | |
| 102 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 103 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 104 | +| All ❌✅ (primary) | 1.1% | [1.1%, 1.1%] | 1 | |
| 105 | + |
| 106 | +Regressions are spurious. `nalgebra` is bimodal and returned to previous state in following commit. Secondary regressions in `tt-muncher` also later recovered. |
| 107 | + |
| 108 | +Update `backtrace` in Cargo.lock [#140705](https://github.com/rust-lang/rust/pull/140705) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c6faa1b22e735494677a2410ee281ca5f646e747&end=bfb44c8155dc102358deeb27acef44abe030b30e&stat=instructions:u) |
| 109 | + |
| 110 | +| (instructions:u) | mean | range | count | |
| 111 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 112 | +| Regressions ❌ <br /> (primary) | 1.0% | [1.0%, 1.0%] | 1 | |
| 113 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 114 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 115 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 116 | +| All ❌✅ (primary) | 1.0% | [1.0%, 1.0%] | 1 | |
| 117 | + |
| 118 | +Another `nalgebra` bimodality. Returned to previous state in following commit. |
| 119 | + |
| 120 | +#### Improvements |
| 121 | + |
| 122 | +Rollup of 6 pull requests [#140646](https://github.com/rust-lang/rust/pull/140646) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=13e87909494f2f31bce51bc106e2b629420d1235&end=2958d8969cb3096a533927a566e72477c55d8653&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) | -1.1% | [-1.1%, -1.1%] | 1 | |
| 129 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 130 | +| All ❌✅ (primary) | -1.1% | [-1.1%, -1.1%] | 1 | |
| 131 | + |
| 132 | + |
| 133 | +Rollup of 4 pull requests [#140702](https://github.com/rust-lang/rust/pull/140702) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f5d3fe273b8b9e7125bf8856d44793b6cc4b6735&end=1a95cc6f9d950992ba27746e45caf40118581cb1&stat=instructions:u) |
| 134 | + |
| 135 | +| (instructions:u) | mean | range | count | |
| 136 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 137 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 138 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 139 | +| Improvements ✅ <br /> (primary) | -1.0% | [-1.0%, -1.0%] | 1 | |
| 140 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-0.5%, -0.5%] | 1 | |
| 141 | +| All ❌✅ (primary) | -1.0% | [-1.0%, -1.0%] | 1 | |
| 142 | + |
| 143 | + |
| 144 | +Rollup of 9 pull requests [#140726](https://github.com/rust-lang/rust/pull/140726) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=669c1ab9677ae8dc1d7db30b75fd173d06c0c75a&end=891b8525477f5c41a9e56d7b70d64b41e7c344e3&stat=instructions:u) |
| 145 | + |
| 146 | +| (instructions:u) | mean | range | count | |
| 147 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 148 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 149 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 150 | +| Improvements ✅ <br /> (primary) | -0.4% | [-1.0%, -0.2%] | 4 | |
| 151 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 152 | +| All ❌✅ (primary) | -0.4% | [-1.0%, -0.2%] | 4 | |
| 153 | + |
| 154 | + |
| 155 | +Rollup of 7 pull requests [#140869](https://github.com/rust-lang/rust/pull/140869) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=dcecb99176edf2eec51613730937d21cdd5c8f6e&end=fd9fad6dbcc1bae3cba2a8634339ffa620a49f28&stat=instructions:u) |
| 156 | + |
| 157 | +| (instructions:u) | mean | range | count | |
| 158 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 159 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 160 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 161 | +| Improvements ✅ <br /> (primary) | -1.0% | [-1.0%, -1.0%] | 1 | |
| 162 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 163 | +| All ❌✅ (primary) | -1.0% | [-1.0%, -1.0%] | 1 | |
| 164 | + |
| 165 | + |
| 166 | +Make the assertion in `Ident::new` debug-only. [#140880](https://github.com/rust-lang/rust/pull/140880) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=bfb44c8155dc102358deeb27acef44abe030b30e&end=7e432c456bf58ad436f3a92c2a3e3c27f399f14a&stat=instructions:u) |
| 167 | + |
| 168 | +| (instructions:u) | mean | range | count | |
| 169 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 170 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 171 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 172 | +| Improvements ✅ <br /> (primary) | -0.3% | [-1.1%, -0.1%] | 115 | |
| 173 | +| Improvements ✅ <br /> (secondary) | -0.4% | [-0.7%, -0.2%] | 34 | |
| 174 | +| All ❌✅ (primary) | -0.3% | [-1.1%, -0.1%] | 115 | |
| 175 | + |
| 176 | +Fixes the `assert!` regression from above. |
| 177 | + |
| 178 | +#### Mixed |
| 179 | + |
| 180 | +Rollup of 4 pull requests [#140650](https://github.com/rust-lang/rust/pull/140650) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=cd55868a8db4b9394be64082a290f11b1e03b5d3&end=54d024e4bf462c77a86c4126d7e66d89b64f053a&stat=instructions:u) |
| 181 | + |
| 182 | +| (instructions:u) | mean | range | count | |
| 183 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 184 | +| Regressions ❌ <br /> (primary) | 0.7% | [0.7%, 0.7%] | 1 | |
| 185 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 186 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.3%, -0.3%] | 2 | |
| 187 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 188 | +| All ❌✅ (primary) | 0.0% | [-0.3%, 0.7%] | 3 | |
| 189 | + |
| 190 | +Regression in `image` looks real. It's mostly coming from backend, so it's probably some code shuffling that allows LLVM to do discover more optimizations. More detailed investigation is in the [PR comment](https://github.com/rust-lang/rust/pull/140650#issuecomment-2872386051) |
| 191 | + |
| 192 | +Do not gather local all together at the beginning of typeck [#140561](https://github.com/rust-lang/rust/pull/140561) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=651e9cf327358b28db7e37a2ae61727f4a2ef232&end=f5d3fe273b8b9e7125bf8856d44793b6cc4b6735&stat=instructions:u) |
| 193 | + |
| 194 | +| (instructions:u) | mean | range | count | |
| 195 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 196 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.4%, 0.4%] | 1 | |
| 197 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.4%] | 3 | |
| 198 | +| Improvements ✅ <br /> (primary) | -1.8% | [-22.4%, -0.1%] | 73 | |
| 199 | +| Improvements ✅ <br /> (secondary) | -0.9% | [-2.0%, -0.3%] | 12 | |
| 200 | +| All ❌✅ (primary) | -1.8% | [-22.4%, 0.4%] | 74 | |
| 201 | + |
| 202 | +Large improvements outweigh regresions. Regressions are spurious (all regressed crates returned back to previous state in following commit). |
| 203 | + |
| 204 | +Merge typeck loop with static/const item eval loop [#140854](https://github.com/rust-lang/rust/pull/140854) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=7e432c456bf58ad436f3a92c2a3e3c27f399f14a&end=b10555674f355aca2bfe974e50a0b9ab48eb1d87&stat=instructions:u) |
| 205 | + |
| 206 | +| (instructions:u) | mean | range | count | |
| 207 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 208 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.3%] | 3 | |
| 209 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 210 | +| Improvements ✅ <br /> (primary) | -0.4% | [-0.4%, -0.3%] | 3 | |
| 211 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 212 | +| All ❌✅ (primary) | -0.1% | [-0.4%, 0.3%] | 6 | |
| 213 | + |
| 214 | +All changes in `unicode-normalization`. Incremental full improvements outweigh small non-incremental regressions. This matches results in pre-merge run, so I assume it's expected. |
0 commit comments