2020-11-19 Triage Log

This was a relatively mixed week, with some very large performance wins balanced out by a relatively large range of benchmarks seeing small performance regressions.

The winner this week for largest performance improvement was #78826 which saw huge gains in the relatively new derive stress benchmark.

Triage done by @rylev. Revision range: cf9cf7c923eb01146971429044f216a3ca905e06..c919f490bbcd2b29b74016101f7ec71aaa24bdbb

5 Regressions, 5 Improvements, 2 Mixed

6 rollups had perfomance impacts (3 negative, 1 positive, 2 mixed)

Regressions

#76256

  • Moderate regression in instruction counts (up to 1.4% on incr-unchanged builds of externs-check)
  • Changes to the serialization of span end line/column.
  • This regresses performance slightly but is a necessary correctness fix that was affecting incremental builds (see the linked PR for many related issues). The performance lost here is balanced out by a related change to the hashing algorithm introduced previously.

#78998

  • Moderate regression in instruction counts (up to 1.2% on incr-unchanged builds of deep-vector-check)
  • Rollup
  • Most likely introduced by #78836 (Implement destructuring assignment for structs and slices)

#79065

  • Moderate regression in instruction counts (up to 2.9% on full builds of deeply-nested-async-check)
  • Rollup

#78801

  • Moderate regression in instruction counts (up to 2.3% on full builds of inflate-check)
  • Initial implementation of precise capture analysis in closures

#79128

  • Moderate regression in instruction counts (up to 2.5% on full builds of ctfe-stress-4-check)
  • Rollup
  • The affected benchmark is prone to noise, so it's not sure that this is an actual regression.

Improvements

#78826

  • Very large improvement in instruction counts (up to -49.0% on incr-unchanged builds of derive-check)
  • Change how macro_rules scopes are tracked during expansion so that they do not grow to big.
  • This was particularly helpful in the new derive stress test benchmark, but yielded improvements in several other benchmarks.

#78825

  • Moderate improvement in instruction counts (up to -1.5% on incr-patched: println builds of coercions-debug)
  • Changes several usages of unwrap_or to unwrap_or_else so that the else case is lazily evaluated.

#78956

  • Moderate improvement in instruction counts (up to -1.1% on incr-patched: println builds of coercions-debug)
  • Rollup

#78313

  • Moderate improvement in instruction counts (up to -2.1% on full builds of inflate-check)
  • Internal refactor (proposed here) where TypeFoldable takes self by value instead of reference.

#78779

  • Moderate improvement in instruction counts (up to -2.0% on full builds of inflate-check)
  • Internal refactoring which introduces BreakTy in TypeVisitor.

Mixed

#78920

  • Moderate improvement in instruction counts (up to -2.5% on incr-patched: b9b3e592dd cherry picked builds of style-servo-opt)
  • Moderate regression in instruction counts (up to 1.5% on incr-patched: println builds of coercions-debug)
  • Rollup

#79104

  • Large regression in instruction counts (up to 6.5% on full builds of keccak-opt)
  • Moderate improvement in instruction counts (up to -2.1% on incr-patched: b9b3e592dd cherry picked builds of style-servo-debug)
  • Rollup

Nags requiring follow up

No nags this week.