|
| 1 | +# 2023-06-06 Triage Log |
| 2 | + |
| 3 | +This week was a bunch of improvements, largely driven by cutting std debuginfo |
| 4 | +in [#110221] and a few MIR or codegen optimizations. No pure regressions landed |
| 5 | +this week! |
| 6 | + |
| 7 | +Triage done by **@simulacrum**. |
| 8 | +Revision range: [1221e43bdf413f7c405e9b17ef19d76c88222098..adc719d7147d5e2578ce08e0b4504be44650256e](https://perf.rust-lang.org/?start=1221e43bdf413f7c405e9b17ef19d76c88222098&end=adc719d7147d5e2578ce08e0b4504be44650256e&absolute=false&stat=instructions%3Au) |
| 9 | + |
| 10 | +**Summary**: |
| 11 | + |
| 12 | +| (instructions:u) | mean | range | count | |
| 13 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 14 | +| Regressions ❌ <br /> (primary) | 0.6% | [0.3%, 2.0%] | 11 | |
| 15 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.3%, 1.0%] | 9 | |
| 16 | +| Improvements ✅ <br /> (primary) | -1.9% | [-17.4%, -0.2%] | 103 | |
| 17 | +| Improvements ✅ <br /> (secondary) | -5.2% | [-17.4%, -0.2%] | 116 | |
| 18 | +| All ❌✅ (primary) | -1.7% | [-17.4%, 2.0%] | 114 | |
| 19 | + |
| 20 | +0 Regressions, 1 Improvements, 12 Mixed; 2 of them in rollups |
| 21 | +79 artifact comparisons made in total |
| 22 | + |
| 23 | +#### Regressions |
| 24 | + |
| 25 | +No regressions this week. |
| 26 | + |
| 27 | +#### Improvements |
| 28 | + |
| 29 | +Greatly decrease the size of `rustc_driver.so` when debuginfo is enabled [#110221](https://github.com/rust-lang/rust/pull/110221) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=51f714c8c5021fe25442e46798b1cbef2f2249ed&end=42f28f9eb41adb7a197697e5e2d6535d00fd0f4a&stat=instructions:u) |
| 30 | + |
| 31 | +| (instructions:u) | mean | range | count | |
| 32 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 33 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 34 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 35 | +| Improvements ✅ <br /> (primary) | -8.8% | [-17.6%, -0.5%] | 17 | |
| 36 | +| Improvements ✅ <br /> (secondary) | -7.5% | [-17.2%, -0.2%] | 72 | |
| 37 | +| All ❌✅ (primary) | -8.8% | [-17.6%, -0.5%] | 17 | |
| 38 | + |
| 39 | +This PR compresses and cuts some debuginfo from the shipped std library, |
| 40 | +somewhat unintentionally. This might be something we roll back if we get |
| 41 | +regression reports about it - not clear whether this changes behavior in a |
| 42 | +meaningful way for anyone. |
| 43 | + |
| 44 | +[#110221]: https://github.com/rust-lang/rust/pull/110221 |
| 45 | + |
| 46 | +#### Mixed |
| 47 | + |
| 48 | +Rollup of 6 pull requests [#112016](https://github.com/rust-lang/rust/pull/112016) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=786178b2ab79ae471c5efc4e1faa0c83b9151703&end=82b311b4189cce2bde455f3e091ae662a382d592&stat=instructions:u) |
| 49 | + |
| 50 | +| (instructions:u) | mean | range | count | |
| 51 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 52 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 1.0%] | 14 | |
| 53 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.3%, 0.5%] | 6 | |
| 54 | +| Improvements ✅ <br /> (primary) | -0.7% | [-1.1%, -0.3%] | 2 | |
| 55 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-0.5%, -0.5%] | 1 | |
| 56 | +| All ❌✅ (primary) | 0.3% | [-1.1%, 1.0%] | 16 | |
| 57 | + |
| 58 | +Roughly scattered changes, many of which are in high-variance benchmarks. |
| 59 | + |
| 60 | +Enable MatchBranchSimplification [#112001](https://github.com/rust-lang/rust/pull/112001) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ddad0576caf8d0515ed453e04b468977c7d3dfc1&end=f59d577838fb0449a2b59ec3525a7fa91509e861&stat=instructions:u) |
| 61 | + |
| 62 | +| (instructions:u) | mean | range | count | |
| 63 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 64 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.3%, 0.7%] | 5 | |
| 65 | +| Regressions ❌ <br /> (secondary) | 0.6% | [0.2%, 0.8%] | 10 | |
| 66 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.2%] | 4 | |
| 67 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.3%, -0.3%] | 1 | |
| 68 | +| All ❌✅ (primary) | 0.2% | [-0.4%, 0.7%] | 9 | |
| 69 | + |
| 70 | +Scattered changes, mostly a wash. Optimization targets particular code patterns |
| 71 | +which don't occur that often in rustc most likely. |
| 72 | + |
| 73 | +MIR: opt-in normalization of `BasicBlock` and `Local` numbering [#111813](https://github.com/rust-lang/rust/pull/111813) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=1c53407e8c7cc922d718bde61ca34f47b6d2120f&end=089677eb32af83318467325edbef9b64053df532&stat=instructions:u) |
| 74 | + |
| 75 | +| (instructions:u) | mean | range | count | |
| 76 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 77 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.3%, 0.3%] | 1 | |
| 78 | +| Regressions ❌ <br /> (secondary) | 0.7% | [0.3%, 1.2%] | 8 | |
| 79 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 80 | +| Improvements ✅ <br /> (secondary) | -1.0% | [-1.5%, -0.3%] | 7 | |
| 81 | +| All ❌✅ (primary) | 0.3% | [0.3%, 0.3%] | 1 | |
| 82 | + |
| 83 | +Mostly noise, probably. The new normalization is off by default. |
| 84 | + |
| 85 | +Inline derived `hash` [#111963](https://github.com/rust-lang/rust/pull/111963) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=089677eb32af83318467325edbef9b64053df532&end=f8447b963893b410f1dbce2cd752a898dc3ed8d4&stat=instructions:u) |
| 86 | + |
| 87 | +| (instructions:u) | mean | range | count | |
| 88 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 89 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.3%, 0.3%] | 1 | |
| 90 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.2%, 0.6%] | 15 | |
| 91 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.6%, -0.2%] | 16 | |
| 92 | +| Improvements ✅ <br /> (secondary) | -0.7% | [-1.4%, -0.3%] | 21 | |
| 93 | +| All ❌✅ (primary) | -0.2% | [-0.6%, 0.3%] | 17 | |
| 94 | + |
| 95 | +Improvements outweigh regressions. |
| 96 | + |
| 97 | +Use `Cow` in `{D,Subd}iagnosticMessage`. [#111748](https://github.com/rust-lang/rust/pull/111748) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=dc0943d2eebf139e7e509882b803f77bfd25656d&end=70e04bd88d85cab8ed110ace5a278fab106d0ef5&stat=instructions:u) |
| 98 | + |
| 99 | +| (instructions:u) | mean | range | count | |
| 100 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 101 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 102 | +| Regressions ❌ <br /> (secondary) | 0.7% | [0.6%, 0.8%] | 5 | |
| 103 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 104 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-0.8%, -0.3%] | 10 | |
| 105 | +| All ❌✅ (primary) | - | - | 0 | |
| 106 | + |
| 107 | +Regressions limited to secondary benchmarks, and a good portion of them are |
| 108 | +bimodal benchmarks. No further investigation warranted. |
| 109 | + |
| 110 | +Make `TrustedStep` require `Copy` [#112083](https://github.com/rust-lang/rust/pull/112083) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=45eec0fe931e02932b43b79c51f90050c973c690&end=578bcbc2b42191556c4438b80ba37fafa4193e82&stat=instructions:u) |
| 111 | + |
| 112 | +| (instructions:u) | mean | range | count | |
| 113 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 114 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 115 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.2%, 0.7%] | 5 | |
| 116 | +| Improvements ✅ <br /> (primary) | -1.1% | [-1.1%, -1.1%] | 1 | |
| 117 | +| Improvements ✅ <br /> (secondary) | -1.2% | [-3.5%, -0.4%] | 13 | |
| 118 | +| All ❌✅ (primary) | -0.4% | [-1.1%, 0.2%] | 2 | |
| 119 | + |
| 120 | +Improvements clearly outweigh regressions. |
| 121 | + |
| 122 | +move `super_relate_consts` hack to `normalize_param_env_or_error` [#111623](https://github.com/rust-lang/rust/pull/111623) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=617d3d6d722c432cdcbf210e6db55c3bdeafe381&end=e29821ff85a2a3000d226f99f62f89464028d5d6&stat=instructions:u) |
| 123 | + |
| 124 | +| (instructions:u) | mean | range | count | |
| 125 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 126 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.6%] | 8 | |
| 127 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 128 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.3%, -0.2%] | 2 | |
| 129 | +| Improvements ✅ <br /> (secondary) | -2.0% | [-2.2%, -2.0%] | 6 | |
| 130 | +| All ❌✅ (primary) | 0.2% | [-0.3%, 0.6%] | 10 | |
| 131 | + |
| 132 | +Most likely inlining or other codegen changes; roughly neutral change overall. |
| 133 | + |
| 134 | +Enable ScalarReplacementOfAggregates in optimized builds [#112002](https://github.com/rust-lang/rust/pull/112002) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=fabf9298633ca64450fa2af535252dc44a3b1080&end=642c92e63008ffb49f6ad8344e07bfa7d5b0d9bb&stat=instructions:u) |
| 135 | + |
| 136 | +| (instructions:u) | mean | range | count | |
| 137 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 138 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.2%, 0.9%] | 6 | |
| 139 | +| Regressions ❌ <br /> (secondary) | 0.8% | [0.3%, 2.3%] | 15 | |
| 140 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.9%, -0.2%] | 13 | |
| 141 | +| Improvements ✅ <br /> (secondary) | -1.2% | [-2.9%, -0.3%] | 3 | |
| 142 | +| All ❌✅ (primary) | -0.1% | [-0.9%, 0.9%] | 19 | |
| 143 | + |
| 144 | +SROA benefits cranelift codegen and has no significant impact on runtimes, so |
| 145 | +enabling by default makes sense. It also helps with MatchBranchSimplification, |
| 146 | +enabled in a separate PR. |
| 147 | + |
| 148 | +Enable ConstGoto and SeparateConstSwitch passes by default [#112040](https://github.com/rust-lang/rust/pull/112040) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=642c92e63008ffb49f6ad8344e07bfa7d5b0d9bb&end=789dd0b2a2cd68c129ba9b0aa1008939209adcfd&stat=instructions:u) |
| 149 | + |
| 150 | +| (instructions:u) | mean | range | count | |
| 151 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 152 | +| Regressions ❌ <br /> (primary) | 2.6% | [2.6%, 2.6%] | 1 | |
| 153 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 154 | +| Improvements ✅ <br /> (primary) | -0.5% | [-1.1%, -0.2%] | 72 | |
| 155 | +| Improvements ✅ <br /> (secondary) | -0.8% | [-2.0%, -0.2%] | 33 | |
| 156 | +| All ❌✅ (primary) | -0.4% | [-1.1%, 2.6%] | 73 | |
| 157 | + |
| 158 | +More MIR opt enablement -- some regressions here, but improvements are much |
| 159 | +more wide-ranging than the regressions. |
| 160 | + |
| 161 | +Rollup of 7 pull requests [#112253](https://github.com/rust-lang/rust/pull/112253) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2f5e6bb817c115c067ff47453eb9aa89a0a31358&end=398fa2187c88de46c13c142f600064483a563c86&stat=instructions:u) |
| 162 | + |
| 163 | +| (instructions:u) | mean | range | count | |
| 164 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 165 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.4%, 0.6%] | 6 | |
| 166 | +| Regressions ❌ <br /> (secondary) | 0.9% | [0.4%, 1.3%] | 9 | |
| 167 | +| Improvements ✅ <br /> (primary) | -0.4% | [-0.4%, -0.4%] | 1 | |
| 168 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.4%, -0.2%] | 4 | |
| 169 | +| All ❌✅ (primary) | 0.4% | [-0.4%, 0.6%] | 7 | |
| 170 | + |
| 171 | +Possibly just noise/bimodality given benchmarks and lack of significant PRs in |
| 172 | +this rollup. Not investigating further. |
| 173 | + |
| 174 | +Only check inlining counter after recursing. [#112240](https://github.com/rust-lang/rust/pull/112240) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d8095acb5f8134cbff59b2cc8c8b7f5cec364280&end=9eee230cd0a56bfba3ce65121798d9f9f4341cdd&stat=instructions:u) |
| 175 | + |
| 176 | +| (instructions:u) | mean | range | count | |
| 177 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 178 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 179 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.3%] | 5 | |
| 180 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.5%, -0.2%] | 6 | |
| 181 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-1.0%, -0.3%] | 11 | |
| 182 | +| All ❌✅ (primary) | -0.3% | [-0.5%, -0.2%] | 6 | |
| 183 | + |
| 184 | +Changes in inlining, overall a positive despite a few regressions. |
| 185 | + |
| 186 | +Use `load`+`store` instead of `memcpy` for small integer arrays [#111999](https://github.com/rust-lang/rust/pull/111999) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=adc719d7147d5e2578ce08e0b4504be44650256e&end=fd9bf594366e73efb1a26a023e0b4de8eff82b94&stat=instructions:u) |
| 187 | + |
| 188 | +| (instructions:u) | mean | range | count | |
| 189 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 190 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 191 | +| Regressions ❌ <br /> (secondary) | 2.2% | [0.1%, 5.7%] | 3 | |
| 192 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 193 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.3%, -0.3%] | 4 | |
| 194 | +| All ❌✅ (primary) | - | - | 0 | |
| 195 | + |
| 196 | +No clear impact on rustc workloads, but may benefit others. |
0 commit comments