|
| 1 | +# 2022-06-21 Triage Log |
| 2 | + |
| 3 | +A pretty busy week for performance, with quite a few PRs landing with |
| 4 | +significant improvements to specific benchmarks. Overall the week was positive, |
| 5 | +with many benchmarks improving at least a little. No significant changes in |
| 6 | +memory usage this week. |
| 7 | + |
| 8 | +Triage done by **@simulacrum**. |
| 9 | +Revision range: [edab34ab2abbafc16a78daedf71dbacd2eb0b7bf..abace0a1f17986d89aedf610819deab2b4afee56](https://perf.rust-lang.org/?start=edab34ab2abbafc16a78daedf71dbacd2eb0b7bf&end=abace0a1f17986d89aedf610819deab2b4afee56&absolute=false&stat=instructions%3Au) |
| 10 | + |
| 11 | +**Summary**: |
| 12 | + |
| 13 | +| | mean | max | count | |
| 14 | +|:----------:|:----:|:---:|:-----:| |
| 15 | +| Regressions πΏ <br /> (primary) | 0.4% | 0.5% | 6 | |
| 16 | +| Regressions πΏ <br /> (secondary) | 2.9% | 14.7% | 37 | |
| 17 | +| Improvements π <br /> (primary) | -1.9% | -19.4% | 89 | |
| 18 | +| Improvements π <br /> (secondary) | -8.4% | -91.4% | 38 | |
| 19 | +| All πΏπ (primary) | -1.8% | -19.4% | 95 | |
| 20 | + |
| 21 | +5 Regressions, 6 Improvements, 3 Mixed; 1 of them in rollups |
| 22 | +54 artifact comparisons made in total |
| 23 | + |
| 24 | +#### Regressions |
| 25 | + |
| 26 | +BTreeMap: Support custom allocators (v1.5) [#98103](https://github.com/rust-lang/rust/pull/98103) |
| 27 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=5bc82c0b944dc6c8ed12372b4f79d1a8e3fb0cbd&end=1b9daa69640970e7858b7c8e1c9f72c604985e11&stat=instructions:u) |
| 28 | + |
| 29 | +| | mean | max | count | |
| 30 | +|:----------:|:----:|:---:|:-----:| |
| 31 | +| Regressions πΏ <br /> (primary) | 1.7% | 3.0% | 2 | |
| 32 | +| Regressions πΏ <br /> (secondary) | 1.6% | 2.1% | 6 | |
| 33 | +| Improvements π <br /> (primary) | N/A | N/A | 0 | |
| 34 | +| Improvements π <br /> (secondary) | N/A | N/A | 0 | |
| 35 | +| All πΏπ (primary) | 1.7% | 3.0% | 2 | |
| 36 | + |
| 37 | +This regression is largely fixed by [#98178](https://github.com/rust-lang/rust/pull/98178). |
| 38 | + |
| 39 | +Improve the tuple and unit trait docs [#97842](https://github.com/rust-lang/rust/pull/97842) |
| 40 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d40f24e956a698e47a209541031c4045acc5a684&end=6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6&stat=instructions:u) |
| 41 | + |
| 42 | +| | mean | max | count | |
| 43 | +|:----------:|:----:|:---:|:-----:| |
| 44 | +| Regressions πΏ <br /> (primary) | 0.4% | 0.6% | 2 | |
| 45 | +| Regressions πΏ <br /> (secondary) | 0.3% | 0.4% | 3 | |
| 46 | +| Improvements π <br /> (primary) | N/A | N/A | 0 | |
| 47 | +| Improvements π <br /> (secondary) | N/A | N/A | 0 | |
| 48 | +| All πΏπ (primary) | 0.4% | 0.6% | 2 | |
| 49 | + |
| 50 | +Slight regressions to small number of doc benchmarks, likely due to slightly |
| 51 | +more work during generation (std's docs changed). |
| 52 | + |
| 53 | +Fix `SourceScope` for `if let` bindings. [#97931](https://github.com/rust-lang/rust/pull/97931) |
| 54 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=17c6bde14eabdd61c35505ed6834ee9196c2fdc9&end=9a0b7749665d925d8f533756149deba74f2db88b&stat=instructions:u) |
| 55 | + |
| 56 | +| | mean | max | count | |
| 57 | +|:----------:|:----:|:---:|:-----:| |
| 58 | +| Regressions πΏ <br /> (primary) | 0.4% | 0.5% | 4 | |
| 59 | +| Regressions πΏ <br /> (secondary) | 0.3% | 0.3% | 1 | |
| 60 | +| Improvements π <br /> (primary) | N/A | N/A | 0 | |
| 61 | +| Improvements π <br /> (secondary) | N/A | N/A | 0 | |
| 62 | +| All πΏπ (primary) | 0.4% | 0.5% | 4 | |
| 63 | + |
| 64 | +Regression is pretty small and only one primary benchmark is affected (regex), |
| 65 | +and only incremental scenarios there. Likely not enough to worry about. |
| 66 | + |
| 67 | +Obligation forest tweaks [#97674](https://github.com/rust-lang/rust/pull/97674) |
| 68 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4104596251818f4f588051c7a8172ca9f5a195bf&end=1d6010816c37186e2bee316709f0c0197c427513&stat=instructions:u) |
| 69 | + |
| 70 | +| | mean | max | count | |
| 71 | +|:----------:|:----:|:---:|:-----:| |
| 72 | +| Regressions πΏ <br /> (primary) | 0.8% | 0.9% | 2 | |
| 73 | +| Regressions πΏ <br /> (secondary) | 1.8% | 2.4% | 7 | |
| 74 | +| Improvements π <br /> (primary) | N/A | N/A | 0 | |
| 75 | +| Improvements π <br /> (secondary) | -0.3% | -0.3% | 1 | |
| 76 | +| All πΏπ (primary) | 0.8% | 0.9% | 2 | |
| 77 | + |
| 78 | +keccak is the primary affected benchmark, and is known to be very sensitive to |
| 79 | +changes to the obligation forest code. See some analysis in this |
| 80 | +[comment](https://github.com/rust-lang/rust/pull/97674#issuecomment-1160914976) |
| 81 | +following up on the results from the merge perf run. |
| 82 | + |
| 83 | +Rollup of 4 pull requests [#98307](https://github.com/rust-lang/rust/pull/98307) |
| 84 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=5750a6aa2777382bf421b726f234da23f990a953&end=08871139915b95ec868aff807f224f78d00f4311&stat=instructions:u) |
| 85 | + |
| 86 | +| | mean | max | count | |
| 87 | +|:----------:|:----:|:---:|:-----:| |
| 88 | +| Regressions πΏ <br /> (primary) | 0.3% | 0.3% | 2 | |
| 89 | +| Regressions πΏ <br /> (secondary) | 0.7% | 0.8% | 6 | |
| 90 | +| Improvements π <br /> (primary) | N/A | N/A | 0 | |
| 91 | +| Improvements π <br /> (secondary) | -0.4% | -0.4% | 1 | |
| 92 | +| All πΏπ (primary) | 0.3% | 0.3% | 2 | |
| 93 | + |
| 94 | +Cause of regressions is unclear, but they're minor enough that it's not worth |
| 95 | +the hassle of investigating a rollup. |
| 96 | + |
| 97 | + |
| 98 | +#### Improvements |
| 99 | + |
| 100 | +ctfe: limit hashing of big const allocations when interning [#98097](https://github.com/rust-lang/rust/pull/98097) |
| 101 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=949a64ab20b9d5d4516416c4735b134e0496855a&end=43c47db0b04627dbd0e16a1e7cad14a4a5a60d3a&stat=instructions:u) |
| 102 | + |
| 103 | +| | mean | max | count | |
| 104 | +|:----------:|:----:|:---:|:-----:| |
| 105 | +| Regressions πΏ <br /> (primary) | N/A | N/A | 0 | |
| 106 | +| Regressions πΏ <br /> (secondary) | N/A | N/A | 0 | |
| 107 | +| Improvements π <br /> (primary) | N/A | N/A | 0 | |
| 108 | +| Improvements π <br /> (secondary) | -6.6% | -6.6% | 3 | |
| 109 | +| All πΏπ (primary) | N/A | N/A | 0 | |
| 110 | + |
| 111 | + |
| 112 | +Batch proc_macro RPC for TokenStream iteration and combination operations [#98186](https://github.com/rust-lang/rust/pull/98186) |
| 113 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ff86b27e7be1ffff9e00d80beb15560d5f301459&end=0182fd99afaf4a3d602de6b88506edaf6043c125&stat=instructions:u) |
| 114 | + |
| 115 | +| | mean | max | count | |
| 116 | +|:----------:|:----:|:---:|:-----:| |
| 117 | +| Regressions πΏ <br /> (primary) | N/A | N/A | 0 | |
| 118 | +| Regressions πΏ <br /> (secondary) | N/A | N/A | 0 | |
| 119 | +| Improvements π <br /> (primary) | -1.0% | -4.0% | 26 | |
| 120 | +| Improvements π <br /> (secondary) | -12.1% | -37.5% | 15 | |
| 121 | +| All πΏπ (primary) | -1.0% | -4.0% | 26 | |
| 122 | + |
| 123 | + |
| 124 | +Fix `MissingDoc` quadratic behaviour [#98153](https://github.com/rust-lang/rust/pull/98153) |
| 125 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0182fd99afaf4a3d602de6b88506edaf6043c125&end=cdcc53b7dc002ea4a7a28105010c5a1126ee31b7&stat=instructions:u) |
| 126 | + |
| 127 | +| | mean | max | count | |
| 128 | +|:----------:|:----:|:---:|:-----:| |
| 129 | +| Regressions πΏ <br /> (primary) | N/A | N/A | 0 | |
| 130 | +| Regressions πΏ <br /> (secondary) | N/A | N/A | 0 | |
| 131 | +| Improvements π <br /> (primary) | -0.3% | -0.4% | 14 | |
| 132 | +| Improvements π <br /> (secondary) | N/A | N/A | 0 | |
| 133 | +| All πΏπ (primary) | -0.3% | -0.4% | 14 | |
| 134 | + |
| 135 | + |
| 136 | +Make some lints incremental. [#98238](https://github.com/rust-lang/rust/pull/98238) |
| 137 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=15fc228d0d0a68b5ba565758fab13ed7f863fcea&end=67404f7200c13deec255ffe1146e1d2c9d0d3028&stat=instructions:u) |
| 138 | + |
| 139 | +| | mean | max | count | |
| 140 | +|:----------:|:----:|:---:|:-----:| |
| 141 | +| Regressions πΏ <br /> (primary) | N/A | N/A | 0 | |
| 142 | +| Regressions πΏ <br /> (secondary) | N/A | N/A | 0 | |
| 143 | +| Improvements π <br /> (primary) | -0.4% | -1.7% | 54 | |
| 144 | +| Improvements π <br /> (secondary) | -7.4% | -90.8% | 17 | |
| 145 | +| All πΏπ (primary) | -0.4% | -1.7% | 54 | |
| 146 | + |
| 147 | + |
| 148 | +[RFC 2011] Expand expressions where possible [#98148](https://github.com/rust-lang/rust/pull/98148) |
| 149 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=08871139915b95ec868aff807f224f78d00f4311&end=42dcf70f99c21c6d59ad036e33e846769b369fff&stat=instructions:u) |
| 150 | + |
| 151 | +| | mean | max | count | |
| 152 | +|:----------:|:----:|:---:|:-----:| |
| 153 | +| Regressions πΏ <br /> (primary) | N/A | N/A | 0 | |
| 154 | +| Regressions πΏ <br /> (secondary) | N/A | N/A | 0 | |
| 155 | +| Improvements π <br /> (primary) | -0.3% | -0.4% | 2 | |
| 156 | +| Improvements π <br /> (secondary) | -0.7% | -0.8% | 6 | |
| 157 | +| All πΏπ (primary) | -0.3% | -0.4% | 2 | |
| 158 | + |
| 159 | +Compile `unicode-normalization` faster [#97936](https://github.com/rust-lang/rust/pull/97936) |
| 160 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=3bebee73397b692e84b9cc1b6af439fae78918c9&end=cacc75c82ebe15cf63d31034fcf7f1016cddf0e2&stat=instructions:u) |
| 161 | + |
| 162 | +| | mean | max | count | |
| 163 | +|:----------:|:----:|:---:|:-----:| |
| 164 | +| Regressions πΏ <br /> (primary) | N/A | N/A | 0 | |
| 165 | +| Regressions πΏ <br /> (secondary) | 1.0% | 1.0% | 1 | |
| 166 | +| Improvements π <br /> (primary) | -14.2% | -19.4% | 6 | |
| 167 | +| Improvements π <br /> (secondary) | N/A | N/A | 0 | |
| 168 | +| All πΏπ (primary) | -14.2% | -19.4% | 6 | |
| 169 | + |
| 170 | +A solid improvement, though just to the one benchmark; coercions change in the |
| 171 | +regressions section is likely just noise, not an actual meaningful delta. |
| 172 | + |
| 173 | +#### Mixed |
| 174 | + |
| 175 | +Use valtrees as the type-system representation for constant values [#96591](https://github.com/rust-lang/rust/pull/96591) |
| 176 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=872503d918b2c3266d828f85e42951df74f5e303&end=1f34da9ec8a85b6f86c5fa1c121ab6f88f2f4966&stat=instructions:u) |
| 177 | + |
| 178 | +| | mean | max | count | |
| 179 | +|:----------:|:----:|:---:|:-----:| |
| 180 | +| Regressions πΏ <br /> (primary) | 0.4% | 0.6% | 54 | |
| 181 | +| Regressions πΏ <br /> (secondary) | 3.1% | 14.3% | 29 | |
| 182 | +| Improvements π <br /> (primary) | -3.0% | -5.9% | 10 | |
| 183 | +| Improvements π <br /> (secondary) | -1.1% | -1.6% | 7 | |
| 184 | +| All πΏπ (primary) | -0.2% | -5.9% | 64 | |
| 185 | + |
| 186 | +Large change (over 2000 lines changed) that is a first step for further work on |
| 187 | +constant evaluation in the compiler. Overall this is still an improvement, and |
| 188 | +regressions are primarily on stress tests. See [this |
| 189 | +comment](https://github.com/rust-lang/rust/pull/96591#issuecomment-1156381494) |
| 190 | +for some further context. |
| 191 | + |
| 192 | +Split up `Definitions` and `ResolverAstLowering`. [#98106](https://github.com/rust-lang/rust/pull/98106) |
| 193 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ecdd374e6123d79b89c3ecea618d827c931b81cd&end=3a8b0144c82197a70e919ad371d56f82c2282833&stat=instructions:u) |
| 194 | + |
| 195 | +| | mean | max | count | |
| 196 | +|:----------:|:----:|:---:|:-----:| |
| 197 | +| Regressions πΏ <br /> (primary) | N/A | N/A | 0 | |
| 198 | +| Regressions πΏ <br /> (secondary) | 0.4% | 0.5% | 9 | |
| 199 | +| Improvements π <br /> (primary) | -0.3% | -0.6% | 39 | |
| 200 | +| Improvements π <br /> (secondary) | -0.3% | -0.6% | 5 | |
| 201 | +| All πΏπ (primary) | -0.3% | -0.6% | 39 | |
| 202 | + |
| 203 | + |
| 204 | +btree: avoid forcing the allocator to be a reference [#98178](https://github.com/rust-lang/rust/pull/98178) |
| 205 | +[(Comparison Link)](https://perf.rust-lang.org/compare.html?start=529c4c71793fbf4305d65b1c4d826a5d0e748fb3&end=ff86b27e7be1ffff9e00d80beb15560d5f301459&stat=instructions:u) |
| 206 | + |
| 207 | +| | mean | max | count | |
| 208 | +|:----------:|:----:|:---:|:-----:| |
| 209 | +| Regressions πΏ <br /> (primary) | 0.4% | 0.4% | 1 | |
| 210 | +| Regressions πΏ <br /> (secondary) | N/A | N/A | 0 | |
| 211 | +| Improvements π <br /> (primary) | -2.0% | -2.0% | 1 | |
| 212 | +| Improvements π <br /> (secondary) | N/A | N/A | 0 | |
| 213 | +| All πΏπ (primary) | -0.8% | -2.0% | 2 | |
0 commit comments