2022-03-30 Triage Log

A mixed week: some minor regressions, but things overall improved for instruction counts.

Max RSS has gone up slightly over the past month, on the order of 0.5% regression according to benchmark summary. pnkfelix is following up on that with rustc-perf team on zulip

Triage done by @pnkfelix. Revision range: 3ea44938e21f0de8ae7d4f6399a8a30f97867c70..3e7514670db841a7f0d7656f3b13b1c8b2c11599

4 Regressions, 5 Improvements, 4 Mixed; 3 of them in rollups 63 comparisons made in total

Regressions

Rollup of 5 pull requests #95250

  • Arithmetic mean of relevant regressions: 2.2%
  • Largest regression in instruction counts: 11.1% on full builds of cargo-0.60.0 doc
  • Already triaged by oli-obk.
  • it is solely in rustdoc, and oli-obk has a plan to address it in the long term.

Properly track ImplObligations #91030

  • Arithmetic mean of relevant regressions: 1.9%
  • Largest regression in instruction counts: 3.8% on full builds of projection-caching check
  • triaged; this was anticipated.
  • The only primary regression was to diesel doc, and the regressions are justified by the improvement to the diagnostics.

Separate const prop lints from optimizations #94934

  • Arithmetic mean of relevant regressions: 1.2%
  • Largest regression in instruction counts: 2.1% on incr-full builds of unicode_normalization opt
  • Already triaged by oli-obk.
  • In short: this was expected, becaused we are doing const-prop twice now.
  • (The end-goal is stop optimizations from changing diagnostics. This PR is a step towards that goal.)

Rollup of 4 pull requests #95448

  • Arithmetic mean of relevant regressions: 1.5%
  • Largest regression in instruction counts: 2.5% on incr-patched: io error 6144 builds of issue-46449 debug
  • triaged
  • The only primary benchmark impacted by this was unicode-normalization-0.1.19, and that only saw a 0.50% regression on incr-patched: println and a 0.36% regression on full build. We can ignore that.
  • The only secondary benchmark impacted was issue-46449, which is trying to catch regression of quadratic blowup, not minor regressions.

Improvements

Introduce TtParser #95159

  • Arithmetic mean of relevant regressions: 0.3%
  • Arithmetic mean of relevant improvements: -1.9%
  • Arithmetic mean of all relevant changes: -1.7%
  • Largest improvement in instruction counts: -6.2% on incr-unchanged builds of deep-vector check

Overlap inherent impls #95082

  • Arithmetic mean of relevant improvements: -1.0%
  • Largest improvement in instruction counts: -2.0% on full builds of diesel-1.4.8 check

resolve: Do not build expensive suggestions if they are not actually used #95255

  • Arithmetic mean of relevant improvements: -0.6%
  • Largest improvement in instruction counts: -2.1% on full builds of projection-caching doc

Fix perf issue for auto trait selection #95333

  • Arithmetic mean of relevant improvements: -3.1%
  • Largest improvement in instruction counts: -10.1% on full builds of cargo-0.60.0 doc

Remove header field from clean::Function #95096

  • Arithmetic mean of relevant regressions: 0.3%
  • Arithmetic mean of relevant improvements: -0.9%
  • Arithmetic mean of all relevant changes: -0.8%
  • Largest improvement in instruction counts: -1.4% on full builds of await-call-tree doc

Mixed

Change Thir to lazily create constants #94876

  • Arithmetic mean of relevant regressions: 1.6%
  • Arithmetic mean of relevant improvements: -1.0%
  • Arithmetic mean of all relevant changes: -0.3%
  • Largest improvement in instruction counts: -2.8% on full builds of keccak check
  • Largest regression in instruction counts: 3.5% on full builds of tuple-stress check
  • Triaged.
  • The changes to the primary benchmarks are almost universally green here.
  • The secondary benchmarks are more of a mixed bag, but I think we can accept a 3.5% regression on tuple-stress given the overall benefits.

More macro expansion optimizations #95259

  • Arithmetic mean of relevant improvements: -1.5%
  • Arithmetic mean of all relevant changes: -1.1%
  • Largest improvement in instruction counts: -2.0% on incr-unchanged builds of diesel check
  • Largest regression in instruction counts: 0.4% on incr-full builds of unicode-normalization-0.1.19 opt
  • Already triaged by nnethercote
  • The perf wins clearly outweigh the losses here.

Rollup of 5 pull requests #95382

  • Arithmetic mean of relevant regressions: 2.2%
  • Arithmetic mean of relevant improvements: -0.4%
  • Arithmetic mean of all relevant changes: 1.2%
  • Largest improvement in instruction counts: -0.4% on incr-unchanged builds of deeply-nested-multi check
  • Largest regression in instruction counts: 3.2% on full builds of await-call-tree check
  • Left comment
  • Changes to the primary benchmarks seem like a wash and probably ignorable (0.33% worse for unicode-normalization-0.1.19, 0.33% better for ripgrep-13.0.0).
  • Re secondary benchmarks: 3% worse for await-call-tree (on six scenarios), which is more concerning. I assume PR #95120 is cause.
  • Leaving as untriaged.

Lazy type-alias-impl-trait take two #94081

  • Arithmetic mean of relevant regressions: 0.5%
  • Arithmetic mean of relevant improvements: -0.5%
  • Arithmetic mean of all relevant changes: -0.3%
  • Largest improvement in instruction counts: -1.0% on incr-full builds of wg-grammar check
  • Largest regression in instruction counts: 0.8% on full builds of projection-caching check
  • triaged
  • The actual performance changes indicate this ended up a win overall, based on the amount of green.

Untriaged Pull Requests

Nags requiring follow up

TODO: Nags