A pretty quiet week, with most changes (dropped from the report below) being due to continuing bimodality in the performance data. No particularly notable changes landed.
Triage done by @simulacrum. Revision range: 73476d49904751f8d90ce904e16dfbc278083d2c..3d5528c287860b918e178a34f04ff903325571b3
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.5% | [0.2%, 1.1%] | 15 |
Regressions ❌ (secondary) | 0.5% | [0.2%, 1.8%] | 30 |
Improvements ✅ (primary) | -0.5% | [-1.6%, -0.2%] | 29 |
Improvements ✅ (secondary) | -0.7% | [-1.5%, -0.2%] | 11 |
All ❌✅ (primary) | -0.2% | [-1.6%, 1.1%] | 44 |
1 Regressions, 2 Improvements, 5 Mixed; 0 of them in rollups 61 artifact comparisons made in total
Use FxIndexMap instead FxHashMap to stabilize iteration order in EffectiveVisibilities #121851 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.3% | [0.2%, 0.4%] | 13 |
Regressions ❌ (secondary) | 0.4% | [0.3%, 0.4%] | 3 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.3% | [0.2%, 0.4%] | 13 |
Justified by avoiding bugs in incremental compilation. See comment for details.
Avoid some unnecessary query invocations. #121387 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -1.0% | [-1.7%, -0.3%] | 2 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | -1.0% | [-1.7%, -0.3%] | 2 |
Simplify proc macro bridge state #122939 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
Improvements ✅ (primary) | -0.3% | [-0.4%, -0.3%] | 2 |
Improvements ✅ (secondary) | -1.2% | [-1.9%, -0.4%] | 6 |
All ❌✅ (primary) | -0.3% | [-0.4%, -0.3%] | 2 |
Less generic code for Vec allocations #122396 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.6% | [0.3%, 0.8%] | 2 |
Regressions ❌ (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
Improvements ✅ (primary) | -0.5% | [-1.4%, -0.1%] | 12 |
Improvements ✅ (secondary) | -4.4% | [-4.4%, -4.4%] | 1 |
All ❌✅ (primary) | -0.3% | [-1.4%, 0.8%] | 14 |
Improvements mostly outweigh regressions, including the improvements in binary size.
Rollup of 8 pull requests #123147 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 1.0% | [0.8%, 1.2%] | 2 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.4% | [-0.7%, -0.3%] | 3 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.2% | [-0.7%, 1.2%] | 5 |
Regressions appear to be potentially genuine, but also not particularly material, limited to just one benchmark.
Codegen const panic messages as function calls #122671 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.4% | [0.3%, 0.4%] | 2 |
Regressions ❌ (secondary) | 0.3% | [0.2%, 0.4%] | 7 |
Improvements ✅ (primary) | -0.7% | [-0.9%, -0.6%] | 3 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | -0.3% | [-0.9%, 0.4%] | 5 |
This is primarily a win in binary sizes, particularly for code built with overflow checks which add many more callsites that are made cheaper with this optimization.
Eliminate UbChecks
for non-standard libraries #122975 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.9% | [0.3%, 1.7%] | 7 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.5% | [-0.8%, -0.4%] | 5 |
Improvements ✅ (secondary) | -0.2% | [-0.3%, -0.1%] | 2 |
All ❌✅ (primary) | 0.3% | [-0.8%, 1.7%] | 12 |
Mixed results look fairly real. This change affects codegen of downstream libraries (i.e., most of the perf suite) so it‘s expected to lead to mostly improvements. It’s not clear precisely where the regressions are coming from (maybe LLVM is able to optimize more?). The largest regression seems to resolve itself in #122976 (see next mixed PR in this report) but it's not clear that there is any direct relationship between the two.
Remove len argument from RawVec::reserve_for_push #122976 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 2.8% | [2.8%, 2.8%] | 1 |
Improvements ✅ (primary) | -1.7% | [-1.7%, -1.7%] | 1 |
Improvements ✅ (secondary) | -0.4% | [-0.4%, -0.3%] | 5 |
All ❌✅ (primary) | -1.7% | [-1.7%, -1.7%] | 1 |
Appears to primarily resolve regressions introduced by #122975 (previous mixed PR in this report). Potentially just noise as such.