2021-02-09 Triage Log
A week of more regressions than improvements with one fairly large regression in incr-patched
benchmarks introduced in a rollup. Performance regressions introduced in rollups have been a source of headache lately and something the performance team is looking to improve in the future.
Triage done by @rylev. Revision range: f6cb45ad01a4518f615926f39801996622f46179..ea098255f74923d69ea234ee526df6b9cecc3b9b
5 Regressions, 2 Improvements, 1 Mixed 2 of them in rollups
Regressions
Rollup of 11 pull requests #81660
- Very large regression in instruction counts (up to 33.1% on
incr-patched: println
builds of cargo-check
) - A huge performance regression in a rollup which should not happen. This seems to be happening in
incr-patched
benchmarks in the typeck
and evaluate_obligation
. - This points towards to #80629 as being the most likely culprit.
Add a new ABI to support cmse_nonsecure_call #81346
- Moderate regression in instruction counts (up to 1.9% on
full
builds of deeply-nested-async-check
) - Adding support for an additional ABI shouldn‘t have performance implications on rustc. Perhaps this just happens to be noise, but it’s hard to tell.
Identify unreachable subpatterns more reliably #80632
- Moderate regression in instruction counts (up to 1.2% on
full
builds of match-stress-enum-check
) - This is a regression in a benchmark specifically for pattern match which is impacted by this change. The
check match
query was responsible for the regression. - Interestingly, a performance run was done on this change during review which did not show the regressions seen here.
expand/resolve: Turn #[derive]
into a regular macro attribute #79078
- Moderate regression in instruction counts (up to 1.3% on
incr-unchanged
builds of derive-check
) - This largely seems to be impacting
incr-unchanged
benchmarks particularly in the expand_crate
and late_resolve_crate
queries, and it's happening mostly in stress benchmarks. The only “real” code base impacted this is style-servo-check
at 1.0% for incr-unchanged
.
Use ufcs in derive(Debug) #81294
- Moderate improvement in instruction counts (up to -3.3% on
incr-patched: println
builds of cargo-opt
) - Moderate regression in instruction counts (up to 3.3% on
full
builds of style-servo-check
) - This was originally labeled as a “mixed” result, but this is largely a perf regression with only a few improvements.
- This is a correctness fix so it‘s possible that we’ll need to eat any performance regressions.
- There is a PR open to try to address the fact that more MIR is produced, but this doesn't seem to have a positive impact on perf.
Improvements
Rollup of 14 pull requests #81678
- Moderate improvement in instruction counts (up to -1.8% on
full
builds of deeply-nested-async-check
)
Revert 78373 (“dont leak return value after panic in drop”) #81257
- Large improvement in instruction counts (up to -8.6% on
incr-patched: println
builds of regression-31157-opt
) - Moderate regression in instruction counts (up to 1.8% on
full
builds of cranelift-codegen-opt
) - This was originally labeled as “mixed”, but it is largely a performance gain.
- The change is to fix a bug discovered in the beta crater run.
Mixed
Fix derived PartialOrd operators #81384
- Very large improvement in instruction counts (up to -34.0% on
full
builds of derive-check
) - Moderate regression in instruction counts (up to 2.3% on
incr-unchanged
builds of clap-rs-check
) - Huge gains in the derive stress benchmark but unfortunately some non-trivial regressions in
clap-rs-check
. This seems to be impacting type checking.
Nags requiring follow up
- Waiting on more investigation in #81476.
- Need to follow up on the regressions reported this week.