# 2021-06-01 Triage Log

Busy week, with several reverted PRs due to performance regressions, but overall a positive week.

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

3 Regressions, 3 Improvements, 5 Mixed

#### Regressions

Merge CrateDisambiguator into StableCrateId [#85804](https://github.com/rust-lang/rust/issues/85804)
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=2023cc3aa1ea98530f3124ed07713e6f95fd26ab&end=59579907ab52ad2369735622185a26f158bf0f0f&stat=instructions:u) (up to 1.6% on `full` builds of `html5ever-opt`)
- Seems to differ from the benchmark on PR, but held up over the rest of the
  week on the graph. Suggested a revert on PR.

#### Improvements

Don't hash `thir_body` [#85729](https://github.com/rust-lang/rust/issues/85729)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=ea78d1edf364dd3a4b5ff430f76e2bdd3a713a45&end=d854c3c0e9d256b923fbfc8b5193433a6edcd08f&stat=instructions:u) (up to -4.0% on `incr-full` builds of `deep-vector-check`)

Optimize proc macro bridge [#85390](https://github.com/rust-lang/rust/issues/85390)
- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=b663c0f4f6ff84a8c9df0f708e1f8d628330d973&end=84b1005bfd22e2cb2a4c13b0b81958fe72628354&stat=instructions:u) (up to -5.7% on `full` builds of `token-stream-stress-check`)

#### Mixed

Add `TrustedRandomAccess` specialization for `Vec::extend()` [#83770](https://github.com/rust-lang/rust/issues/83770)
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=9a700d2947f2d7f97a2c0dfca3117a8dcc255bdd&end=9111b8ae9793f18179a1336417618fc07a9cac85&stat=instructions:u) (up to 2.1% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo-debug`)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=9a700d2947f2d7f97a2c0dfca3117a8dcc255bdd&end=9111b8ae9793f18179a1336417618fc07a9cac85&stat=instructions:u) (up to -1.6% on `incr-patched: println` builds of `cargo-debug`)
- Reverted in the next result, seems to surprisingly in practice not be an improvement on
  some of our larger benchmarks.

Revert "Auto merge of #83770 - the8472:tra-extend, r=Mark-Simulacrum" [#85754](https://github.com/rust-lang/rust/issues/85754)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=9a72afa7dd5689da1844695086d1f89130956a88&end=bff138dbd95cec763f4def6b91bb465a26aaad9f&stat=instructions:u) (up to -2.1% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo-debug`)
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=9a72afa7dd5689da1844695086d1f89130956a88&end=bff138dbd95cec763f4def6b91bb465a26aaad9f&stat=instructions:u) (up to 1.5% on `incr-patched: println` builds of `cargo-debug`)

Simplification of query forcing [#85319](https://github.com/rust-lang/rust/issues/85319)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=d93b6a4598946a6a97e8f1b073b1cfc08d332a86&end=f60a67025607e74fbee31c2007f8791c2f352b6a&stat=instructions:u) (up to -3.2% on `full` builds of `unused-warnings-check`)
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=d93b6a4598946a6a97e8f1b073b1cfc08d332a86&end=f60a67025607e74fbee31c2007f8791c2f352b6a&stat=instructions:u) (up to 1.4% on `incr-unchanged` builds of `stm32f4-check`)
- Regressions seem to be limited to unused-warnings incremental.

Reduce the amount of untracked state in TyCtxt [#85153](https://github.com/rust-lang/rust/issues/85153)
- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=d2091147b16a1e3e1f9a73b6ee29fbe941c8abce&end=41278062c8399ac02ed281e8b1648b99a36942e6&stat=instructions:u) (up to 1038.2% on `incr-unchanged` builds of `regex-opt`)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=d2091147b16a1e3e1f9a73b6ee29fbe941c8abce&end=41278062c8399ac02ed281e8b1648b99a36942e6&stat=instructions:u) (up to -1.3% on `full` builds of `cranelift-codegen-check`)
- This was a pretty big regression, and wasn't detected on the PR run,
  presumably due to work since the merge.

Revert "Reduce the amount of untracked state in TyCtxt" [#85884](https://github.com/rust-lang/rust/issues/85884)
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=80af6b091f6a4855be71bba1cd0c1ee9fd2a57a8&end=1160cf864f2a0014e3442367e1b96496bfbeadf4&stat=instructions:u) (up to -91.2% on `incr-unchanged` builds of `regex-opt`)
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=80af6b091f6a4855be71bba1cd0c1ee9fd2a57a8&end=1160cf864f2a0014e3442367e1b96496bfbeadf4&stat=instructions:u) (up to 1.4% on `full` builds of `cranelift-codegen-check`)

#### Nags requiring follow up

* Expecting to revert [#85804](https://github.com/rust-lang/rust/pull/85804)
