2021-01-12 Triage Log
Overall, a positive albeit quiet week. The largest change came from the incremental compilation working group which delivered large gains in performance caused by changes in how inlining is handled in debug mode. Unfortunately, these changes may be reversed due to concerns.
Triage done by @rylev. Revision range: f4b9d32ef53c0629732ee131b640920ae12d1edb..b6b461652a9bebfb4ddabcae896ee7237cf0962a
1 Regressions, 2 Improvements, 3 Mixed 2 of them in rollups
Regressions
Rollup of 9 pull requests #80867
- Moderate regression in instruction counts (up to 1.7% on
incr-full
builds of syn-opt
) - Minor regressions in mostly incremental builds (both opt and debug).
- It's hard to tell which PR was responsible but #79968 seems to be the most likely. We will investigate.
- There was a change in the
impl_trait_ref
which may give hints as to the root cause.
Improvements
Rollup of 9 pull requests #80928
- Moderate improvement in instruction counts (up to -2.2% on
full
builds of match-stress-enum-check
) - Moderate gain in a stress test. It's hard to tell which PR might be responsible.
Do not query the HIR directly in opt_associated_item
. #80889
- Moderate improvement in instruction counts (up to -1.8% on
incr-patched: println
builds of webrender-wrench-check
) - Simplifies getting a
AssocItem
given a DefId
by not actually querying the HIR. - The biggest impact was to the
check_mod_privacy
query
Mixed
Do not make local copies of inline fns in debug mode #76896
- Very large improvement in instruction counts (up to -46.8% on
incr-patched: sparse set
builds of regex-debug
) - Large regression in instruction counts (up to 6.0% on
incr-patched: static str 6144
builds of issue-46449-debug
) - The performance was already analyzed by the incremental compilation working group here.
- This change largely affects how LLVM performs when users compile in debug mode. The improvements were largely in real world crates while regressions were in synthetic benchmarks.
- This change may be reverted due to some concerns.
ast: Remove some indirection layers from values in key-value attributes #80441
- Moderate regression in instruction counts (up to 1.3% on
incr-patched: println
builds of coercions-debug
) - Moderate improvement in instruction counts (up to -1.1% on
incr-unchanged
builds of issue-46449-check
) - An attempt to address some of the perf lost in here in #78837, but the changes don't seem to be directly correlated.
- The original perf run only yielded positive results but it seems this change may invalidate the gains from another change introduced after that perf run.
Serialize incr comp structures to file via fixed-size buffer #80463
- Large improvement in instruction counts (up to -8.9% on
incr-unchanged
builds of ctfe-stress-4-check
) - Moderate regression in instruction counts (up to 3.1% on
incr-unchanged
builds of clap-rs-check
) - Improvement is in synthetic benchmarks while regressions are largely in real world crates.
- This change was done largely to reduce memory footprint size and the perf impact was deemed worth it
Nags requiring follow up
- Follow up needs to happen on the regressions, especially on the rollup #80928 and #80441 where the performance regressed from an early perf run done while the PR was still open.