2021-02-24 Triage Log
Overall, a positive week for compiler performance with only one moderate regression. The change that introduced the regression leads to significantly improved bootstrap speed of the compiler as well as easier maintainability.
Triage done by @rylev. Revision range: f1c47c79fe8438ed241630f885797eebef3a6cab..301ad8a4fa3ea56fb980443b7997c8f9d72dd717
1 Regression, 5 Improvements, 0 Mixed 0 of them in rollups
Regressions
Move the query engine out of rustc_middle #70951
- Moderate regression in instruction counts (up to 4.9% on
full
builds of deeply-nested-check
) - While this does somewhat hurt compiler performance, it is a huge gain in bootstrap speed. The performance impact was deemed acceptable, but perhaps an investigation in if the remaining performance regressions can be eliminated, should be looked into.
- Added a nag to the pull request.
Improvements
Only store a LocalDefId in some HIR nodes #81611
- Very large improvement in instruction counts (up to -9.6% on
incr-unchanged
builds of many-assoc-items-check
) - Large improvements in the associated_item query which naturally led to improvements in the stress test related to associated items.
Inline try_get_cached #82197
- Very large improvement in instruction counts (up to -10.4% on
full
builds of externs-debug
) - This change shows improvements originally expected from #81855, which based query fast path on try_get_cached. In-between the initial successful perf run of #81855 and merging, another PR #81892 removed an inline hint from the function, which was soon to be on the fast path.
Reduce size of InterpErrorInfo to 8 bytes #82116
- Moderate improvement in instruction counts (up to -4.1% on
full
builds of ctfe-stress-4-check
) - Small improvements in ctfe stress tests. We'll take it though.
Make the Query
enum a simple struct. #80891
- Moderate improvement in instruction counts (up to -1.5% on
full
builds of externs-debug
) - Largely a code quality refactoring which originally had poor perf results but was fine tuned to lead to a small improvement. Good job!
Improve assert_eq! and assert_ne! #79100
- Large improvement in instruction counts (up to -8.4% on
full
builds of packed-simd-check
) - Moderate regression in instruction counts (up to 1.2% on
incr-patched: b9b3e592dd cherry picked
builds of style-servo-debug
) - The regression is fairly small. It is servo which seems to have regressed in codegen queries. I imagine this would be the case if there are a lot of monomorphized instances of the new
assert_failed
function but this could was probably being generated before so I'm not entirely sure. The codegen query seems to be noisy this week and has caused other (clearly non-perf sensitive changes) to show changes in codegen times.
Nags requiring follow up
- One nag for the only regression for the week.