|
| 1 | +# 2025-02-18 Triage Log |
| 2 | + |
| 3 | +This week's results were dominated by the update to LLVM 20 ([#135763](https://github.com/rust-lang/rust/pull/135763)), |
| 4 | +which brought a large number of performance improvements, as usual. There were also two other |
| 5 | +significant improvements, caused by improving the representation of `const` values ([#136593](https://github.com/rust-lang/rust/pull/136593)) and doing less work when formatting in `rustdoc` ([#136828](https://github.com/rust-lang/rust/pull/136828)). |
| 6 | + |
| 7 | +Triage done by **@kobzol**. |
| 8 | +Revision range: [c03c38d5..ce36a966](https://perf.rust-lang.org/?start=c03c38d5c2368cd2aa0e056dba060b94fc747f4e&end=ce36a966c79e109dabeef7a47fe68e5294c6d71e&absolute=false&stat=instructions%3Au) |
| 9 | + |
| 10 | +**Summary**: |
| 11 | + |
| 12 | +| (instructions:u) | mean | range | count | |
| 13 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 14 | +| Regressions ❌ <br /> (primary) | 4.4% | [0.2%, 35.8%] | 10 | |
| 15 | +| Regressions ❌ <br /> (secondary) | 1.2% | [0.2%, 5.0%] | 13 | |
| 16 | +| Improvements ✅ <br /> (primary) | -1.6% | [-10.5%, -0.2%] | 256 | |
| 17 | +| Improvements ✅ <br /> (secondary) | -1.0% | [-4.7%, -0.2%] | 163 | |
| 18 | +| All ❌✅ (primary) | -1.3% | [-10.5%, 35.8%] | 266 | |
| 19 | + |
| 20 | + |
| 21 | +3 Regressions, 2 Improvements, 4 Mixed; 4 of them in rollups |
| 22 | +50 artifact comparisons made in total |
| 23 | + |
| 24 | +#### Regressions |
| 25 | + |
| 26 | +Rollup of 8 pull requests [#136918](https://github.com/rust-lang/rust/pull/136918) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=021fb9c09a19d206a37226fe6168f1cc7c984925&end=552a959051cebf8f88a8f558399baf733bec9ce0&stat=instructions:u) |
| 27 | + |
| 28 | +| (instructions:u) | mean | range | count | |
| 29 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 30 | +| Regressions ❌ <br /> (primary) | 0.9% | [0.1%, 2.1%] | 19 | |
| 31 | +| Regressions ❌ <br /> (secondary) | 1.7% | [0.3%, 4.9%] | 9 | |
| 32 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 33 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 34 | +| All ❌✅ (primary) | 0.9% | [0.1%, 2.1%] | 19 | |
| 35 | + |
| 36 | +- Regression on a number of `doc` benchmarkes caused by [#136829](https://github.com/rust-lang/rust/pull/136829). |
| 37 | +- Continuing discussion on that PR, not marking as triaged yet. |
| 38 | + |
| 39 | +Rollup of 10 pull requests [#136943](https://github.com/rust-lang/rust/pull/136943) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ced8e650cddbafad92094b2c89dee97b8a807d9c&end=ef148cd7eb00a5a973130dc6473da71fd6c487ee&stat=instructions:u) |
| 40 | + |
| 41 | +| (instructions:u) | mean | range | count | |
| 42 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 43 | +| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 44 | +| Regressions ❌ <br /> (secondary) | 0.6% | [0.4%, 0.7%] | 16 | |
| 45 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 46 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 47 | +| All ❌✅ (primary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 48 | + |
| 49 | +- Small regression on a bunch of secondary benchmarks caused by [#136901](https://github.com/rust-lang/rust/pull/136901). |
| 50 | +- Does not seem worthy of further work. |
| 51 | +- Marked as triaged. |
| 52 | + |
| 53 | +Rollup of 11 pull requests [#137001](https://github.com/rust-lang/rust/pull/137001) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=a567209daab72b7ea59eac533278064396bb0534&end=6dfeab5c9e8a17a6636c1479037baabc4b1e9562&stat=instructions:u) |
| 54 | + |
| 55 | +| (instructions:u) | mean | range | count | |
| 56 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 57 | +| Regressions ❌ <br /> (primary) | 0.8% | [0.8%, 0.9%] | 2 | |
| 58 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 2 | |
| 59 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 60 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 61 | +| All ❌✅ (primary) | 0.8% | [0.8%, 0.9%] | 2 | |
| 62 | + |
| 63 | +- A few small regressions were caused by [#136928](https://github.com/rust-lang/rust/pull/136928). |
| 64 | +- That PR was a fix and the regressions were small, so no further work is needed. |
| 65 | +- Marked as triaged. |
| 66 | + |
| 67 | +#### Improvements |
| 68 | + |
| 69 | +valtree performance tuning [#136593](https://github.com/rust-lang/rust/pull/136593) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=54cdc751df770517e70db0588573e32e6a7b9821&end=c241e146506600f5ab7f4026ff015df8a658400e&stat=instructions:u) |
| 70 | + |
| 71 | +| (instructions:u) | mean | range | count | |
| 72 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 73 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 74 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 75 | +| Improvements ✅ <br /> (primary) | -2.6% | [-5.6%, -0.2%] | 20 | |
| 76 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.3%, -0.3%] | 1 | |
| 77 | +| All ❌✅ (primary) | -2.6% | [-5.6%, -0.2%] | 20 | |
| 78 | + |
| 79 | +- Resolves a previous perf. regression from https://github.com/rust-lang/rust/pull/136180, and then some. |
| 80 | + |
| 81 | +Do more lazy-formatting in librustdoc [#136828](https://github.com/rust-lang/rust/pull/136828) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=8c07d140e00dfa5b0988754051d07d8a91ff01f7&end=69fd5e4059f8840f09f60269bcda23dcdcb77151&stat=instructions:u) |
| 82 | + |
| 83 | +| (instructions:u) | mean | range | count | |
| 84 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 85 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 86 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 87 | +| Improvements ✅ <br /> (primary) | -1.6% | [-10.3%, -0.3%] | 17 | |
| 88 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-0.7%, -0.2%] | 3 | |
| 89 | +| All ❌✅ (primary) | -1.6% | [-10.3%, -0.3%] | 17 | |
| 90 | + |
| 91 | +- A great win for doc benchmarks. |
| 92 | + |
| 93 | +#### Mixed |
| 94 | + |
| 95 | +Portable SIMD subtree update [#135701](https://github.com/rust-lang/rust/pull/135701) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=8c04e395952022a451138dc4dbead6dd6ae65203&end=4b293d99275cc63b07eec9e2de38f4b776989069&stat=instructions:u) |
| 96 | + |
| 97 | +| (instructions:u) | mean | range | count | |
| 98 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 99 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.5%, 0.5%] | 1 | |
| 100 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 0.6%] | 17 | |
| 101 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 102 | +| Improvements ✅ <br /> (secondary) | -0.4% | [-0.4%, -0.4%] | 2 | |
| 103 | +| All ❌✅ (primary) | 0.5% | [0.5%, 0.5%] | 1 | |
| 104 | + |
| 105 | +- Tiny regressions in doc builds, probably caused by more documentation in portable-simd. |
| 106 | +- Marked as triaged. |
| 107 | + |
| 108 | +transmute should also assume non-null pointers [#136735](https://github.com/rust-lang/rust/pull/136735) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=905b1bf1ccccaf091a880b069f80dc38ad9ecad3&end=d88ffcdb8bfc6f8b917574c1693eb9764a20eff5&stat=instructions:u) |
| 109 | + |
| 110 | +| (instructions:u) | mean | range | count | |
| 111 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 112 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.3%, 0.8%] | 4 | |
| 113 | +| Regressions ❌ <br /> (secondary) | 0.2% | [0.2%, 0.2%] | 1 | |
| 114 | +| Improvements ✅ <br /> (primary) | -0.5% | [-1.0%, -0.2%] | 7 | |
| 115 | +| Improvements ✅ <br /> (secondary) | -0.2% | [-0.2%, -0.2%] | 2 | |
| 116 | +| All ❌✅ (primary) | -0.2% | [-1.0%, 0.8%] | 11 | |
| 117 | + |
| 118 | +- Performance is a wash. |
| 119 | +- Marked as triaged. |
| 120 | + |
| 121 | +Rollup of 7 pull requests [#137163](https://github.com/rust-lang/rust/pull/137163) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d5eb31c9347ae3c494c8d723711dacca7d1cfe8b&end=273465e1f2932a30a5b56ac95859cdc86f3f33fa&stat=instructions:u) |
| 122 | + |
| 123 | +| (instructions:u) | mean | range | count | |
| 124 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 125 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 126 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 1 | |
| 127 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.3%, -0.3%] | 2 | |
| 128 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 129 | +| All ❌✅ (primary) | -0.3% | [-0.3%, -0.3%] | 2 | |
| 130 | + |
| 131 | +- Three tiny changes, the only regression is on an incr-unchanged run of a parser stress test, |
| 132 | + probably doesn't warrant further investigation. |
| 133 | +- Marked as triaged. |
| 134 | + |
| 135 | +Update to LLVM 20 [#135763](https://github.com/rust-lang/rust/pull/135763) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2162e9d4b18525e4eb542fed9985921276512d7c&end=ce36a966c79e109dabeef7a47fe68e5294c6d71e&stat=instructions:u) |
| 136 | + |
| 137 | +| (instructions:u) | mean | range | count | |
| 138 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 139 | +| Regressions ❌ <br /> (primary) | 5.1% | [0.2%, 35.1%] | 8 | |
| 140 | +| Regressions ❌ <br /> (secondary) | 0.7% | [0.4%, 1.0%] | 10 | |
| 141 | +| Improvements ✅ <br /> (primary) | -1.3% | [-4.2%, -0.2%] | 251 | |
| 142 | +| Improvements ✅ <br /> (secondary) | -1.0% | [-4.7%, -0.1%] | 178 | |
| 143 | +| All ❌✅ (primary) | -1.1% | [-4.2%, 35.1%] | 259 | |
| 144 | + |
| 145 | +- As usual, update to a new lLVM version brings a lot of performance wins, but also some regressions. |
| 146 | +- The single large regression was on a release (optimized) incremental build, which is not a |
| 147 | +configuration used much in practice. It was caused by a codegen unit becoming unnecessarily large. |
| 148 | +- Marked as triaged. |
0 commit comments