|
| 1 | +# 2021-10-26 Triage Log |
| 2 | + |
| 3 | +Multiple regressions this week, several of which were in rollups, without much |
| 4 | +to balance them out on the improvements front. |
| 5 | + |
| 6 | +Triage done by **@simulacrum**. |
| 7 | +Revision range: [d45ed7502ad225739270a368528725930f54b7b6..3c8f001d454b1b495f7472d8430ef8fdf10aac11](https://perf.rust-lang.org/?start=d45ed7502ad225739270a368528725930f54b7b6&end=3c8f001d454b1b495f7472d8430ef8fdf10aac11&absolute=false&stat=instructions%3Au) |
| 8 | + |
| 9 | +5 Regressions, 4 Improvements, 3 Mixed; 3 of them in rollups; |
| 10 | +35 comparisons made in total |
| 11 | + |
| 12 | +#### Regressions |
| 13 | + |
| 14 | +resolve: Use `NameBinding` for local variables and generic parameters [#89100](https://github.com/rust-lang/rust/issues/89100) |
| 15 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=42983a28ab3c70728da7a9b932b667c978dd898d&end=6162529a01473bbb2427fa27354cbafc3c514eee&stat=instructions:u) (up to 99.5% on `incr-unchanged` builds of `style-servo`) |
| 16 | +- Reverted in #90130. |
| 17 | + |
| 18 | +Rollup of 6 pull requests [#90235](https://github.com/rust-lang/rust/issues/90235) |
| 19 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=ed08a67566d7d1d9dd2ad928ff21c23e841a4345&end=00d5e42e776da900049fe19087bc9b0057ec70cd&stat=instructions:u) (up to 9.8% on `incr-full` builds of `deeply-nested-async`) |
| 20 | +- Probably caused by new compiler-internal lint |
| 21 | + ([#89558](https://github.com/rust-lang/rust/pull/89558)), which appears to be |
| 22 | + run on end-user code (despite being allow-by-default). Suggested a few |
| 23 | + possible fixes or a revert if we can't do so quickly. |
| 24 | + |
| 25 | +Inline CStr::from_ptr [#90007](https://github.com/rust-lang/rust/issues/90007) |
| 26 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=01198792a608b05e624b0127e76dd0753057016c&end=514b3877956dc594823106b66c164f8cdbc8b3da&stat=instructions:u) (up to 0.4% on `incr-unchanged` builds of `helloworld`) |
| 27 | +- Regression limited to stress tests and fairly minor. Seems likely to be a |
| 28 | + litle extra work in codegen, as the regressions are all in -opt builds. This |
| 29 | + change is done to permit better optimization, skipping a call to strlen in |
| 30 | + some cases, so seems worthwhile. |
| 31 | + |
| 32 | +Implement coherence checks for negative trait impls [#90104](https://github.com/rust-lang/rust/issues/90104) |
| 33 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=55ccbd090d96ec3bb28dbcb383e65bbfa3c293ff&end=aa5740c715001f981515ed46faaddebf67cb9539&stat=instructions:u) (up to 0.6% on `full` builds of `diesel`) |
| 34 | +- Looks like a real regression, but the feature is important and the regression |
| 35 | + is relatively small. |
| 36 | + |
| 37 | +Rollup of 5 pull requests [#90203](https://github.com/rust-lang/rust/issues/90203) |
| 38 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=aa5740c715001f981515ed46faaddebf67cb9539&end=91b931926fd49fc97d1e39f2b8206abf1d77ce7d&stat=instructions:u) (up to 0.6% on `full` builds of `externs`) |
| 39 | +- Regression limited to rustdoc, likely due to the addition of code-scraping |
| 40 | + from the examples directory. Does not seem major enough to warrant deep |
| 41 | + investigation, but have left a comment on the likely PR. |
| 42 | + |
| 43 | + |
| 44 | +#### Improvements |
| 45 | + |
| 46 | +Adopt let_else across the compiler [#89933](https://github.com/rust-lang/rust/issues/89933) |
| 47 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=c2452de12046850b8d4c00ce361569b24ad3ad8d&end=1af55d19c7a9189374d89472f97dc119659bb67e&stat=instructions:u) (up to -0.8% on `incr-unchanged` builds of `deeply-nested-async`) |
| 48 | +- Not clear exactly what the speedup comes from, but seems generally positive. |
| 49 | + |
| 50 | +Revert "resolve: Use NameBinding for local variables and generic parameters" [#90130](https://github.com/rust-lang/rust/issues/90130) |
| 51 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=e015ef5b2633960e7653b744d7a1c3d1d336313a&end=547a6ffee0cf4da9929a9e3d49546dc87d607735&stat=instructions:u) (up to -49.8% on `incr-unchanged` builds of `style-servo`) |
| 52 | +- Reverting a regression listed above. |
| 53 | + |
| 54 | +Specialize HashStable for [u8] slices [#90208](https://github.com/rust-lang/rust/issues/90208) |
| 55 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=a99c9d6518690023914abdbaad572634f857c4c2&end=bdcb52851231dc14bc6a7915dc62528cae7b8137&stat=instructions:u) (up to -8.0% on `incr-full` builds of `ctfe-stress-4`) |
| 56 | +- Found as part of perf investigation, speeds up primarily CTFE-heavy workloads. |
| 57 | + |
| 58 | +Build the query vtable directly. [#90210](https://github.com/rust-lang/rust/issues/90210) |
| 59 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=41d8c94d454f23239715a6433df79e46df8bce04&end=28d0e75269ad092662fef27f44c6aa029c376d49&stat=instructions:u) (up to -0.8% on `incr-unchanged` builds of `helloworld`) |
| 60 | +- Nice win on many benchmarks, though a small one. |
| 61 | + |
| 62 | + |
| 63 | +#### Mixed |
| 64 | + |
| 65 | +Rollup of 10 pull requests [#90067](https://github.com/rust-lang/rust/issues/90067) |
| 66 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=1af55d19c7a9189374d89472f97dc119659bb67e&end=42983a28ab3c70728da7a9b932b667c978dd898d&stat=instructions:u) (up to -1.4% on `incr-patched: println` builds of `coercions`) |
| 67 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=1af55d19c7a9189374d89472f97dc119659bb67e&end=42983a28ab3c70728da7a9b932b667c978dd898d&stat=instructions:u) (up to 1.1% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo`) |
| 68 | +- Left a comment with a few suggestions, but the regression and improvements |
| 69 | + seem both major and without obvious cause. |
| 70 | + |
| 71 | +Merge the two depkind vtables [#89978](https://github.com/rust-lang/rust/issues/89978) |
| 72 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=3d71e749a244890cd370d49963e747cf92f4a037&end=efd0483949496b067cd5f7569d1b28cd3d5d3c72&stat=instructions:u) (up to -2.0% on `incr-unchanged` builds of `helloworld`) |
| 73 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=3d71e749a244890cd370d49963e747cf92f4a037&end=efd0483949496b067cd5f7569d1b28cd3d5d3c72&stat=instructions:u) (up to 0.9% on `incr-unchanged` builds of `clap-rs`) |
| 74 | +- Improvements mostly outweigh the regressions |
| 75 | + |
| 76 | + |
| 77 | +Make new symbol mangling scheme default for compiler itself. [#90054](https://github.com/rust-lang/rust/issues/90054) |
| 78 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=514b3877956dc594823106b66c164f8cdbc8b3da&end=a3f7c4db0373aa077f86cdd1bf11122845d3b65a&stat=instructions:u) (up to -0.8% on `incr-unchanged` builds of `deeply-nested-async`) |
| 79 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=514b3877956dc594823106b66c164f8cdbc8b3da&end=a3f7c4db0373aa077f86cdd1bf11122845d3b65a&stat=instructions:u) (up to 0.4% on `incr-unchanged` builds of `deep-vector`) |
| 80 | +- Mostly improvements, and digging in is hard since tools like rustfilt have |
| 81 | + slightly different output across the symbol mangling boundary. Regressions |
| 82 | + seem limited to a just a few benchmarks and are small enough that this seems |
| 83 | + acceptable. |
| 84 | + |
| 85 | +#### Untriaged Pull Requests |
| 86 | + |
| 87 | +- [#90235 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/90235) |
| 88 | +- [#90067 Rollup of 10 pull requests](https://github.com/rust-lang/rust/pull/90067) |
| 89 | +- [#90054 Make new symbol mangling scheme default for compiler itself.](https://github.com/rust-lang/rust/pull/90054) |
| 90 | +- [#89939 Rollup of 10 pull requests](https://github.com/rust-lang/rust/pull/89939) |
| 91 | +- [#89858 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/89858) |
| 92 | +- [#89695 Move top part of print_item to Tera templates](https://github.com/rust-lang/rust/pull/89695) |
| 93 | +- [#89608 Rollup of 12 pull requests](https://github.com/rust-lang/rust/pull/89608) |
| 94 | +- [#89534 Introduce `tcx.get_diagnostic_name`](https://github.com/rust-lang/rust/pull/89534) |
| 95 | +- [#89435 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/89435) |
| 96 | +- [#89405 Fix clippy lints](https://github.com/rust-lang/rust/pull/89405) |
| 97 | +- [#89263 Suggest both of immutable and mutable trait implementations](https://github.com/rust-lang/rust/pull/89263) |
| 98 | +- [#89165 Fix read_to_end to not grow an exact size buffer](https://github.com/rust-lang/rust/pull/89165) |
| 99 | +- [#89125 Don't use projection cache or candidate cache in intercrate mode](https://github.com/rust-lang/rust/pull/89125) |
| 100 | +- [#89124 Index and hash HIR as part of lowering](https://github.com/rust-lang/rust/pull/89124) |
| 101 | +- [#89103 Migrate in-tree crates to 2021](https://github.com/rust-lang/rust/pull/89103) |
| 102 | +- [#89100 resolve: Use `NameBinding` for local variables and generic parameters](https://github.com/rust-lang/rust/pull/89100) |
| 103 | +- [#89047 Rollup of 10 pull requests](https://github.com/rust-lang/rust/pull/89047) |
| 104 | +- [#89030 Introduce `Rvalue::ShallowInitBox`](https://github.com/rust-lang/rust/pull/89030) |
| 105 | +- [#88945 Remove concept of 'completion' from the projection cache](https://github.com/rust-lang/rust/pull/88945) |
| 106 | +- [#88880 Rework HIR API to make invocations of the hir_crate query harder.](https://github.com/rust-lang/rust/pull/88880) |
| 107 | +- [#88824 Rollup of 15 pull requests](https://github.com/rust-lang/rust/pull/88824) |
| 108 | +- [#88804 Revise never type fallback algorithm](https://github.com/rust-lang/rust/pull/88804) |
| 109 | +- [#88719 Point at argument instead of call for their obligations](https://github.com/rust-lang/rust/pull/88719) |
| 110 | +- [#88703 Gather module items after lowering.](https://github.com/rust-lang/rust/pull/88703) |
| 111 | +- [#88627 Do not preallocate HirIds](https://github.com/rust-lang/rust/pull/88627) |
| 112 | +- [#88575 Querify `FnAbi::of_{fn_ptr,instance}` as `fn_abi_of_{fn_ptr,instance}`.](https://github.com/rust-lang/rust/pull/88575) |
| 113 | +- [#88540 add `slice::swap_unchecked`](https://github.com/rust-lang/rust/pull/88540) |
| 114 | +- [#88308 Morph `layout_raw` query into `layout_of`.](https://github.com/rust-lang/rust/pull/88308) |
| 115 | +- [#87781 Remove box syntax from compiler and tools](https://github.com/rust-lang/rust/pull/87781) |
| 116 | + |
| 117 | +#### Nags requiring follow up |
| 118 | + |
| 119 | +TODO: Nags |
| 120 | + |
0 commit comments