|
| 1 | +# 2025-11-25 Triage Log |
| 2 | + |
| 3 | +Only a handful of performance-related changes landed this week. The largest one was changing the default name mangling scheme in nightly to the v0 version, which produces slightly larger symbol names, so it had a small negative effect on binary sizes and compilation time. |
| 4 | + |
| 5 | +Triage done by **@kobzol**. |
| 6 | +Revision range: [6159a440..b64df9d1](https://perf.rust-lang.org/?start=6159a44067ebce42b38f062cc7df267a1348e092&end=b64df9d1012f2482b54a4d959548cf8fc67e820c&absolute=false&stat=instructions%3Au) |
| 7 | + |
| 8 | +**Summary**: |
| 9 | + |
| 10 | +| (instructions:u) | mean | range | count | |
| 11 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 12 | +| Regressions ❌ <br /> (primary) | 0.9% | [0.3%, 2.7%] | 48 | |
| 13 | +| Regressions ❌ <br /> (secondary) | 0.9% | [0.2%, 2.1%] | 25 | |
| 14 | +| Improvements ✅ <br /> (primary) | -0.5% | [-6.8%, -0.1%] | 33 | |
| 15 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-1.4%, -0.1%] | 53 | |
| 16 | +| All ❌✅ (primary) | 0.4% | [-6.8%, 2.7%] | 81 | |
| 17 | + |
| 18 | + |
| 19 | +1 Regression, 2 Improvements, 5 Mixed; 1 of them in rollups |
| 20 | +28 artifact comparisons made in total |
| 21 | + |
| 22 | +#### Regressions |
| 23 | + |
| 24 | +Turn moves into copies after copy propagation [#147804](https://github.com/rust-lang/rust/pull/147804) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=23f708107b459ed551a860ef0bf8b61bc80b48b4&end=122cbd043833a1d7540cc5f99c458bfca2d3c525&stat=instructions:u) |
| 25 | + |
| 26 | +| (instructions:u) | mean | range | count | |
| 27 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 28 | +| Regressions ❌ <br /> (primary) | 0.6% | [0.1%, 0.9%] | 6 | |
| 29 | +| Regressions ❌ <br /> (secondary) | 0.8% | [0.8%, 0.8%] | 1 | |
| 30 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 31 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 32 | +| All ❌✅ (primary) | 0.6% | [0.1%, 0.9%] | 6 | |
| 33 | + |
| 34 | +- The perf. regression was deemed acceptable, as this fixes miscompilations. |
| 35 | +- Marked as triaged. |
| 36 | + |
| 37 | +#### Improvements |
| 38 | + |
| 39 | +Bump compiler dependencies [#148831](https://github.com/rust-lang/rust/pull/148831) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=27b076af7e3e7a363975443d81dfa9ecee5a74ec&end=5934b0655768a45aad237a704995780276b91261&stat=instructions:u) |
| 40 | + |
| 41 | +| (instructions:u) | mean | range | count | |
| 42 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 43 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 44 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 45 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.6%, -0.1%] | 27 | |
| 46 | +| Improvements ✅ <br /> (secondary) | -0.4% | [-1.3%, -0.1%] | 36 | |
| 47 | +| All ❌✅ (primary) | -0.3% | [-0.6%, -0.1%] | 27 | |
| 48 | + |
| 49 | + |
| 50 | +Rollup of 9 pull requests [#149222](https://github.com/rust-lang/rust/pull/149222) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4b1b6dde0c15243857165672a1c616a4523ef32a&end=94b49fd998d6723e0a9240a7cff5f9df37b84dd8&stat=instructions:u) |
| 51 | + |
| 52 | +| (instructions:u) | mean | range | count | |
| 53 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 54 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 55 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 56 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.2%, -0.2%] | 3 | |
| 57 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 58 | +| All ❌✅ (primary) | -0.2% | [-0.2%, -0.2%] | 3 | |
| 59 | + |
| 60 | + |
| 61 | +#### Mixed |
| 62 | + |
| 63 | +Update wasm-related dependencies in CI [#149037](https://github.com/rust-lang/rust/pull/149037) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=6159a44067ebce42b38f062cc7df267a1348e092&end=a591113c0a2b7755514c47bde211fdb92d1d7002&stat=instructions:u) |
| 64 | + |
| 65 | +| (instructions:u) | mean | range | count | |
| 66 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 67 | +| Regressions ❌ <br /> (primary) | 0.4% | [0.4%, 0.4%] | 1 | |
| 68 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.2%, 0.9%] | 9 | |
| 69 | +| Improvements ✅ <br /> (primary) | -2.8% | [-2.8%, -2.8%] | 1 | |
| 70 | +| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.1%] | 1 | |
| 71 | +| All ❌✅ (primary) | -1.2% | [-2.8%, 0.4%] | 2 | |
| 72 | + |
| 73 | +- Noise. |
| 74 | +- Already marked as triaged. |
| 75 | + |
| 76 | +sess: default to v0 symbol mangling on nightly [#89917](https://github.com/rust-lang/rust/pull/89917) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d2f887349fe3ea079a4f89b020ce6df1993e1e06&end=683dd08db5808c41baceef49368fc82a6c4767bb&stat=instructions:u) |
| 77 | + |
| 78 | +| (instructions:u) | mean | range | count | |
| 79 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 80 | +| Regressions ❌ <br /> (primary) | 0.7% | [0.2%, 1.5%] | 31 | |
| 81 | +| Regressions ❌ <br /> (secondary) | 0.7% | [0.2%, 1.6%] | 14 | |
| 82 | +| Improvements ✅ <br /> (primary) | -0.4% | [-0.4%, -0.4%] | 1 | |
| 83 | +| Improvements ✅ <br /> (secondary) | -0.2% | [-0.6%, -0.1%] | 6 | |
| 84 | +| All ❌✅ (primary) | 0.7% | [-0.4%, 1.5%] | 32 | |
| 85 | + |
| 86 | +- This PR caused binary size regressions, which is expected, as the v0 mangling scheme produces larger symbols than the legacy mangling scheme, in general. |
| 87 | +- The compile-time regressions were likely caused by the same thing, more symbol string handling and more time spent in LLVM due to processing longer symbols. |
| 88 | +- Marked as triaged. |
| 89 | + |
| 90 | +See if this is the time we can remove `layout::size_align` [#149109](https://github.com/rust-lang/rust/pull/149109) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=7281a3bc4b89a010aed05528d648450feb8b69d3&end=53732d5e076329a62f71d3c6901886ce8a71e812&stat=instructions:u) |
| 91 | + |
| 92 | +| (instructions:u) | mean | range | count | |
| 93 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 94 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 95 | +| Regressions ❌ <br /> (secondary) | 0.4% | [0.1%, 0.6%] | 4 | |
| 96 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 97 | +| Improvements ✅ <br /> (secondary) | -0.7% | [-1.3%, -0.2%] | 8 | |
| 98 | +| All ❌✅ (primary) | - | - | 0 | |
| 99 | + |
| 100 | +- Just noise returning to steady state. |
| 101 | +- Already marked as triaged. |
| 102 | + |
| 103 | +library: upgrade to hashbrown v0.16.1 [#149159](https://github.com/rust-lang/rust/pull/149159) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=af17d59d71cd344fb34caab3e96c88b7c137f872&end=1dd43f247e6ec20a84dd017e4665266fa65e3a89&stat=instructions:u) |
| 104 | + |
| 105 | +| (instructions:u) | mean | range | count | |
| 106 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 107 | +| Regressions ❌ <br /> (primary) | 0.7% | [0.4%, 1.4%] | 4 | |
| 108 | +| Regressions ❌ <br /> (secondary) | 1.5% | [1.5%, 1.5%] | 1 | |
| 109 | +| Improvements ✅ <br /> (primary) | -0.2% | [-0.2%, -0.2%] | 2 | |
| 110 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.5%, -0.1%] | 25 | |
| 111 | +| All ❌✅ (primary) | 0.4% | [-0.2%, 1.4%] | 6 | |
| 112 | + |
| 113 | +- More improvements than regressions. |
| 114 | +- Marked as triaged. |
| 115 | + |
| 116 | +Fix MaybeUninit codegen using GVN [#147827](https://github.com/rust-lang/rust/pull/147827) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=122cbd043833a1d7540cc5f99c458bfca2d3c525&end=e9acbd99d384280874129fb7fa0da9faeae0d051&stat=instructions:u) |
| 117 | + |
| 118 | +| (instructions:u) | mean | range | count | |
| 119 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 120 | +| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 1 | |
| 121 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 0.5%] | 6 | |
| 122 | +| Improvements ✅ <br /> (primary) | -7.3% | [-7.3%, -7.3%] | 1 | |
| 123 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 124 | +| All ❌✅ (primary) | -3.6% | [-7.3%, 0.1%] | 2 | |
| 125 | + |
| 126 | +- Tiny regressions on secondary benchmarks, but a large (and real) win on the cranelift-codegen opt benchmark. |
| 127 | +- This should ideally produce better codegen. |
| 128 | +- Marked as triaged. |
0 commit comments