|
| 1 | +# 2021-11-30 Triage Log |
| 2 | + |
| 3 | +Overall, many changes this week, but overall an improvement on multiple benchmarks over |
| 4 | +the week from a number of pull requests dedicated to optimizations of certain |
| 5 | +patterns. We are still seeing a large number of spurious changes due to |
| 6 | +[rustc-perf#1105](https://github.com/rust-lang/rustc-perf/issues/1105), which |
| 7 | +has yet to be addressed. |
| 8 | + |
| 9 | +Triage done by **@simulacrum**. |
| 10 | +Revision range: [22c2d9ddbf356bcdb718e88ca6ee3665e1e42690..1c0287830e0fb3c4007afea2819ba03766da6e9c](https://perf.rust-lang.org/?start=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&end=1c0287830e0fb3c4007afea2819ba03766da6e9c&absolute=false&stat=instructions%3Au) |
| 11 | + |
| 12 | +4 Regressions, 4 Improvements, 9 Mixed; 5 of them in rollups |
| 13 | +41 comparisons made in total |
| 14 | + |
| 15 | +#### Regressions |
| 16 | + |
| 17 | +Mark places as initialized when mutably borrowed [#90788](https://github.com/rust-lang/rust/issues/90788) |
| 18 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=311fa1f14dd8ffbbe83b229a94b17f7f1ecaf33b&end=7b3cd075bbe309031b418650a9c32baf0b4a3276&stat=instructions:u) (up to 0.6% on `full` builds of `match-stress-enum`) |
| 19 | +- Fix for a miscompilation, so necessary regression. |
| 20 | + |
| 21 | +Visit `param_env` field in Obligation's `TypeFoldable` impl [#91205](https://github.com/rust-lang/rust/issues/91205) |
| 22 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a7836bf885e70aaf1a2e0d4669406b183a79acaa&end=1e79d79dac11ce121b972fbaa0db9b0d1756b991&stat=instructions:u) (up to 6.6% on `full` builds of `hyper-2`) |
| 23 | +- Fix for incorrect code, regressions unfortunately unavoidable. |
| 24 | + |
| 25 | +#### Improvements |
| 26 | + |
| 27 | +Rollup of 6 pull requests [#91159](https://github.com/rust-lang/rust/issues/91159) |
| 28 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=7b3cd075bbe309031b418650a9c32baf0b4a3276&end=65c55bf931a55e6b1e5ed14ad8623814a7386424&stat=instructions:u) (up to -0.6% on `full` builds of `match-stress-enum`) |
| 29 | +- Presumably due to [#91140](https://github.com/rust-lang/rust/pull/91140). |
| 30 | + Otherwise not clear what the cause is, but as a small improvement, unlikely to |
| 31 | + devote significant time to it. |
| 32 | + |
| 33 | +Optimize live point computation [#90491](https://github.com/rust-lang/rust/issues/90491) |
| 34 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=c6a7ca196a707acd65e6cce1d337cd11786c59a5&end=8a48b376d559f26a9b8fc1f1d597acb0bc0a51f9&stat=instructions:u) (up to -29.2% on `full` builds of `issue-58319`) |
| 35 | +- Expected per PR benchmarking, benefitting both stress tests and some |
| 36 | + real-world code. |
| 37 | + |
| 38 | +Remove eval_always from upvars. [#90580](https://github.com/rust-lang/rust/issues/90580) |
| 39 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=37a49713cb256f4033a3c2fab4810c5a61e89dd9&end=dd549dcab404ec4c7d07b5a83aca5bdd7171138f&stat=instructions:u) (up to -0.7% on `incr-unchanged` builds of `style-servo`) |
| 40 | +- Small optimization to query system. |
| 41 | + |
| 42 | +Rollup of 8 pull requests [#91388](https://github.com/rust-lang/rust/issues/91388) |
| 43 | +- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=90912e68ab0b9e7ba4f91ef9654e8b41c203a95d&end=1c0287830e0fb3c4007afea2819ba03766da6e9c&stat=instructions:u) (up to -1.5% on `full` builds of `futures`) |
| 44 | +- Unclear cause for the improvement, but as an improvement, unlikely to |
| 45 | + devote significant time to it. |
| 46 | + |
| 47 | +#### Mixed |
| 48 | + |
| 49 | +Avoid generating empty closures for fieldless enum variants [#89881](https://github.com/rust-lang/rust/issues/89881) |
| 50 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&end=311fa1f14dd8ffbbe83b229a94b17f7f1ecaf33b&stat=instructions:u) (up to -1.6% on `incr-patched: add static arr item` builds of `coercions`) |
| 51 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&end=311fa1f14dd8ffbbe83b229a94b17f7f1ecaf33b&stat=instructions:u) (up to 0.6% on `incr-unchanged` builds of `clap-rs`) |
| 52 | +- Primarily benefits bootstrap time (-5.4 seconds, -0.7%), instruction count |
| 53 | + changes largely real but not avoidable (differences in LLVM decision making). |
| 54 | + |
| 55 | +Remove eval_always for inherent_impls. [#90579](https://github.com/rust-lang/rust/issues/90579) |
| 56 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=982c552c908d179eaa38b6ef152ad3fa30268778&end=c6a7ca196a707acd65e6cce1d337cd11786c59a5&stat=instructions:u) (up to -5.6% on `incr-unchanged` builds of `stm32f4`) |
| 57 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=982c552c908d179eaa38b6ef152ad3fa30268778&end=c6a7ca196a707acd65e6cce1d337cd11786c59a5&stat=instructions:u) (up to 0.2% on `incr-full` builds of `stm32f4`) |
| 58 | + |
| 59 | +Faster `Layout::array` [#91246](https://github.com/rust-lang/rust/issues/91246) |
| 60 | +- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=6d246f0c8d3063fea86abbb65a824362709541ba&end=ccce98535bd51687554be8a209b3a529ef84f7e1&stat=instructions:u) (up to -4.2% on `incr-unchanged` builds of `deep-vector`) |
| 61 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=6d246f0c8d3063fea86abbb65a824362709541ba&end=ccce98535bd51687554be8a209b3a529ef84f7e1&stat=instructions:u) (up to 5.0% on `incr-unchanged` builds of `inflate`) |
| 62 | +- Most prominent regression is spurious, and overall this looks like |
| 63 | + improvements outweighing regressions. |
| 64 | + |
| 65 | +Rollup of 7 pull requests [#91269](https://github.com/rust-lang/rust/issues/91269) |
| 66 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=ccce98535bd51687554be8a209b3a529ef84f7e1&end=bbad745a688c933a43d1bd977756bd6fc7f034f2&stat=instructions:u) (up to -5.1% on `incr-unchanged` builds of `inflate`) |
| 67 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=ccce98535bd51687554be8a209b3a529ef84f7e1&end=bbad745a688c933a43d1bd977756bd6fc7f034f2&stat=instructions:u) (up to 18.3% on `incr-unchanged` builds of `clap-rs`) |
| 68 | +- Regressions seem potentially real, but may also be related to |
| 69 | + [rustc-perf#1105](https://github.com/rust-lang/rustc-perf/issues/1105). |
| 70 | + Locally this seems to not be the case, though, so it seems probable that the |
| 71 | + regression is real. |
| 72 | + |
| 73 | +Rollup of 6 pull requests [#91288](https://github.com/rust-lang/rust/issues/91288) |
| 74 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=5fd3a5c7c175f228afaf5fc6ff00c177b83d8055&end=686e313a9aa14107c8631ffe48fa09110a7692db&stat=instructions:u) (up to -1.0% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo`) |
| 75 | +- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=5fd3a5c7c175f228afaf5fc6ff00c177b83d8055&end=686e313a9aa14107c8631ffe48fa09110a7692db&stat=instructions:u) (up to 1.7% on `full` builds of `externs`) |
| 76 | +- Seems to be a genuine regression. Unclear what the cause is. |
| 77 | + |
| 78 | +Make `TypeFolder::fold_*` return `Result` [#91230](https://github.com/rust-lang/rust/issues/91230) |
| 79 | +- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=58f9efd36de5669ab731ec7ebf565999ff17b159&end=e6d2de9483a27f846f003fc745713339a9122473&stat=instructions:u) (up to -1.0% on `incr-full` builds of `deeply-nested-async`) |
| 80 | +- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=58f9efd36de5669ab731ec7ebf565999ff17b159&end=e6d2de9483a27f846f003fc745713339a9122473&stat=instructions:u) (up to 4.0% on `incr-unchanged` builds of `deep-vector`) |
| 81 | +- Regressions seem genuine, but are likely to be shuffling of instruction |
| 82 | + sequences rather than something directly addressable. |
| 83 | + |
| 84 | +Update libc to 0.2.108 [#90681](https://github.com/rust-lang/rust/issues/90681) |
| 85 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=db9d361a4731ca0bb48533fab6297a8fea75696f&end=350158dd6d7ba840666999efa9a19c6ae403eed1&stat=instructions:u) (up to -15.3% on `incr-unchanged` builds of `clap-rs`) |
| 86 | +- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=db9d361a4731ca0bb48533fab6297a8fea75696f&end=350158dd6d7ba840666999efa9a19c6ae403eed1&stat=instructions:u) (up to 3.0% on `incr-unchanged` builds of `deeply-nested-async`) |
| 87 | +- Looks like a genuine regression, potentially slightly more work at crate loading time. |
| 88 | + |
| 89 | +Tokenize emoji as if they were valid identifiers [#88781](https://github.com/rust-lang/rust/issues/88781) |
| 90 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=c6eda7d8a7af3ef51311d3106874a7d8de994edc&end=23a436606b118bd2fbb12f64fce21e7f9d355349&stat=instructions:u) (up to -0.8% on `full` builds of `deeply-nested`) |
| 91 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=c6eda7d8a7af3ef51311d3106874a7d8de994edc&end=23a436606b118bd2fbb12f64fce21e7f9d355349&stat=instructions:u) (up to 0.3% on `incr-full` builds of `deeply-nested-async`) |
| 92 | +- Genuine regression; more expensive logic in tokenization. |
| 93 | + |
| 94 | +Rollup of 6 pull requests [#91221](https://github.com/rust-lang/rust/issues/91221) |
| 95 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=862962b90e59c5c1e217df74de80d3a81eee42f4&end=37a49713cb256f4033a3c2fab4810c5a61e89dd9&stat=instructions:u) (up to -1.3% on `incr-unchanged` builds of `wg-grammar`) |
| 96 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=862962b90e59c5c1e217df74de80d3a81eee42f4&end=37a49713cb256f4033a3c2fab4810c5a61e89dd9&stat=instructions:u) (up to 0.6% on `full` builds of `ctfe-stress-4`) |
| 97 | +- Regression seems genuine, though cause is unclear. |
| 98 | + |
| 99 | +#### Untriaged Pull Requests |
| 100 | + |
| 101 | +[60 untriaged pull requests](https://github.com/rust-lang/rust/issues?q=is%3Amerged+label%3Aperf-regression+-label%3Aperf-regression-triaged+sort%3Acreated-asc). |
0 commit comments