|
| 1 | +# 2021-10-05 Triage Log |
| 2 | + |
| 3 | +A fairly busy week, with a relatively high percentage of PRs landing with |
| 4 | +regressions and improvements. The overall trajectory is fairly neutral for this |
| 5 | +week though. |
| 6 | + |
| 7 | +Triage done by **@simulacrum**. |
| 8 | +Revision range: [83f147b3baf21acfc367a6da1045d212cd3957e4..25ec8273855fde2d72ae877b397e054de5300e10](https://perf.rust-lang.org/?start=83f147b3baf21acfc367a6da1045d212cd3957e4&end=25ec8273855fde2d72ae877b397e054de5300e10&absolute=false&stat=instructions%3Au) |
| 9 | + |
| 10 | +5 Regressions, 5 Improvements, 5 Mixed; 1 of them in rollups |
| 11 | + |
| 12 | +43 comparisons made in total |
| 13 | + |
| 14 | +#### Regressions |
| 15 | + |
| 16 | +Don't anonymize bound region names during typeck [#89250](https://github.com/rust-lang/rust/issues/89250) |
| 17 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=30acf6def32a340b4bfce6e1e2638f1b05ac2cd9&end=69c1c6a173dcae20c245348f6c7d19074b6109b7&stat=instructions:u) (up to 0.6% on `full` builds of `coercions`) |
| 18 | +- Regression seems to be real, though no regressions in cycle counts are |
| 19 | + reported, so this is likely an acceptable hit. |
| 20 | + |
| 21 | +Constify ?-operator for Result and Option [#86853](https://github.com/rust-lang/rust/issues/86853) |
| 22 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=69c1c6a173dcae20c245348f6c7d19074b6109b7&end=c6007fdc7059c677a6c089e8d2915b264c0d1326&stat=instructions:u) (up to 0.5% on `incr-full` builds of `stm32f4`) |
| 23 | +- This is a small regression on the stm32f4 crate, due to a number of extra |
| 24 | + obligations that are created, presumably due to the checks for whether ? |
| 25 | + operators in this crate can be const. It is likely an acceptable change for |
| 26 | + the time being, particularly as the const-impls functionality is still in |
| 27 | + nascent stages and optimizations may come down the line. |
| 28 | +- The PR ended up temporarily reverted by |
| 29 | + [#89450](https://github.com/rust-lang/rust/issues/89450), though not due to |
| 30 | + performance reasons. |
| 31 | + |
| 32 | +Fix read_to_end to not grow an exact size buffer [#89165](https://github.com/rust-lang/rust/issues/89165) |
| 33 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=e737694a4d66b01308b73d4559a35b43e414faf9&end=d25de31a0eeb14ab0c8c4613496fe2d3d9a085dd&stat=instructions:u) (up to 0.7% on `full` builds of `piston-image`) |
| 34 | +- This regression is unclear in cause, and investigation on the PR did not lead |
| 35 | + to a conclusion. However, the regression is fairly small and the change is |
| 36 | + expected to have impacts on more I/O heavy benchmarks than rustc is. |
| 37 | + Syscall counts were shown to improve on the PR, including for rustc, so the |
| 38 | + optimization seems to work in general. |
| 39 | + |
| 40 | +Fix unsound optimization with explicit variant discriminants [#89489](https://github.com/rust-lang/rust/issues/89489) |
| 41 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=44593aeb1387b1be355aeaf0040d5927bd80f060&end=a4797664ba9c7d71e586122853858eeb6c153bb9&stat=instructions:u) (up to 2.3% on `full` builds of `style-servo`) |
| 42 | +- This is an expected regression, but is clearly justified by the fix for an |
| 43 | + unsound optimization. We expect to reland it with appropriate changes in the |
| 44 | + future. |
| 45 | + |
| 46 | +Fix clippy lints [#89405](https://github.com/rust-lang/rust/issues/89405) |
| 47 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a8387aef8c378a771686878062e544af4d5e2245&end=b27661eb33c74cb514dba059b47d86b6582ac1c2&stat=instructions:u) (up to 0.4% on `incr-unchanged` builds of `helloworld`) |
| 48 | +- Likely to be painful to investigate -- changes are widely scattered across the |
| 49 | + codebase and in theory "no-ops". |
| 50 | + |
| 51 | + |
| 52 | +#### Improvements |
| 53 | + |
| 54 | +Restructure std::rt [#89011](https://github.com/rust-lang/rust/issues/89011) |
| 55 | +- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=50f9f7810c975234ce4730488d32661a76a00428&end=11491938f80988c7261a1179cf71a25c379c8783&stat=instructions:u) (up to -4.0% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo`) |
| 56 | +- Significant improvement for this particular incremental benchmark (due to |
| 57 | + avoiding inlining from particular modules and as such recompilation of some |
| 58 | + CGUs) and -- as noted on the PR -- also a code size improvement, particularly |
| 59 | + relevant for small binaries. |
| 60 | + |
| 61 | +Remove visible path calculation from allowed deprecation lint [#89395](https://github.com/rust-lang/rust/issues/89395) |
| 62 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=598d89bf142823b5d84e2eb0f0f9e418ee966a4b&end=4e4942dfa66667c0addfff8e0882a59b035d45ca&stat=instructions:u) (up to -10.9% on `incr-patched: minor change` builds of `tokio-webpush-simple`) |
| 63 | +- Excellent improvement in multiple benchmarks, though unlikely to be terribly |
| 64 | + representative. Most of these benchmarks have -A deprecated passed by the |
| 65 | + perf.rlo runtime currently (since we do not meaningfully update benchmarks |
| 66 | + over time, we build up deprecation warnings). |
| 67 | + |
| 68 | + |
| 69 | +Avoid nondeterminism in trimmed_def_paths [#89408](https://github.com/rust-lang/rust/issues/89408) |
| 70 | +- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=b27661eb33c74cb514dba059b47d86b6582ac1c2&end=edebf77e0090195bf80c0d8cda821e1bf9d03053&stat=instructions:u) (up to -2.0% on `incr-unchanged` builds of `webrender-wrench`) |
| 71 | +- Fixes a regression introduced in |
| 72 | + [#83343](https://github.com/rust-lang/rust/pull/83343), not a standalone |
| 73 | + improvement. |
| 74 | + |
| 75 | + |
| 76 | +Rollup of 14 pull requests [#89512](https://github.com/rust-lang/rust/issues/89512) |
| 77 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=d25de31a0eeb14ab0c8c4613496fe2d3d9a085dd&end=44593aeb1387b1be355aeaf0040d5927bd80f060&stat=instructions:u) (up to -1.4% on `incr-patched: static str 6144` builds of `issue-46449`) |
| 78 | +- Unclear cause, but unlikely to receive much investigation as it's an |
| 79 | + improvement in a rollup -- we prioritize regressions. |
| 80 | + |
| 81 | +Deriving: Include bound generic params in type parameters for where clause [#89341](https://github.com/rust-lang/rust/issues/89341) |
| 82 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=d14731cb3ced8318d7fc83cbe838f0e7f2fb3b40&end=f03eb6bef8ced8a243858b819e013b9caf83d757&stat=instructions:u) (up to -0.4% on `incr-unchanged` builds of `helloworld`) |
| 83 | + |
| 84 | + |
| 85 | +#### Mixed |
| 86 | + |
| 87 | +Add more tracing instrumentation [#89048](https://github.com/rust-lang/rust/issues/89048) |
| 88 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=1d71ba862309d59df710078a845c8772ffb22aba&end=8f8092cc32ec171becef8ceacec7dbb06c5d7d7e&stat=instructions:u) (up to -1.6% on `full` builds of `keccak`) |
| 89 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=1d71ba862309d59df710078a845c8772ffb22aba&end=8f8092cc32ec171becef8ceacec7dbb06c5d7d7e&stat=instructions:u) (up to 12.0% on `full` builds of `ctfe-stress-4`) |
| 90 | +- Regression is mitigated by |
| 91 | + [#89363](https://github.com/rust-lang/rust/pull/89363), which just barely |
| 92 | + missed being included in this report. |
| 93 | + |
| 94 | + |
| 95 | +Add an intermediate representation to exhaustiveness checking [#88950](https://github.com/rust-lang/rust/issues/88950) |
| 96 | +- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=8f8092cc32ec171becef8ceacec7dbb06c5d7d7e&end=6df1d82869d06b88ff413e63a1e8efbb311e3b5c&stat=instructions:u) (up to -2.6% on `full` builds of `unicode_normalization`) |
| 97 | +- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=8f8092cc32ec171becef8ceacec7dbb06c5d7d7e&end=6df1d82869d06b88ff413e63a1e8efbb311e3b5c&stat=instructions:u) (up to 2.9% on `full` builds of `match-stress-enum`) |
| 98 | +- Code quality improvements mitigate the regressions, which are largely limited |
| 99 | + to a stress test. |
| 100 | + |
| 101 | + |
| 102 | +Rollup of 6 pull requests [#89435](https://github.com/rust-lang/rust/issues/89435) |
| 103 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=ed937594d3912ced11f6f35a90bb8bf591909d2a&end=b6057bf7b7ee7c58e6a39ead02eaa13b75f908c2&stat=instructions:u) (up to -0.3% on `incr-unchanged` builds of `helloworld`) |
| 104 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=ed937594d3912ced11f6f35a90bb8bf591909d2a&end=b6057bf7b7ee7c58e6a39ead02eaa13b75f908c2&stat=instructions:u) (up to 0.8% on `incr-unchanged` builds of `externs`) |
| 105 | +- Unclear cause for the regression. Hasn't been investigated yet. |
| 106 | + |
| 107 | + |
| 108 | +Rework HIR API to make invocations of the hir_crate query harder. [#88880](https://github.com/rust-lang/rust/issues/88880) |
| 109 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=b6057bf7b7ee7c58e6a39ead02eaa13b75f908c2&end=c02371c442f811878ab3a0f5a813402b6dfd45d2&stat=instructions:u) (up to -0.4% on `incr-unchanged` builds of `helloworld`) |
| 110 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=b6057bf7b7ee7c58e6a39ead02eaa13b75f908c2&end=c02371c442f811878ab3a0f5a813402b6dfd45d2&stat=instructions:u) (up to 0.2% on `full` builds of `many-assoc-items`) |
| 111 | +- Regressions are smaller than improvements. Original perf run didn't return |
| 112 | + regressions at all. Tagged for investigation. |
| 113 | + |
| 114 | +resolve: Cache module loading for all foreign modules [#89239](https://github.com/rust-lang/rust/issues/89239) |
| 115 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=edebf77e0090195bf80c0d8cda821e1bf9d03053&end=d14731cb3ced8318d7fc83cbe838f0e7f2fb3b40&stat=instructions:u) (up to 0.8% on `incr-unchanged` builds of `tokio-webpush-simple`) |
| 116 | +- From the PR: This corrects behaviour for macros 2.0 and avoids an ICE, so a |
| 117 | + 0.8% regression seems acceptable. |
| 118 | + |
| 119 | +#### Untriaged Pull Requests |
| 120 | + |
| 121 | +Investigation work continues, and we're down to 22 from 28 untriaged PRs week |
| 122 | +over week. |
| 123 | + |
| 124 | +- [#89435 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/89435) |
| 125 | +- [#89363 Fix performance regression with #[instrument]](https://github.com/rust-lang/rust/pull/89363) |
| 126 | +- [#89263 Suggest both of immutable and mutable trait implementations](https://github.com/rust-lang/rust/pull/89263) |
| 127 | +- [#89165 Fix read_to_end to not grow an exact size buffer](https://github.com/rust-lang/rust/pull/89165) |
| 128 | +- [#89125 Don't use projection cache or candidate cache in intercrate mode](https://github.com/rust-lang/rust/pull/89125) |
| 129 | +- [#89103 Migrate in-tree crates to 2021](https://github.com/rust-lang/rust/pull/89103) |
| 130 | +- [#89047 Rollup of 10 pull requests](https://github.com/rust-lang/rust/pull/89047) |
| 131 | +- [#89030 Introduce `Rvalue::ShallowInitBox`](https://github.com/rust-lang/rust/pull/89030) |
| 132 | +- [#88945 Remove concept of 'completion' from the projection cache](https://github.com/rust-lang/rust/pull/88945) |
| 133 | +- [#88824 Rollup of 15 pull requests](https://github.com/rust-lang/rust/pull/88824) |
| 134 | +- [#88804 Revise never type fallback algorithm](https://github.com/rust-lang/rust/pull/88804) |
| 135 | +- [#88719 Point at argument instead of call for their obligations](https://github.com/rust-lang/rust/pull/88719) |
| 136 | +- [#88703 Gather module items after lowering.](https://github.com/rust-lang/rust/pull/88703) |
| 137 | +- [#88627 Do not preallocate HirIds](https://github.com/rust-lang/rust/pull/88627) |
| 138 | +- [#88575 Querify `FnAbi::of_{fn_ptr,instance}` as `fn_abi_of_{fn_ptr,instance}`.](https://github.com/rust-lang/rust/pull/88575) |
| 139 | +- [#88308 Morph `layout_raw` query into `layout_of`.](https://github.com/rust-lang/rust/pull/88308) |
| 140 | +- [#87781 Remove box syntax from compiler and tools](https://github.com/rust-lang/rust/pull/87781) |
| 141 | +- [#87688 Introduce `let...else`](https://github.com/rust-lang/rust/pull/87688) |
| 142 | +- [#87064 Support `#[track_caller]` on closures and generators](https://github.com/rust-lang/rust/pull/87064) |
| 143 | +- [#83698 Use undef for uninitialized bytes in constants](https://github.com/rust-lang/rust/pull/83698) |
| 144 | +- [#83302 Get piece unchecked in `write`](https://github.com/rust-lang/rust/pull/83302) |
| 145 | +- [#80522 Split rustc_mir](https://github.com/rust-lang/rust/pull/80522) |
0 commit comments