|
| 1 | +# 2025-04-08 Triage Log |
| 2 | + |
| 3 | +A busy week with lots of performance improvements. The largest performance improvement was from a revert of a previous week's regression just in time for the beta release. Another large improvement came to small tweaks in the query system showing that there still are opportunities for small, targeted performance improvements in the compiler. |
| 4 | + |
| 5 | +Triage done by **@rylev**. |
| 6 | +Revision range: [2ea33b59..e643f59f](https://perf.rust-lang.org/?start=2ea33b591050c4ca1a3752830b29112638faecf6&end=e643f59f6da3a84f43e75dea99afaa5b041ea6bf&absolute=false&stat=instructions%3Au) |
| 7 | + |
| 8 | +**Summary**: |
| 9 | + |
| 10 | +| (instructions:u) | mean | range | count | |
| 11 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 12 | +| Regressions ❌ <br /> (primary) | 0.8% | [0.2%, 1.9%] | 11 | |
| 13 | +| Regressions ❌ <br /> (secondary) | 8.4% | [0.2%, 38.5%] | 16 | |
| 14 | +| Improvements ✅ <br /> (primary) | -1.0% | [-35.1%, -0.2%] | 206 | |
| 15 | +| Improvements ✅ <br /> (secondary) | -1.8% | [-8.6%, -0.1%] | 155 | |
| 16 | +| All ❌✅ (primary) | -0.9% | [-35.1%, 1.9%] | 217 | |
| 17 | + |
| 18 | + |
| 19 | +2 Regressions, 9 Improvements, 5 Mixed; 4 of them in rollups |
| 20 | +48 artifact comparisons made in total |
| 21 | + |
| 22 | +#### Regressions |
| 23 | + |
| 24 | +Initial support for auto traits with default bounds [#120706](https://github.com/rust-lang/rust/pull/120706) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4fd8c04da0674af2c51310c9982370bfadfa1b98&end=9e14530c7c27123484658c88c2148a552b01e73b&stat=instructions:u) |
| 25 | + |
| 26 | +| (instructions:u) | mean | range | count | |
| 27 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 28 | +| Regressions ❌ <br /> (primary) | 0.8% | [0.2%, 1.3%] | 7 | |
| 29 | +| Regressions ❌ <br /> (secondary) | 0.4% | [0.2%, 1.1%] | 21 | |
| 30 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 31 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 32 | +| All ❌✅ (primary) | 0.8% | [0.2%, 1.3%] | 7 | |
| 33 | +- A potential perf fix was tried in https://github.com/rust-lang/rust/pull/139365, but it did not work. |
| 34 | +- Asked the author and reviewer if there was anything else to try. |
| 35 | + |
| 36 | + |
| 37 | +Do not visit whole crate to compute `lints_that_dont_need_to_run`. [#133781](https://github.com/rust-lang/rust/pull/133781) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=e643f59f6da3a84f43e75dea99afaa5b041ea6bf&end=c6c179662d5a6fc0520e05b5c0682dcfc7333f77&stat=instructions:u) |
| 38 | + |
| 39 | +| (instructions:u) | mean | range | count | |
| 40 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 41 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.4%] | 7 | |
| 42 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 0.6%] | 25 | |
| 43 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 44 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 45 | +| All ❌✅ (primary) | 0.3% | [0.2%, 0.4%] | 7 | |
| 46 | +- Seems like the perf regressions are a revert back to the mean after https://github.com/rust-lang/rust/pull/139482 which looks like a fluke run. |
| 47 | + |
| 48 | + |
| 49 | +#### Improvements |
| 50 | + |
| 51 | +Revert "Rollup merge of #136127 - WaffleLapkin:dyn_ptr_unwrap_cast, r=compiler-errors" [#138892](https://github.com/rust-lang/rust/pull/138892) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=10a76d634781180b4f5402c519f0c237d3be6ee6&end=ab5b1be771e63ea3736d8830e7b661decc6b1abc&stat=instructions:u) |
| 52 | + |
| 53 | +| (instructions:u) | mean | range | count | |
| 54 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 55 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 56 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.0%, 0.2%] | 2 | |
| 57 | +| Improvements ✅ <br /> (primary) | -0.7% | [-1.5%, -0.2%] | 99 | |
| 58 | +| Improvements ✅ <br /> (secondary) | -3.0% | [-11.3%, -0.1%] | 105 | |
| 59 | +| All ❌✅ (primary) | -0.7% | [-1.5%, -0.2%] | 99 | |
| 60 | + |
| 61 | + |
| 62 | +Move `ast::Item::ident` into `ast::ItemKind` [#138740](https://github.com/rust-lang/rust/pull/138740) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=97ea17b71aba0badfe9c8295f57a434bf79bdb72&end=ed201574c5d6117fb4a491db545c96fa4289ea9c&stat=instructions:u) |
| 63 | + |
| 64 | +| (instructions:u) | mean | range | count | |
| 65 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 66 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 67 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 68 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.3%, -0.1%] | 3 | |
| 69 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-0.8%, -0.3%] | 2 | |
| 70 | +| All ❌✅ (primary) | -0.2% | [-0.3%, -0.1%] | 3 | |
| 71 | + |
| 72 | + |
| 73 | +Misc query tweaks [#139234](https://github.com/rust-lang/rust/pull/139234) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d5b4c2e4f19b6d7037371cdaecc3cc2c701c68df&end=365806089020f60a50391133a1430c40bc86963c&stat=instructions:u) |
| 74 | + |
| 75 | +| (instructions:u) | mean | range | count | |
| 76 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 77 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 78 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 79 | +| Improvements ✅ <br /> (primary) | -0.6% | [-1.4%, -0.2%] | 71 | |
| 80 | +| Improvements ✅ <br /> (secondary) | -1.3% | [-2.2%, -0.6%] | 9 | |
| 81 | +| All ❌✅ (primary) | -0.6% | [-1.4%, -0.2%] | 71 | |
| 82 | + |
| 83 | + |
| 84 | +Rollup of 7 pull requests [#139301](https://github.com/rust-lang/rust/pull/139301) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=946aea0b3d9f43e57953ce5094d8e4a2a244ce71&end=82eb03ec6220ee435e0e07fdaf3f0a68a79aab17&stat=instructions:u) |
| 85 | + |
| 86 | +| (instructions:u) | mean | range | count | |
| 87 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 88 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 89 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 90 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.5%, -0.2%] | 8 | |
| 91 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.5%, -0.1%] | 35 | |
| 92 | +| All ❌✅ (primary) | -0.3% | [-0.5%, -0.2%] | 8 | |
| 93 | + |
| 94 | + |
| 95 | +Rollup of 9 pull requests [#139336](https://github.com/rust-lang/rust/pull/139336) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=00095b3da4f23d9b3e7a809ac6a4e2b2530df84c&end=4fd8c04da0674af2c51310c9982370bfadfa1b98&stat=instructions:u) |
| 96 | + |
| 97 | +| (instructions:u) | mean | range | count | |
| 98 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 99 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 100 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 101 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.3%, -0.2%] | 6 | |
| 102 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.6%, -0.1%] | 21 | |
| 103 | +| All ❌✅ (primary) | -0.3% | [-0.3%, -0.2%] | 6 | |
| 104 | + |
| 105 | + |
| 106 | +Folder experiment: Monomorphize region resolver [#139287](https://github.com/rust-lang/rust/pull/139287) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=9e14530c7c27123484658c88c2148a552b01e73b&end=f174fd716a429fa17eb1e98ba4e382f09312f8ad&stat=instructions:u) |
| 107 | + |
| 108 | +| (instructions:u) | mean | range | count | |
| 109 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 110 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 111 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 112 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.7%, -0.2%] | 34 | |
| 113 | +| Improvements ✅ <br /> (secondary) | -0.9% | [-1.6%, -0.2%] | 19 | |
| 114 | +| All ❌✅ (primary) | -0.3% | [-0.7%, -0.2%] | 34 | |
| 115 | + |
| 116 | + |
| 117 | +hygiene: Avoid recursion in syntax context decoding [#139281](https://github.com/rust-lang/rust/pull/139281) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=1e008dd5d83e782ad37fc9cf6824733f824cc8cd&end=da8321773a5c3306e1ff159cf0560c9f89f016b9&stat=instructions:u) |
| 118 | + |
| 119 | +| (instructions:u) | mean | range | count | |
| 120 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 121 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 122 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 123 | +| Improvements ✅ <br /> (primary) | -0.5% | [-0.7%, -0.4%] | 3 | |
| 124 | +| Improvements ✅ <br /> (secondary) | -0.6% | [-0.7%, -0.3%] | 14 | |
| 125 | +| All ❌✅ (primary) | -0.5% | [-0.7%, -0.4%] | 3 | |
| 126 | + |
| 127 | + |
| 128 | +Folder experiment: Micro-optimize RegionEraserVisitor [#139292](https://github.com/rust-lang/rust/pull/139292) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0e9c3e52e492c9edacae96feb8deeb1695731273&end=0c478fdfe138a8b09744798c85fe2be657768b00&stat=instructions:u) |
| 129 | + |
| 130 | +| (instructions:u) | mean | range | count | |
| 131 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 132 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 133 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 134 | +| Improvements ✅ <br /> (primary) | -4.7% | [-34.9%, -0.4%] | 9 | |
| 135 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 136 | +| All ❌✅ (primary) | -4.7% | [-34.9%, -0.4%] | 9 | |
| 137 | + |
| 138 | + |
| 139 | +Rollup of 9 pull requests [#139482](https://github.com/rust-lang/rust/pull/139482) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=8fb32ab8e563124fe0968a2878b7f5b5d0e8d722&end=e643f59f6da3a84f43e75dea99afaa5b041ea6bf&stat=instructions:u) |
| 140 | + |
| 141 | +| (instructions:u) | mean | range | count | |
| 142 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 143 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 144 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 145 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.2%] | 8 | |
| 146 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.7%, -0.2%] | 22 | |
| 147 | +| All ❌✅ (primary) | -0.3% | [-0.4%, -0.2%] | 8 | |
| 148 | + |
| 149 | + |
| 150 | +#### Mixed |
| 151 | + |
| 152 | +Remove `NtExpr` and `NtLiteral` [#138478](https://github.com/rust-lang/rust/pull/138478) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=9b7d5ac8180f70110e94f92ccbf8fa2263d24c73&end=70dab5a27c03a5637cc1d4ba36a5139760d25e38&stat=instructions:u) |
| 153 | + |
| 154 | +| (instructions:u) | mean | range | count | |
| 155 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 156 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.1%, 2.6%] | 80 | |
| 157 | +| Regressions ❌ <br /> (secondary) | 6.8% | [0.2%, 38.2%] | 41 | |
| 158 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 159 | +| Improvements ✅ <br /> (secondary) | -0.2% | [-0.3%, -0.2%] | 9 | |
| 160 | +| All ❌✅ (primary) | 0.5% | [0.1%, 2.6%] | 80 | |
| 161 | +- Performance impact was expected by the [author](https://github.com/rust-lang/rust/pull/138478#issuecomment-2771495885). |
| 162 | + |
| 163 | + |
| 164 | +Update dependencies [#138848](https://github.com/rust-lang/rust/pull/138848) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c9cd7078450abc15f6b8c969b1021934fb36c2a6&end=79de6c0bbe76904ac7086b05327ee5756fb302b1&stat=instructions:u) |
| 165 | + |
| 166 | +| (instructions:u) | mean | range | count | |
| 167 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 168 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.4%, 0.4%] | 1 | |
| 169 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 0.5%] | 5 | |
| 170 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.4%, -0.1%] | 14 | |
| 171 | +| Improvements ✅ <br /> (secondary) | -0.2% | [-0.3%, -0.1%] | 15 | |
| 172 | +| All ❌✅ (primary) | -0.2% | [-0.4%, 0.4%] | 15 | |
| 173 | +- Improvements outweigh the regressions and the number of regressions is small. |
| 174 | + |
| 175 | + |
| 176 | +Various local trait item iteration cleanups [#139018](https://github.com/rust-lang/rust/pull/139018) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=79de6c0bbe76904ac7086b05327ee5756fb302b1&end=ae9173d7dd4a31806c950c90dcc331f1508b4d17&stat=instructions:u) |
| 177 | + |
| 178 | +| (instructions:u) | mean | range | count | |
| 179 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 180 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.2%] | 2 | |
| 181 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 182 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.3%, -0.2%] | 6 | |
| 183 | +| Improvements ✅ <br /> (secondary) | -0.2% | [-0.6%, -0.1%] | 40 | |
| 184 | +| All ❌✅ (primary) | -0.1% | [-0.3%, 0.2%] | 8 | |
| 185 | +- Perf regressions outweighed by the perf improvements. |
| 186 | + |
| 187 | + |
| 188 | +Rollup of 5 pull requests [#139257](https://github.com/rust-lang/rust/pull/139257) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ae9173d7dd4a31806c950c90dcc331f1508b4d17&end=4f0de4c81d80121ac7b576bc68d8016064f4d261&stat=instructions:u) |
| 189 | + |
| 190 | +| (instructions:u) | mean | range | count | |
| 191 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 192 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.4%] | 13 | |
| 193 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.6%] | 32 | |
| 194 | +| Improvements ✅ <br /> (primary) | -0.7% | [-0.7%, -0.6%] | 4 | |
| 195 | +| Improvements ✅ <br /> (secondary) | -1.0% | [-1.0%, -1.0%] | 1 | |
| 196 | +| All ❌✅ (primary) | 0.1% | [-0.7%, 0.4%] | 17 | |
| 197 | +- Found the cause in https://github.com/rust-lang/rust/pull/139232#issuecomment-2774701657 |
| 198 | + |
| 199 | + |
| 200 | +gvn: Invalid dereferences for all non-local mutations [#132527](https://github.com/rust-lang/rust/pull/132527) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=82eb03ec6220ee435e0e07fdaf3f0a68a79aab17&end=00095b3da4f23d9b3e7a809ac6a4e2b2530df84c&stat=instructions:u) |
| 201 | + |
| 202 | +| (instructions:u) | mean | range | count | |
| 203 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 204 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.1%, 0.9%] | 37 | |
| 205 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.3%] | 29 | |
| 206 | +| Improvements ✅ <br /> (primary) | -0.9% | [-1.7%, -0.6%] | 6 | |
| 207 | +| Improvements ✅ <br /> (secondary) | -1.7% | [-1.8%, -1.5%] | 6 | |
| 208 | +| All ❌✅ (primary) | 0.2% | [-1.7%, 0.9%] | 43 | |
| 209 | +- This PR seems to have brought about a decent number of perf regressions. |
| 210 | +- Asked the author and reviewer |
| 211 | + |
0 commit comments