Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 158 additions & 0 deletions triage/2025/2025-10-27.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# 2025-10-27 Triage Log

Mostly negative week, coming almost entirely from adding sizedness bounds in [#142712](https://github.com/rust-lang/rust/pull/142712). Other than that, we got a nice win for async code from state transform optimization in [#147493](https://github.com/rust-lang/rust/pull/147493) and quite a few smaller improvements from codegen optimization in [#147890](https://github.com/rust-lang/rust/pull/147890).

Triage done by **@panstromek**.
Revision range: [4068bafe..23fced0f](https://perf.rust-lang.org/?start=4068bafedd8ba724e332a5221c06a6fa531a30d2&end=23fced0fcc5e0ec260d25f04a8b78b269e5e90f0&absolute=false&stat=instructions%3Au)

**Summary**:

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:---------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.7% | [0.2%, 3.7%] | 113 |
| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.7%] | 75 |
| Improvements ✅ <br /> (primary) | -0.4% | [-0.7%, -0.2%] | 3 |
| Improvements ✅ <br /> (secondary) | -2.3% | [-20.8%, -0.1%] | 30 |
| All ❌✅ (primary) | 0.7% | [-0.7%, 3.7%] | 116 |


2 Regressions, 2 Improvements, 7 Mixed; 2 of them in rollups
42 artifact comparisons made in total

#### Regressions

Rollup of 5 pull requests [#148059](https://github.com/rust-lang/rust/pull/148059) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=38bc2468dea062750e767bdd5c25f8279275baa0&end=75948c8bb3bd37f1e8ee20273a04edea4c1f84f8&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:----:|:------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.4%] | 35 |
| Regressions ❌ <br /> (secondary) | 0.2% | [0.0%, 1.5%] | 34 |
| Improvements ✅ <br /> (primary) | - | - | 0 |
| Improvements ✅ <br /> (secondary) | - | - | 0 |
| All ❌✅ (primary) | 0.2% | [0.1%, 0.4%] | 35 |

Identified by @Zalathar here: https://github.com/rust-lang/rust/pull/148054#issuecomment-3445258937, will be addressed in a followup.

Mark desugared range expression spans with DesugaringKind::RangeExpr [#146069](https://github.com/rust-lang/rust/pull/146069) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=b1b464d6f61ec8c4e609c1328106378c066a9729&end=23fced0fcc5e0ec260d25f04a8b78b269e5e90f0&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.3%] | 8 |
| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.3%] | 13 |
| Improvements ✅ <br /> (primary) | - | - | 0 |
| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All ❌✅ (primary) | 0.2% | [0.1%, 0.3%] | 8 |

Regression was deemed acceptable here: https://github.com/rust-lang/rust/pull/146069#issuecomment-3392694635

Note that the regression mostly affects very short benchmarks (incr-unchanged and such), so this is not as bad as it might seem from the summary.

#### Improvements

refactor: Move to anstream + anstyle for styling [#147207](https://github.com/rust-lang/rust/pull/147207) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4d94478977b5d6c0caa1e66390c6b137520af368&end=dc1feabef242259d61bd930713de3250577c1c71&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | - | - | 0 |
| Regressions ❌ <br /> (secondary) | - | - | 0 |
| Improvements ✅ <br /> (primary) | -0.1% | [-0.2%, -0.1%] | 11 |
| Improvements ✅ <br /> (secondary) | - | - | 0 |
| All ❌✅ (primary) | -0.1% | [-0.2%, -0.1%] | 11 |


StateTransform: Only load pin field once. [#147493](https://github.com/rust-lang/rust/pull/147493) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=04ff05c9c0cfbca33115c5f1b8bb20a66a54b799&end=79966ae420f38c5861d177356a3446023c090d6d&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | - | - | 0 |
| Regressions ❌ <br /> (secondary) | - | - | 0 |
| Improvements ✅ <br /> (primary) | - | - | 0 |
| Improvements ✅ <br /> (secondary) | -0.9% | [-1.9%, -0.3%] | 15 |
| All ❌✅ (primary) | - | - | 0 |


#### Mixed

Remove current code for embedding command-line args in PDB [#147022](https://github.com/rust-lang/rust/pull/147022) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=37ec98f5d33c0876a9ffa5ee17dc0895659efe37&end=96fe3c31c2ec385f3d3263346bcdde3d118cdaf6&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:---------------:|:-----:|
| Regressions ❌ <br /> (primary) | 1.2% | [1.2%, 1.2%] | 1 |
| Regressions ❌ <br /> (secondary) | 1.2% | [1.2%, 1.2%] | 1 |
| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.2%] | 6 |
| Improvements ✅ <br /> (secondary) | -4.2% | [-20.9%, -0.3%] | 14 |
| All ❌✅ (primary) | -0.1% | [-0.4%, 1.2%] | 7 |

`syn` regression is noise.

Rollup of 7 pull requests [#147957](https://github.com/rust-lang/rust/pull/147957) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0d7813d9a227efc1e5fee4716615b4c417dafcbe&end=b2ee1b333aea9951c3eefa4967098cc763de59ca&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 2 |
| Regressions ❌ <br /> (secondary) | 0.2% | [0.0%, 0.7%] | 6 |
| Improvements ✅ <br /> (primary) | - | - | 0 |
| Improvements ✅ <br /> (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
| All ❌✅ (primary) | 0.1% | [0.1%, 0.1%] | 2 |

Small regression in the frontend on a few benchmarks. Regressions seem to come from `incremental_verify_ich` which doesn't run by default and `check_mod_privacy`, so I suspect this is either https://github.com/rust-lang/rust/pull/147932 (more code in std), or maybe https://github.com/rust-lang/rust/pull/147768 (refactor on the frontend), or https://github.com/rust-lang/rust/pull/142339 (more frontend work). Unfortunately, we don't have unrolled perf builds for PRs in this rollup, so it's a bit complicated to investigate further. Changes are small, so I don't think this is worth more investigation.

Replace NullOp::SizeOf and NullOp::AlignOf by lang items. [#147793](https://github.com/rust-lang/rust/pull/147793) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=7838ce1a3a0046d02c8a0d30d54465c39cceb8de&end=4b3ba5844e8831c9b3ee5a5643cdff5da0677426&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.5%] | 3 |
| Regressions ❌ <br /> (secondary) | 0.3% | [0.1%, 0.7%] | 30 |
| Improvements ✅ <br /> (primary) | -0.4% | [-0.7%, -0.1%] | 4 |
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.7%, -0.1%] | 5 |
| All ❌✅ (primary) | -0.1% | [-0.7%, 0.5%] | 7 |

Justified by https://github.com/rust-lang/rust/pull/147793#issuecomment-3424111320 and https://github.com/rust-lang/rust/pull/147793#issuecomment-3424123985. Post-merge results seem worse, mostly because there's some `deep-vector` spike that came back in https://github.com/rust-lang/rust/pull/142712 (possibly noise?).

privacy: Introduce some caching to type visiting in `DefIdVisitorSkeleton` [#147486](https://github.com/rust-lang/rust/pull/147486) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=11d2046fe9962720558cb15f72541f7fd170dec9&end=6501e64fcb02d22b49d6e59d10a7692ec8095619&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.2% | [0.0%, 0.4%] | 17 |
| Regressions ❌ <br /> (secondary) | 0.7% | [0.1%, 1.2%] | 6 |
| Improvements ✅ <br /> (primary) | -0.4% | [-0.5%, -0.2%] | 7 |
| Improvements ✅ <br /> (secondary) | - | - | 0 |
| All ❌✅ (primary) | 0.0% | [-0.5%, 0.4%] | 24 |

This PR fixes exponential blowup. Small regressions from caching overhead are expected. Asked the author whether we should add the original exponential case to our benchmarks, it looks like it got discussed here: https://github.com/rust-lang/rust/pull/146128#discussion_r2447992775.

hir_analysis: add missing sizedness bounds [#142712](https://github.com/rust-lang/rust/pull/142712) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2aaa62b89d22b570e560731b03e3d2d6f5c3bbce&end=f435972085b697a1ece8ee6a1ac76efff8d1df7b&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.8% | [0.1%, 3.6%] | 72 |
| Regressions ❌ <br /> (secondary) | 0.5% | [0.0%, 1.6%] | 63 |
| Improvements ✅ <br /> (primary) | -0.1% | [-0.1%, -0.1%] | 1 |
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.4%, -0.1%] | 23 |
| All ❌✅ (primary) | 0.8% | [-0.1%, 3.6%] | 73 |

Pretty large regresion on many benchmarks. There was no perf run or perf concern mentioned before so it looks unexpected. Pinged the author.

Improve source code for `highlight.rs` [#146992](https://github.com/rust-lang/rust/pull/146992) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2888098522be731065efe51f85eaba8b49fee1a5&end=f977dfc388ea39c9886b7f8c49abce26e6918df6&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.2% | [0.1%, 0.2%] | 6 |
| Regressions ❌ <br /> (secondary) | 0.2% | [0.1%, 0.3%] | 3 |
| Improvements ✅ <br /> (primary) | - | - | 0 |
| Improvements ✅ <br /> (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All ❌✅ (primary) | 0.2% | [0.1%, 0.2%] | 6 |

Small regressions were expected based on the pre-merge run and following comment: https://github.com/rust-lang/rust/pull/146992#issuecomment-3410213402. Overall the impact is not big and looks partially like noise, since the results got better in next PR (which is unrelated).

Deduce captures(none) for a return place and parameters [#147890](https://github.com/rust-lang/rust/pull/147890) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f977dfc388ea39c9886b7f8c49abce26e6918df6&end=f37aa9955f03bb1bc6fe08670cb1ecae534b5815&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.3% | [0.3%, 0.3%] | 1 |
| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.1%] | 3 |
| Improvements ✅ <br /> (primary) | -0.2% | [-0.5%, -0.1%] | 31 |
| Improvements ✅ <br /> (secondary) | -0.3% | [-0.6%, -0.0%] | 34 |
| All ❌✅ (primary) | -0.2% | [-0.5%, 0.3%] | 32 |

Improvements outweigh regressions.
Loading