Skip to content

Add triage log for the past week #1112

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 30, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions triage/2021-11-30.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# 2021-11-30 Triage Log

Overall, many changes this week, but overall an improvement on multiple benchmarks over
the week from a number of pull requests dedicated to optimizations of certain
patterns. We are still seeing a large number of spurious changes due to
[rustc-perf#1105](https://github.com/rust-lang/rustc-perf/issues/1105), which
has yet to be addressed.

Triage done by **@simulacrum**.
Revision range: [22c2d9ddbf356bcdb718e88ca6ee3665e1e42690..1c0287830e0fb3c4007afea2819ba03766da6e9c](https://perf.rust-lang.org/?start=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&end=1c0287830e0fb3c4007afea2819ba03766da6e9c&absolute=false&stat=instructions%3Au)

4 Regressions, 4 Improvements, 9 Mixed; 5 of them in rollups
41 comparisons made in total

#### Regressions

Mark places as initialized when mutably borrowed [#90788](https://github.com/rust-lang/rust/issues/90788)
- 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`)
- Fix for a miscompilation, so necessary regression.

Visit `param_env` field in Obligation's `TypeFoldable` impl [#91205](https://github.com/rust-lang/rust/issues/91205)
- 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`)
- Fix for incorrect code, regressions unfortunately unavoidable.

#### Improvements

Rollup of 6 pull requests [#91159](https://github.com/rust-lang/rust/issues/91159)
- 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`)
- Presumably due to [#91140](https://github.com/rust-lang/rust/pull/91140).
Otherwise not clear what the cause is, but as a small improvement, unlikely to
devote significant time to it.

Optimize live point computation [#90491](https://github.com/rust-lang/rust/issues/90491)
- 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`)
- Expected per PR benchmarking, benefitting both stress tests and some
real-world code.

Remove eval_always from upvars. [#90580](https://github.com/rust-lang/rust/issues/90580)
- 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`)
- Small optimization to query system.

Rollup of 8 pull requests [#91388](https://github.com/rust-lang/rust/issues/91388)
- 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`)
- Unclear cause for the improvement, but as an improvement, unlikely to
devote significant time to it.

#### Mixed

Avoid generating empty closures for fieldless enum variants [#89881](https://github.com/rust-lang/rust/issues/89881)
- 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`)
- 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`)
- Primarily benefits bootstrap time (-5.4 seconds, -0.7%), instruction count
changes largely real but not avoidable (differences in LLVM decision making).

Remove eval_always for inherent_impls. [#90579](https://github.com/rust-lang/rust/issues/90579)
- 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`)
- 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`)

Faster `Layout::array` [#91246](https://github.com/rust-lang/rust/issues/91246)
- 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`)
- 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`)
- Most prominent regression is spurious, and overall this looks like
improvements outweighing regressions.

Rollup of 7 pull requests [#91269](https://github.com/rust-lang/rust/issues/91269)
- 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`)
- 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`)
- Regressions seem potentially real, but may also be related to
[rustc-perf#1105](https://github.com/rust-lang/rustc-perf/issues/1105).
Locally this seems to not be the case, though, so it seems probable that the
regression is real.

Rollup of 6 pull requests [#91288](https://github.com/rust-lang/rust/issues/91288)
- 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`)
- 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`)
- Seems to be a genuine regression. Unclear what the cause is.

Make `TypeFolder::fold_*` return `Result` [#91230](https://github.com/rust-lang/rust/issues/91230)
- 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`)
- 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`)
- Regressions seem genuine, but are likely to be shuffling of instruction
sequences rather than something directly addressable.

Update libc to 0.2.108 [#90681](https://github.com/rust-lang/rust/issues/90681)
- 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`)
- 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`)
- Looks like a genuine regression, potentially slightly more work at crate loading time.

Tokenize emoji as if they were valid identifiers [#88781](https://github.com/rust-lang/rust/issues/88781)
- 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`)
- 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`)
- Genuine regression; more expensive logic in tokenization.

Rollup of 6 pull requests [#91221](https://github.com/rust-lang/rust/issues/91221)
- 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`)
- 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`)
- Regression seems genuine, though cause is unclear.

#### Untriaged Pull Requests

[60 untriaged pull requests](https://github.com/rust-lang/rust/issues?q=is%3Amerged+label%3Aperf-regression+-label%3Aperf-regression-triaged+sort%3Acreated-asc).