|
| 1 | +# 2022-10-26 Triage Log |
| 2 | + |
| 3 | +An amazing week. We saw more wins than losses; I want to call out specifically |
| 4 | +the wins from removing attributes from metadata (up to 8.2% faster builds for 18 |
| 5 | +benchmarks) and from enabling LTO for rustc_driver.so (up to 9.6% faster builds |
| 6 | +for an epic 230 benchmarks, with *zero* regressions). |
| 7 | + |
| 8 | +Triage done by **@pnkfelix**. |
| 9 | +Revision range: [e0f8e60d..629a414d](https://perf.rust-lang.org/?start=e0f8e60dddfecfc9093ee9d9f42557d8260c0355&end=629a414d7ba4caa3ca28b0a46c478e2ecb4c0059&absolute=false&stat=instructions%3Au) |
| 10 | + |
| 11 | +**Summary**: |
| 12 | + |
| 13 | +| (instructions:u) | mean | range | count | |
| 14 | +|:----------------:|:----:|:-----:|:-----:| |
| 15 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 16 | +| Regressions ❌ <br /> (secondary) | 0.7% | [0.7%, 0.7%] | 2 | |
| 17 | +| Improvements ✅ <br /> (primary) | -4.3% | [-9.4%, -0.4%] | 231 | |
| 18 | +| Improvements ✅ <br /> (secondary) | -4.4% | [-9.5%, -0.5%] | 256 | |
| 19 | +| All ❌✅ (primary) | -4.3% | [-9.4%, -0.4%] | 231 | |
| 20 | + |
| 21 | + |
| 22 | +2 Regressions, 6 Improvements, 2 Mixed; 2 of them in rollups |
| 23 | +53 artifact comparisons made in total |
| 24 | + |
| 25 | +#### Regressions |
| 26 | + |
| 27 | +Add default trait implementations for "c-unwind" ABI function pointers [#101263](https://github.com/rust-lang/rust/pull/101263) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=57e2c06a8df3187980801962015a88657abd033d&end=5c8bff74bc1c52bef0c79f3689bb227f51f3e82d&stat=instructions:u) |
| 28 | + |
| 29 | +| (instructions:u) | mean | range | count | |
| 30 | +|:----------------:|:----:|:-----:|:-----:| |
| 31 | +| Regressions ❌ <br /> (primary) | 0.9% | [0.2%, 2.6%] | 19 | |
| 32 | +| Regressions ❌ <br /> (secondary) | 1.9% | [0.4%, 3.0%] | 23 | |
| 33 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 34 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 35 | +| All ❌✅ (primary) | 0.9% | [0.2%, 2.6%] | 19 | |
| 36 | + |
| 37 | +* already triaged; all doc perf regressions, and already deemed acceptable. |
| 38 | + |
| 39 | + |
| 40 | +Rollup of 10 pull requests [#103562](https://github.com/rust-lang/rust/pull/103562) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d49e7e7fa13479c11a3733824c78e280e391288b&end=629a414d7ba4caa3ca28b0a46c478e2ecb4c0059&stat=instructions:u) |
| 41 | + |
| 42 | +| (instructions:u) | mean | range | count | |
| 43 | +|:----------------:|:----:|:-----:|:-----:| |
| 44 | +| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.4%] | 43 | |
| 45 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.2%, 1.2%] | 25 | |
| 46 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 47 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 48 | +| All ❌✅ (primary) | 0.3% | [0.2%, 0.4%] | 43 | |
| 49 | + |
| 50 | +* all of the primary regressions (which seem small) are all in incr-patched scenarios. Most are also check builds, though there is some debug and opt mixed in as well. |
| 51 | +* hard to tell from the list of rolled up PR's which one(s) would be to blame here |
| 52 | +* w.r.t. the secondary benchmarks, the main contributor (in terms of the max regression observed) is `deeply-nested-multi`, which regressed by 0.74--1.2% depending on the scenario. |
| 53 | + * (In this case, the 1.2% regression is to a full build, not an incremental one.) |
| 54 | +* In any case, the sheer number of impacted benchmarks is large enough that this warrants further review. Not marking as triaged. I'll try to dig into it later. |
| 55 | + |
| 56 | +#### Improvements |
| 57 | + |
| 58 | +Use Set instead of Vec in transitive_relation [#103214](https://github.com/rust-lang/rust/pull/103214) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d7dd01fe8b071602510eaac9f676acc0e3cf8e4a&end=4b8f4319954ff2642690b9e5cbe4af352d095bf6&stat=instructions:u) |
| 59 | + |
| 60 | +| (instructions:u) | mean | range | count | |
| 61 | +|:----------------:|:----:|:-----:|:-----:| |
| 62 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 63 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 64 | +| Improvements ✅ <br /> (primary) | -0.6% | [-0.7%, -0.6%] | 2 | |
| 65 | +| Improvements ✅ <br /> (secondary) | -1.2% | [-1.6%, -0.6%] | 7 | |
| 66 | +| All ❌✅ (primary) | -0.6% | [-0.7%, -0.6%] | 2 | |
| 67 | + |
| 68 | +* as noted in PR description: "doesn't fix the underlying quadraticness but it makes it a lot faster to an extent where even doubling the amount of nested references still takes less than two seconds (50s on nightly)." |
| 69 | + |
| 70 | +Remove more attributes from metadata [#98450](https://github.com/rust-lang/rust/pull/98450) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=657f246812ab2684e3c3954b1c77f98fd59e0b21&end=ba9d01be67a97dd6762935762172e37ee22083ae&stat=instructions:u) |
| 71 | + |
| 72 | +| (instructions:u) | mean | range | count | |
| 73 | +|:----------------:|:----:|:-----:|:-----:| |
| 74 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 75 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.3%, 0.3%] | 1 | |
| 76 | +| Improvements ✅ <br /> (primary) | -2.7% | [-8.2%, -0.2%] | 18 | |
| 77 | +| Improvements ✅ <br /> (secondary) | -5.5% | [-8.4%, -0.8%] | 23 | |
| 78 | +| All ❌✅ (primary) | -2.7% | [-8.2%, -0.2%] | 18 | |
| 79 | + |
| 80 | +* This PR's comment+development history are pretty epic. :smile: |
| 81 | +* anyway, great work from @lqd and @GuillaumeGomez |
| 82 | + |
| 83 | +stop using `ty::UnevaluatedConst` directly [#103227](https://github.com/rust-lang/rust/pull/103227) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=3022afe3d144ca6acd34da9846ab74fa51328fda&end=26c96e341639102afacbbcad0dc18ad0ac71ab18&stat=instructions:u) |
| 84 | + |
| 85 | +| (instructions:u) | mean | range | count | |
| 86 | +|:----------------:|:----:|:-----:|:-----:| |
| 87 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 88 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 89 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.2%] | 10 | |
| 90 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 91 | +| All ❌✅ (primary) | -0.3% | [-0.4%, -0.2%] | 10 | |
| 92 | + |
| 93 | + |
| 94 | +Enable LTO for rustc_driver.so [#101403](https://github.com/rust-lang/rust/pull/101403) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=9be2f35a4c1ed1b04aa4a6945b64763f599259ff&end=1ca6777c014813e3bdb98d155562fc3d111d86dd&stat=instructions:u) |
| 95 | + |
| 96 | +| (instructions:u) | mean | range | count | |
| 97 | +|:----------------:|:----:|:-----:|:-----:| |
| 98 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 99 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 100 | +| Improvements ✅ <br /> (primary) | -4.2% | [-9.6%, -0.4%] | 230 | |
| 101 | +| Improvements ✅ <br /> (secondary) | -4.0% | [-9.5%, -0.4%] | 257 | |
| 102 | +| All ❌✅ (primary) | -4.2% | [-9.6%, -0.4%] | 230 | |
| 103 | + |
| 104 | +* Holy cow: 9.6% faster compiling diesel, 7% faster compiling serde, 1.3% faster bootstrap. Epic wins there. |
| 105 | +* there is perhaps concern that it caused [#103538](https://github.com/rust-lang/rust/issues/103538): "rustc-dev component recently became a lot bigger" |
| 106 | + |
| 107 | +Rollup of 11 pull requests [#103502](https://github.com/rust-lang/rust/pull/103502) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=758f19645b8ebce61ea52d1f6672fd057bc8dbee&end=f2702e922ba31e49d6167f5651d4545646dcf22d&stat=instructions:u) |
| 108 | + |
| 109 | +| (instructions:u) | mean | range | count | |
| 110 | +|:----------------:|:----:|:-----:|:-----:| |
| 111 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 112 | +| Regressions ❌ <br /> (secondary) | 2.3% | [2.3%, 2.3%] | 1 | |
| 113 | +| Improvements ✅ <br /> (primary) | -0.5% | [-0.5%, -0.5%] | 1 | |
| 114 | +| Improvements ✅ <br /> (secondary) | -0.9% | [-1.2%, -0.8%] | 6 | |
| 115 | +| All ❌✅ (primary) | -0.5% | [-0.5%, -0.5%] | 1 | |
| 116 | + |
| 117 | + |
| 118 | + |
| 119 | +Perf improvements for effective visibility calculating [#103158](https://github.com/rust-lang/rust/pull/103158) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=6365e5ad9fa9e2ec867a67aeeae414e7c62d8354&end=a5406feb1cf1a9f2479b72917cf4225e5f6aa240&stat=instructions:u) |
| 120 | + |
| 121 | +| (instructions:u) | mean | range | count | |
| 122 | +|:----------------:|:----:|:-----:|:-----:| |
| 123 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 124 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 125 | +| Improvements ✅ <br /> (primary) | -0.4% | [-0.5%, -0.3%] | 6 | |
| 126 | +| Improvements ✅ <br /> (secondary) | -0.6% | [-2.0%, -0.2%] | 22 | |
| 127 | +| All ❌✅ (primary) | -0.4% | [-0.5%, -0.3%] | 6 | |
| 128 | + |
| 129 | +* libc build times improved by ~1% in ten scenarios |
| 130 | + |
| 131 | + |
| 132 | + |
| 133 | +#### Mixed |
| 134 | + |
| 135 | +Deny hashing ty/re/ct inference variables [#103220](https://github.com/rust-lang/rust/pull/103220) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ebdde35dced40adb46f8aad054fb2adb86b39427&end=4b3b731b55a588dd34a75bbb87fdaaec2e3f5707&stat=instructions:u) |
| 136 | + |
| 137 | +| (instructions:u) | mean | range | count | |
| 138 | +|:----------------:|:----:|:-----:|:-----:| |
| 139 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 140 | +| Regressions ❌ <br /> (secondary) | 0.8% | [0.5%, 1.2%] | 8 | |
| 141 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.3%, -0.2%] | 2 | |
| 142 | +| Improvements ✅ <br /> (secondary) | -0.9% | [-1.0%, -0.5%] | 9 | |
| 143 | +| All ❌✅ (primary) | -0.2% | [-0.3%, -0.2%] | 2 | |
| 144 | + |
| 145 | +* already triaged: "The perf changes are small and the wins balance out the losses. No need to stress on this one, I think." |
| 146 | + |
| 147 | +Remove ParamEnv from uninhabited query [#102660](https://github.com/rust-lang/rust/pull/102660) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=6e95b6da885f42a4e1314595089fa4295e329d11&end=6c9c2d862dd10718ba2b2a320c3390995ad414bc&stat=instructions:u) |
| 148 | + |
| 149 | +| (instructions:u) | mean | range | count | |
| 150 | +|:----------------:|:----:|:-----:|:-----:| |
| 151 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 152 | +| Regressions ❌ <br /> (secondary) | 1.5% | [1.2%, 1.7%] | 7 | |
| 153 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.2%, -0.2%] | 2 | |
| 154 | +| Improvements ✅ <br /> (secondary) | -1.2% | [-1.2%, -1.2%] | 3 | |
| 155 | +| All ❌✅ (primary) | -0.2% | [-0.2%, -0.2%] | 2 | |
| 156 | + |
| 157 | +* Not sure why this was flagged as Mixed rather than Improvement. |
| 158 | +* Marked as triaged. |
| 159 | + |
| 160 | +#### Untriaged Pull Requests |
| 161 | + |
| 162 | +- [#103562 Rollup of 10 pull requests](https://github.com/rust-lang/rust/pull/103562) |
| 163 | +- [#102975 Rollup of 7 pull requests](https://github.com/rust-lang/rust/pull/102975) |
| 164 | +- [#102915 Rollup of 7 pull requests](https://github.com/rust-lang/rust/pull/102915) |
| 165 | +- [#102895 Get rid of `rustc_query_description!`](https://github.com/rust-lang/rust/pull/102895) |
| 166 | +- [#102867 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/102867) |
| 167 | +- [#102809 Rollup of 8 pull requests](https://github.com/rust-lang/rust/pull/102809) |
| 168 | +- [#102660 Remove ParamEnv from uninhabited query](https://github.com/rust-lang/rust/pull/102660) |
| 169 | +- [#102548 Mark Cell::replace() as #[inline]](https://github.com/rust-lang/rust/pull/102548) |
| 170 | +- [#102026 Populate effective visibilities in 'rustc_resolve'](https://github.com/rust-lang/rust/pull/102026) |
| 171 | +- [#101858 derive various impls instead of hand-rolling them](https://github.com/rust-lang/rust/pull/101858) |
| 172 | +- [#101857 change `FnMutDelegate` to trait objects](https://github.com/rust-lang/rust/pull/101857) |
| 173 | +- [#101632 Remove `TypeckResults` from `InferCtxt`](https://github.com/rust-lang/rust/pull/101632) |
| 174 | +- [#101620 Compute lint levels by definition](https://github.com/rust-lang/rust/pull/101620) |
| 175 | +- [#101433 Emit a note that static bounds from HRTBs are a bug](https://github.com/rust-lang/rust/pull/101433) |
| 176 | +- [#100982 Require `#[const_trait]` on `Trait` for `impl const Trait`](https://github.com/rust-lang/rust/pull/100982) |
| 177 | +- [#100963 Rollup of 15 pull requests](https://github.com/rust-lang/rust/pull/100963) |
| 178 | +- [#100869 Replace `rustc_data_structures::thin_vec::ThinVec` with `thin_vec::ThinVec`](https://github.com/rust-lang/rust/pull/100869) |
| 179 | +- [#100841 update Miri](https://github.com/rust-lang/rust/pull/100841) |
| 180 | +- [#100759 Make `const_eval_select` a real intrinsic](https://github.com/rust-lang/rust/pull/100759) |
| 181 | +- [#100748 add `depth_limit` in `QueryVTable` to avoid entering a new tcx in `layout_of`](https://github.com/rust-lang/rust/pull/100748) |
| 182 | +- [#100676 implied bounds: explicitly state which types are assumed to be wf](https://github.com/rust-lang/rust/pull/100676) |
| 183 | +- [#100652 Remove deferred sized checks (make them eager)](https://github.com/rust-lang/rust/pull/100652) |
| 184 | +- [#100497 Avoid cloning a collection only to iterate over it](https://github.com/rust-lang/rust/pull/100497) |
| 185 | +- [#100429 rustdoc: Merge source code pages HTML elements together](https://github.com/rust-lang/rust/pull/100429) |
| 186 | +- [#100293 Add inline-llvm option for disabling/enabling LLVM inlining](https://github.com/rust-lang/rust/pull/100293) |
| 187 | +- [#100096 a fn pointer doesn't implement `Fn`/`FnMut`/`FnOnce` if its return type isn't sized](https://github.com/rust-lang/rust/pull/100096) |
| 188 | +- [#99792 Rollup of 8 pull requests](https://github.com/rust-lang/rust/pull/99792) |
| 189 | +- [#99520 Rollup of 9 pull requests](https://github.com/rust-lang/rust/pull/99520) |
| 190 | +- [#99251 Upgrade indexmap and thorin-dwp to use hashbrown 0.12](https://github.com/rust-lang/rust/pull/99251) |
| 191 | +- [#99231 Rollup of 5 pull requests](https://github.com/rust-lang/rust/pull/99231) |
| 192 | + |
| 193 | +#### Nags requiring follow up |
| 194 | + |
| 195 | +TODO: Nags |
| 196 | + |
0 commit comments