Overall the week is a small improvement on average, with some benchmarks (particularly in the primary category) showing significant improvements due to the enablement of MIR inlining in #91743. Inlining promises to improve the quality of our generated LLVM IR and make other optimizations more worthwhile, so it's great to see these early results already being quite impactful.
Triage done by @simulacrum. Revision range: baf382e63c023259fa1f9042f8f479f183ca6ed3..880646ca9c6dc21e04efe2f1940369a45b71ff2d
Summary:
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 1.9% | 11.9% | 111 |
Regressions πΏ (secondary) | 3.4% | 11.9% | 106 |
Improvements π (primary) | -2.8% | -9.7% | 105 |
Improvements π (secondary) | -4.4% | -16.8% | 97 |
All πΏπ (primary) | -0.4% | 11.9% | 216 |
3 Regressions, 6 Improvements, 6 Mixed; 4 of them in rollups 46 artifact comparisons made in total
Fix FFI-unwind unsoundness with mixed panic mode #97235 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.5% | 1.2% | 86 |
Regressions πΏ (secondary) | 0.9% | 2.5% | 36 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | 0.5% | 1.2% | 86 |
PR author notes this added a new query for each MIR body, so this is an expected regression, and given the soundness fix is not too large to need further investigation.
Rollup of 5 pull requests #98874 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.6% | 0.9% | 13 |
Regressions πΏ (secondary) | 1.4% | 2.4% | 12 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | 0.6% | 0.9% | 13 |
Some possibly real, though small, regressions. Unclear cause; rollup doesn't obviously contain any sensitive PRs.
Rollup of 8 pull requests #98904 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.7% | 0.9% | 8 |
Regressions πΏ (secondary) | 1.1% | 2.3% | 16 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | N/A | N/A | 0 |
All πΏπ (primary) | 0.7% | 0.9% | 8 |
Interestingly, regressions here are remarkably similar to those in #98874 (previous rollup in this list). Not seeing an obvious connection between the PRs in the two rollups, though.
proc_macro/bridge: stop using a remote object handle for proc_macro Punct and Group #98188 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -0.5% | -1.4% | 15 |
Improvements π (secondary) | -1.6% | -5.0% | 16 |
All πΏπ (primary) | -0.5% | -1.4% | 15 |
Update smallvec
to 1.8.1. #98558 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | -1.7% | -2.4% | 9 |
All πΏπ (primary) | N/A | N/A | 0 |
CTFE interning: don‘t walk allocations that don’t need it #97585 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -1.0% | -1.0% | 2 |
Improvements π (secondary) | -2.5% | -9.3% | 32 |
All πΏπ (primary) | -1.0% | -1.0% | 2 |
Optimize Vec::insert
for the case where index == len
. #98755 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -0.4% | -1.0% | 8 |
Improvements π (secondary) | -1.2% | -2.4% | 13 |
All πΏπ (primary) | -0.4% | -1.0% | 8 |
fully move dropck to mir #98641 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.5% | 0.7% | 2 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -0.7% | -2.4% | 34 |
Improvements π (secondary) | -0.8% | -2.1% | 22 |
All πΏπ (primary) | -0.7% | -2.4% | 36 |
interpret: track place alignment together with the type, not the value #98846 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | N/A | N/A | 0 |
Improvements π (primary) | -0.7% | -0.9% | 8 |
Improvements π (secondary) | -1.2% | -2.3% | 13 |
All πΏπ (primary) | -0.7% | -0.9% | 8 |
Rollup of 9 pull requests #98612 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.7% | 1.0% | 5 |
Regressions πΏ (secondary) | 5.2% | 9.9% | 6 |
Improvements π (primary) | -1.0% | -1.1% | 2 |
Improvements π (secondary) | -0.8% | -2.4% | 22 |
All πΏπ (primary) | 0.2% | -1.1% | 7 |
Rollup of 7 pull requests #98656 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 1.4% | 11.3% | 131 |
Regressions πΏ (secondary) | 3.5% | 11.2% | 73 |
Improvements π (primary) | N/A | N/A | 0 |
Improvements π (secondary) | -2.2% | -3.1% | 8 |
All πΏπ (primary) | 1.4% | 11.3% | 131 |
Asked for further investigation on the PR, noting #98277 as a possible cause.
move MIR syntax into a dedicated file and ping some people whenever it changes #98649 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.5% | 0.5% | 1 |
Regressions πΏ (secondary) | 1.6% | 4.3% | 20 |
Improvements π (primary) | -0.3% | -0.4% | 5 |
Improvements π (secondary) | -0.3% | -0.3% | 3 |
All πΏπ (primary) | -0.2% | 0.5% | 6 |
This is probably noise, but it's not very clear. Regressions are minor enough that further investigation does not seem warranted.
Enable MIR inlining #91743 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 1.3% | 7.2% | 54 |
Regressions πΏ (secondary) | 1.7% | 6.1% | 68 |
Improvements π (primary) | -2.6% | -10.0% | 118 |
Improvements π (secondary) | -3.4% | -17.3% | 76 |
All πΏπ (primary) | -1.4% | -10.0% | 172 |
A fairly large improvement for some benchmarks, and particularly large for bootstrap times (nearly 9% win). There are some fairly large regressions to a few select benchmarks which stress the inlining more than helping LLVM (e.g., stm32f4), but overall this is a great improvement in many cases.
Avoid unnecessary work in finalize_resolutions_in
. #98569 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | 0.3% | 0.5% | 7 |
Regressions πΏ (secondary) | 0.5% | 0.7% | 7 |
Improvements π (primary) | -1.0% | -1.0% | 2 |
Improvements π (secondary) | -2.1% | -2.4% | 6 |
All πΏπ (primary) | 0.0% | -1.0% | 9 |
Wins/losses balance out; already labeled as triaged.
Don't use match-destructuring for derived ops on structs. #98446 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions πΏ (primary) | N/A | N/A | 0 |
Regressions πΏ (secondary) | 1.3% | 1.9% | 19 |
Improvements π (primary) | -0.6% | -1.5% | 66 |
Improvements π (secondary) | -5.4% | -12.3% | 33 |
All πΏπ (primary) | -0.6% | -1.5% | 66 |
Overall an excellent, though somewhat small, improvement. Regressions are small and limited to a couple very artificial stress tests rather than real-world benchmarks.