A week dominated by one particular perf improvement that lead to huge performance gains - an avg of 5% improvement across 121 test cases! The perf improvement comes from adding an #[inline]
hint to the output from #[derive(Debug)]
which presumably allows the compiler to more easily do deadcode elimination reducing the binary size and the amount of code that actually needs to be code-gened.
Triage done by @rylev. Revision range: 7b97a5ca..173b6e68
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
0.4% | [0.2%, 0.9%] | 10 |
Regressions ❌ (secondary) |
1.9% | [0.2%, 3.6%] | 12 |
Improvements ✅ (primary) |
-5.6% | [-49.2%, -0.1%] | 111 |
Improvements ✅ (secondary) |
-3.5% | [-25.0%, -0.2%] | 155 |
All ❌✅ (primary) | -5.1% | [-49.2%, 0.9%] | 121 |
2 Regressions, 2 Improvements, 3 Mixed; 3 of them in rollups 55 artifact comparisons made in total
Bump libc dependency #117617 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
8.3% | [1.1%, 19.0%] | 9 |
Regressions ❌ (secondary) |
- | - | 0 |
Improvements ✅ (primary) |
- | - | 0 |
Improvements ✅ (secondary) |
- | - | 0 |
All ❌✅ (primary) | 8.3% | [1.1%, 19.0%] | 9 |
- A curious perf infra glitch - the regression returned to normal after a few runs.
Rollup of 6 pull requests #117736 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
0.4% | [0.2%, 0.5%] | 5 |
Regressions ❌ (secondary) |
0.6% | [0.6%, 0.6%] | 1 |
Improvements ✅ (primary) |
- | - | 0 |
Improvements ✅ (secondary) |
- | - | 0 |
All ❌✅ (primary) | 0.4% | [0.2%, 0.5%] | 5 |
- The only PR that includes actual changes to the compiler is #117645. Kicked off a test to see if that's the root cause.
Rollup of 4 pull requests #117680 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
- | - | 0 |
Regressions ❌ (secondary) |
- | - | 0 |
Improvements ✅ (primary) |
-9.1% | [-16.0%, -2.6%] | 7 |
Improvements ✅ (secondary) |
- | - | 0 |
All ❌✅ (primary) | -9.1% | [-16.0%, -2.6%] | 7 |
- The flip side of #117617's strange perf regression.
Add std::hash::{DefaultHasher, RandomState}
exports (needs FCP) #115694 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
- | - | 0 |
Regressions ❌ (secondary) |
- | - | 0 |
Improvements ✅ (primary) |
-0.9% | [-1.2%, -0.4%] | 6 |
Improvements ✅ (secondary) |
- | - | 0 |
All ❌✅ (primary) | -0.9% | [-1.2%, -0.4%] | 6 |
Only use normalize_param_env
when normalizing predicate in check_item_bounds
#117542 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
0.4% | [0.4%, 0.4%] | 1 |
Regressions ❌ (secondary) |
1.4% | [0.8%, 2.3%] | 12 |
Improvements ✅ (primary) |
-18.4% | [-49.6%, -0.2%] | 20 |
Improvements ✅ (secondary) |
- | - | 0 |
All ❌✅ (primary) | -17.5% | [-49.6%, 0.4%] | 21 |
- Fixing rust-lang/rust#117131 (comment) and deemed acceptable for the small regressions.
Emit #[inline] on derive(Debug) #117727 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
3.1% | [0.3%, 13.7%] | 5 |
Regressions ❌ (secondary) |
1.8% | [0.2%, 3.4%] | 6 |
Improvements ✅ (primary) |
-2.3% | [-10.6%, -0.1%] | 110 |
Improvements ✅ (secondary) |
-3.2% | [-25.2%, -0.1%] | 177 |
All ❌✅ (primary) | -2.1% | [-10.6%, 13.7%] | 115 |
- Huge wins outweigh the small losses.
Rollup of 6 pull requests #117769 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
0.3% | [0.3%, 0.3%] | 1 |
Regressions ❌ (secondary) |
1.0% | [1.0%, 1.0%] | 1 |
Improvements ✅ (primary) |
-6.5% | [-12.3%, -0.7%] | 2 |
Improvements ✅ (secondary) |
- | - | 0 |
All ❌✅ (primary) | -4.2% | [-12.3%, 0.3%] | 3 |
- Noise