|
| 1 | +# 2025-10-21 Triage Log |
| 2 | + |
| 3 | +Fairly busy week, with lots of mixed results. However, overall we ended with a |
| 4 | +slight improvement on average. |
| 5 | + |
| 6 | +Triage done by **@simulacrum**. |
| 7 | +Revision range: [956f47c3..4068bafe](https://perf.rust-lang.org/?start=956f47c32f1bd97b22cd702d7ccf78f0f0d42c34&end=4068bafedd8ba724e332a5221c06a6fa531a30d2&absolute=false&stat=instructions%3Au) |
| 8 | + |
| 9 | +**Summary**: |
| 10 | + |
| 11 | +| (instructions:u) | mean | range | count | |
| 12 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 13 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 0.8%] | 21 | |
| 14 | +| Regressions ❌ <br /> (secondary) | 0.6% | [0.1%, 2.5%] | 78 | |
| 15 | +| Improvements ✅ <br /> (primary) | -0.8% | [-7.3%, -0.1%] | 88 | |
| 16 | +| Improvements ✅ <br /> (secondary) | -0.6% | [-5.4%, -0.1%] | 87 | |
| 17 | +| All ❌✅ (primary) | -0.6% | [-7.3%, 0.8%] | 109 | |
| 18 | + |
| 19 | +2 Regressions, 5 Improvements, 10 Mixed; 5 of them in rollups |
| 20 | +39 artifact comparisons made in total |
| 21 | + |
| 22 | +#### Regressions |
| 23 | + |
| 24 | +Rollup of 11 pull requests [#147745](https://github.com/rust-lang/rust/pull/147745) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=57ef8d642d21965304bde849bab4f389b4353e27&end=402ce0ef07d5db9ba26ae5c37ce6aff0c9002052&stat=instructions:u) |
| 25 | + |
| 26 | +| (instructions:u) | mean | range | count | |
| 27 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 28 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 29 | +| Regressions ❌ <br /> (secondary) | 1.0% | [0.8%, 2.0%] | 7 | |
| 30 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 31 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.3%, -0.3%] | 1 | |
| 32 | +| All ❌✅ (primary) | - | - | 0 | |
| 33 | + |
| 34 | +Suspecting https://github.com/rust-lang/rust/pull/147718, but since regressions |
| 35 | +are only to match-stress it's unlikely to be particularly interesting. Possibly |
| 36 | +a missing #[inline] to regain instruction counts. |
| 37 | + |
| 38 | +deduced_param_attrs: check Freeze on monomorphic types. [#147695](https://github.com/rust-lang/rust/pull/147695) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c8a31b780d5415358566a20b94912620a3f27067&end=0c0f27afd42c977d5ea5f6df2c8f5bc192bdc67a&stat=instructions:u) |
| 39 | + |
| 40 | +| (instructions:u) | mean | range | count | |
| 41 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 42 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.3%, 0.4%] | 3 | |
| 43 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 44 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 45 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 46 | +| All ❌✅ (primary) | 0.3% | [0.3%, 0.4%] | 3 | |
| 47 | + |
| 48 | +Appears to be a regression limited to the bitmaps benchmark. Most other |
| 49 | +benchmarks, though below noise threshold, are slightly improved or neutral. The |
| 50 | +initial perf run in PR was also a strict improvement. It doesn't seem like a |
| 51 | +spurious regression, but also doesn't seem like it merits further followup. |
| 52 | + |
| 53 | +#### Improvements |
| 54 | + |
| 55 | +Restrict sysroot crate imports to those defined in this repo. [#143548](https://github.com/rust-lang/rust/pull/143548) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4f08307f6efdbca86d27beecd257fad9913192e9&end=28d0a4a205f9e511ad2f51ee79a4aa19a704a455&stat=instructions:u) |
| 56 | + |
| 57 | +| (instructions:u) | mean | range | count | |
| 58 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 59 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 60 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 61 | +| Improvements ✅ <br /> (primary) | -2.8% | [-2.8%, -2.8%] | 1 | |
| 62 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 63 | +| All ❌✅ (primary) | -2.8% | [-2.8%, -2.8%] | 1 | |
| 64 | + |
| 65 | + |
| 66 | +rustdoc-search: stringdex 0.0.2 [#147660](https://github.com/rust-lang/rust/pull/147660) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=a41214f9bd7ce869d21898f31107f92c90a9112f&end=f46475914de626785090a05ae037578aaa119fc8&stat=instructions:u) |
| 67 | + |
| 68 | +| (instructions:u) | mean | range | count | |
| 69 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 70 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 71 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 72 | +| Improvements ✅ <br /> (primary) | -0.8% | [-2.5%, -0.2%] | 5 | |
| 73 | +| Improvements ✅ <br /> (secondary) | -1.1% | [-5.7%, -0.3%] | 9 | |
| 74 | +| All ❌✅ (primary) | -0.8% | [-2.5%, -0.2%] | 5 | |
| 75 | + |
| 76 | + |
| 77 | +Rollup of 6 pull requests [#147842](https://github.com/rust-lang/rust/pull/147842) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0c0f27afd42c977d5ea5f6df2c8f5bc192bdc67a&end=6380899f32599ea25615d4ccd708d0e8da652b0c&stat=instructions:u) |
| 78 | + |
| 79 | +| (instructions:u) | mean | range | count | |
| 80 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 81 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 82 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 83 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 84 | +| Improvements ✅ <br /> (secondary) | -0.4% | [-1.1%, -0.1%] | 8 | |
| 85 | +| All ❌✅ (primary) | - | - | 0 | |
| 86 | + |
| 87 | + |
| 88 | +Rollup of 4 pull requests [#147884](https://github.com/rust-lang/rust/pull/147884) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c6efb9019b3169fc672248339dbbf13e6a134de3&end=4ddbb6051271237f4192333e06b8129148995eef&stat=instructions:u) |
| 89 | + |
| 90 | +| (instructions:u) | mean | range | count | |
| 91 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 92 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 93 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 94 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.3%, -0.2%] | 2 | |
| 95 | +| Improvements ✅ <br /> (secondary) | -0.2% | [-0.3%, -0.1%] | 5 | |
| 96 | +| All ❌✅ (primary) | -0.3% | [-0.3%, -0.2%] | 2 | |
| 97 | + |
| 98 | +Add a `!=` check to `ChunkedBitSet::union`. [#147619](https://github.com/rust-lang/rust/pull/147619) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=5413f7d39cae07b7b3809973fe201d21960a18aa&end=4f08307f6efdbca86d27beecd257fad9913192e9&stat=instructions:u) |
| 99 | + |
| 100 | +| (instructions:u) | mean | range | count | |
| 101 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 102 | +| Regressions ❌ <br /> (primary) | 2.9% | [2.9%, 2.9%] | 1 | |
| 103 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 104 | +| Improvements ✅ <br /> (primary) | -3.5% | [-9.3%, -0.1%] | 8 | |
| 105 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 106 | +| All ❌✅ (primary) | -2.8% | [-9.3%, 2.9%] | 9 | |
| 107 | + |
| 108 | +One regression looks spurious so manually moved to improvements. |
| 109 | + |
| 110 | +#### Mixed |
| 111 | + |
| 112 | +Change int-to-ptr transmute lowering back to inttoptr [#147541](https://github.com/rust-lang/rust/pull/147541) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=9b8264604ef800b5539d04bf78ebdef5c5fa4968&end=ed1d94311e7ed53eabb5667ef577802d88d1aaee&stat=instructions:u) |
| 113 | + |
| 114 | +| (instructions:u) | mean | range | count | |
| 115 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 116 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 117 | +| Regressions ❌ <br /> (secondary) | 2.2% | [0.1%, 2.9%] | 8 | |
| 118 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 119 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.6%, -0.1%] | 12 | |
| 120 | +| All ❌✅ (primary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 121 | + |
| 122 | +Mitigation for soundness problems, costs are worth it. |
| 123 | + |
| 124 | +only call polymorphic array iter drop machinery when the type requires it [#147353](https://github.com/rust-lang/rust/pull/147353) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4b94758d2ba7d0ef71ccf5fde29ce4bc5d6fe2a4&end=fb24b04b096a980bffd80154f6aba22fd07cb3d9&stat=instructions:u) |
| 125 | + |
| 126 | +| (instructions:u) | mean | range | count | |
| 127 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 128 | +| Regressions ❌ <br /> (primary) | 0.7% | [0.7%, 0.7%] | 2 | |
| 129 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 1.1%] | 4 | |
| 130 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 131 | +| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.0%] | 2 | |
| 132 | +| All ❌✅ (primary) | 0.7% | [0.7%, 0.7%] | 2 | |
| 133 | + |
| 134 | +Primary regressions to cargo and cranelift-codegen look real. However, previous |
| 135 | +runs on the same PR saw oscillating results, and since this likely affects CGU |
| 136 | +partitioning it doesn't seem unexpected that would be the case. Marking as |
| 137 | +triaged. |
| 138 | + |
| 139 | +Rollup of 12 pull requests [#147662](https://github.com/rust-lang/rust/pull/147662) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2f7620a5ccfea7d59d1f500e2a2e59cf1c867a1b&end=e100792918c8bd9e0cb830f96fc9b171e8892fa1&stat=instructions:u) |
| 140 | + |
| 141 | +| (instructions:u) | mean | range | count | |
| 142 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 143 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.3%, 0.5%] | 2 | |
| 144 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.0%, 0.5%] | 3 | |
| 145 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.2%] | 2 | |
| 146 | +| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.1%] | 3 | |
| 147 | +| All ❌✅ (primary) | 0.1% | [-0.4%, 0.5%] | 4 | |
| 148 | + |
| 149 | +Per PR comment, perf change is from avoiding redundant UB checks: |
| 150 | +https://github.com/rust-lang/rust/pull/147620#issuecomment-3404145907. |
| 151 | + |
| 152 | +Regressions don't look spurious but seem unlikely to be practically |
| 153 | +investigated to any real effect due to the nature of this change affecting lots |
| 154 | +of generated code, and seeming like a good change on a surface level. |
| 155 | + |
| 156 | +Rollup of 12 pull requests [#147692](https://github.com/rust-lang/rust/pull/147692) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=844264adda6f41ca6d0d61c4bcac0f263fc5072f&end=235a4c083eb2a2bfe8779d211c3232f39396de00&stat=instructions:u) |
| 157 | + |
| 158 | +| (instructions:u) | mean | range | count | |
| 159 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 160 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.1%, 0.9%] | 20 | |
| 161 | +| Regressions ❌ <br /> (secondary) | 0.6% | [0.0%, 2.7%] | 48 | |
| 162 | +| Improvements ✅ <br /> (primary) | -0.4% | [-0.4%, -0.2%] | 3 | |
| 163 | +| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.0%] | 5 | |
| 164 | +| All ❌✅ (primary) | 0.2% | [-0.4%, 0.9%] | 23 | |
| 165 | + |
| 166 | +Change identification appears to be ongoing on the PR, with no clear cause as yet identified. |
| 167 | + |
| 168 | +prefer alias candidates for sizedness + auto trait goals [#144064](https://github.com/rust-lang/rust/pull/144064) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=3f2a5921a451378f219edec28810f5f2f45cf1be&end=57ef8d642d21965304bde849bab4f389b4353e27&stat=instructions:u) |
| 169 | + |
| 170 | +| (instructions:u) | mean | range | count | |
| 171 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 172 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.1%, 0.8%] | 16 | |
| 173 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.2%, 1.8%] | 19 | |
| 174 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.6%, -0.1%] | 6 | |
| 175 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-0.7%, -0.3%] | 8 | |
| 176 | +| All ❌✅ (primary) | 0.2% | [-0.6%, 0.8%] | 22 | |
| 177 | + |
| 178 | +Fix for a regression. Generally fairly neutral so further investigation doesn't seem warranted. |
| 179 | + |
| 180 | +Use regular Vec in BitSet. [#147644](https://github.com/rust-lang/rust/pull/147644) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f5242367f4acf0130c9b68e6956531b2cb73bd38&end=779e19d8baa3e3625bd4fc5c85cbb2ad47b43155&stat=instructions:u) |
| 181 | + |
| 182 | +| (instructions:u) | mean | range | count | |
| 183 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 184 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.2%, 0.7%] | 16 | |
| 185 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.0%, 0.8%] | 26 | |
| 186 | +| Improvements ✅ <br /> (primary) | -0.4% | [-0.7%, -0.1%] | 26 | |
| 187 | +| Improvements ✅ <br /> (secondary) | -0.8% | [-3.0%, -0.1%] | 69 | |
| 188 | +| All ❌✅ (primary) | -0.1% | [-0.7%, 0.7%] | 42 | |
| 189 | + |
| 190 | +Marking as triaged as it's overall a slight improvement. |
| 191 | + |
| 192 | +`TaskDeps` improvements [#147508](https://github.com/rust-lang/rust/pull/147508) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=53a741fc4b8cf2d8e7b1b2336ed8edf889db84f4&end=28c4c7d7abced7b35c49f38149b9cb6ea27dd2a6&stat=instructions:u) |
| 193 | + |
| 194 | +| (instructions:u) | mean | range | count | |
| 195 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 196 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.5%, 0.5%] | 1 | |
| 197 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.2%, 0.8%] | 17 | |
| 198 | +| Improvements ✅ <br /> (primary) | -0.4% | [-1.0%, -0.1%] | 25 | |
| 199 | +| Improvements ✅ <br /> (secondary) | -0.7% | [-1.2%, -0.2%] | 22 | |
| 200 | +| All ❌✅ (primary) | -0.4% | [-1.0%, 0.5%] | 26 | |
| 201 | + |
| 202 | +Improvements definitely outweigh regressions. |
| 203 | + |
| 204 | +Pre-compute MIR CFG caches for borrowck and other analyses [#142540](https://github.com/rust-lang/rust/pull/142540) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f46475914de626785090a05ae037578aaa119fc8&end=28fad9598975af7734be05116b3c5fc74b720d87&stat=instructions:u) |
| 205 | + |
| 206 | +| (instructions:u) | mean | range | count | |
| 207 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 208 | +| Regressions ❌ <br /> (primary) | 1.7% | [1.0%, 2.6%] | 4 | |
| 209 | +| Regressions ❌ <br /> (secondary) | 0.9% | [0.1%, 1.6%] | 6 | |
| 210 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.3%, -0.1%] | 15 | |
| 211 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.4%, -0.2%] | 13 | |
| 212 | +| All ❌✅ (primary) | 0.2% | [-0.3%, 2.6%] | 19 | |
| 213 | + |
| 214 | +> I think this is fine. We're seeing enough wins for more common Rust code |
| 215 | +> (serde, image, syn, etc) that I think it is fine to take the hit for the two |
| 216 | +> outliers (tt-muncher and cranelift-codegen for some reason), I do think it |
| 217 | +> could be because of cloning taking more instructions than what gets saved, |
| 218 | +> but I don't think that is preventable. |
| 219 | +
|
| 220 | +https://github.com/rust-lang/rust/pull/142540#issuecomment-3416857137 |
| 221 | + |
| 222 | +I think I'm broadly in agreement with this summary of the results. |
| 223 | + |
| 224 | +Limit impl_trait_header query to only trait impls [#144607](https://github.com/rust-lang/rust/pull/144607) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=28fad9598975af7734be05116b3c5fc74b720d87&end=2170b4da847c9d75d400b13ba53bd47f749233bd&stat=instructions:u) |
| 225 | + |
| 226 | +| (instructions:u) | mean | range | count | |
| 227 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 228 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 229 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.2%] | 11 | |
| 230 | +| Improvements ✅ <br /> (primary) | -0.6% | [-0.8%, -0.4%] | 7 | |
| 231 | +| Improvements ✅ <br /> (secondary) | -1.8% | [-2.6%, -0.1%] | 4 | |
| 232 | +| All ❌✅ (primary) | -0.5% | [-0.8%, 0.2%] | 8 | |
| 233 | + |
| 234 | +Some regressions on smaller benchmarks. My guess is that this hurts the case |
| 235 | +where there's lots of opt function lookups for that are now two query cache hit |
| 236 | +lookups rather than just one? But that seems to generally be less likely in our |
| 237 | +benchmarks than showing an improvement, so willing to just accept the |
| 238 | +regressions. |
| 239 | + |
| 240 | +Simplify trivial constants in SimplifyConstCondition [#147654](https://github.com/rust-lang/rust/pull/147654) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ab1d2444533d829e2d5cff6634cd3c70de6d7103&end=c8a31b780d5415358566a20b94912620a3f27067&stat=instructions:u) |
| 241 | + |
| 242 | +| (instructions:u) | mean | range | count | |
| 243 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 244 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.5%, 0.5%] | 1 | |
| 245 | +| Regressions ❌ <br /> (secondary) | 0.6% | [0.2%, 1.1%] | 4 | |
| 246 | +| Improvements ✅ <br /> (primary) | -0.5% | [-0.9%, -0.2%] | 13 | |
| 247 | +| Improvements ✅ <br /> (secondary) | -0.2% | [-0.3%, -0.1%] | 8 | |
| 248 | +| All ❌✅ (primary) | -0.4% | [-0.9%, 0.5%] | 14 | |
| 249 | + |
| 250 | +Improvements outweigh regressions. |
0 commit comments