Repository navigation
Rollup of 4 perf-sensitive pull requests - #164224
Conversation
…aethlin Treat union fields as aliasing each other in value_analysis Fixes rust-lang#161898 The problem was that `for_each_aliasing_place` only considered enum variants and the discriminant as aliasing, so writing to one union field left the state of the other fields alone. JumpThreading then threaded the second `switchInt` on `u.a` using the value from before `u.b = 5`, and DataflowConstProp folded the read of `u.a` to a stale constant in the same way. Union field places have only been in the map since rust-lang#127087 began collecting places syntactically; before that `iter_fields` skipped unions. I made `for_each_aliasing_place` flood everything under a union as soon as the walk reaches it, since all non-ZST union fields start at offset 0 and overlap. The alternative of not registering places below unions would also work but loses threading on union reads with no write in between. Added a mir-opt test for each pass.
…ast, r=petrochenkov Avoid cloning impl trait AST nodes in late resolution I have removed unnecessary AST clones by storing `&'ast` references. This is just a refactoring and does not change behavior. I did not use an LLM in this pull request.
…, r=mati865 Implement `clone_from` for `BorrowckDomain` I've added a similar implementation for `BorrowckDomain` as for `rustc_const_eval::check_consts::resolver::State`. https://github.com/rust-lang/rust/blob/208a58d8c1b22a5b43c8e671077ed5ac4032abde/compiler/rustc_const_eval/src/check_consts/resolver.rs#L270-L281
…, r=nnethercote Reserve more capacity for Symbol interner This avoids some resizing and rehashing. More details in the added comment.
|
@bors r+ p=5 force |
|
Trying commonly failed jobs |
This comment has been minimized.
This comment has been minimized.
Rollup of 4 perf-sensitive pull requests try-job: dist-various-1 try-job: test-various try-job: test-x86_64-gnu-aux try-job: test-x86_64-msvc-1 try-job: test-aarch64-apple-1 try-job: test-aarch64-apple-2 try-job: test-x86_64-mingw-1 try-job: test-i686-msvc try-job: test-armhf-gnu try-job: test-x86_64-gnu-llvm-22-3
This comment has been minimized.
This comment has been minimized.
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing d64de46 (parent) -> e9bbadf (this PR) Test differencesShow 16 test diffsStage 1
Stage 2
Additionally, 14 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard e9bbadf6824e65b3583c2dda3a0926ec76df9143 --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (e9bbadf): comparison URL. Overall result: ❌✅ regressions and improvements - please read:Our benchmarks found a performance regression caused by this PR. Next Steps:
@rustbot label: +perf-regression Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary 1.0%, secondary -2.9%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary 1.2%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary 0.1%, secondary 0.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 490.869s -> 490.497s (-0.08%) |
|
📌 Perf builds for each rolled up PR:
parent commit: d64de46d0a In the case of a perf regression, run the following command with the SHAs of each PR you suspect might be the cause: |
|
@rust-timer triage all |
Running triage with 47 benchmarksTriage only executes the benchmarks on rollup members, that were changed significantly on the rollup.
#163425 e89ad72 Treat union fields as aliasing each other in value_analysisInstruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (secondary 2.5%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 1.8%, secondary -3.5%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary 0.1%, secondary 0.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
#164074 c5438cd Avoid cloning impl trait AST nodes in late resolutionInstruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary 0.8%, secondary 2.6%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesThis perf run didn't have relevant results for this metric. Binary sizeResults (primary 0.1%, secondary 0.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
#164089 078dd24 Implement
|
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
- | - | 0 |
| Improvements ✅ (primary) |
-0.2% | [-0.6%, -0.1%] | 21 |
| Improvements ✅ (secondary) |
-0.4% | [-0.8%, -0.1%] | 53 |
| All ❌✅ (primary) | -0.2% | [-0.6%, -0.1%] | 21 |
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
Results (secondary 2.3%)
A less reliable metric. May be of interest, but not used to determine the overall result above.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
2.3% | [2.3%, 2.3%] | 1 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
- | - | 0 |
| All ❌✅ (primary) | - | - | 0 |
Binary size
Results (primary 0.1%, secondary 0.1%)
A less reliable metric. May be of interest, but not used to determine the overall result above.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
0.1% | [0.0%, 0.2%] | 82 |
| Regressions ❌ (secondary) |
0.1% | [0.0%, 0.2%] | 47 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
- | - | 0 |
| All ❌✅ (primary) | 0.1% | [0.0%, 0.2%] | 82 |
#164150 19d761c Reserve more capacity for Symbol interner
Instruction count
Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
0.9% | [0.7%, 1.1%] | 2 |
| Improvements ✅ (primary) |
-0.4% | [-0.7%, -0.2%] | 10 |
| Improvements ✅ (secondary) |
-0.7% | [-4.4%, -0.1%] | 90 |
| All ❌✅ (primary) | -0.4% | [-0.7%, -0.2%] | 10 |
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
Results (secondary 0.3%)
A less reliable metric. May be of interest, but not used to determine the overall result above.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
7.7% | [7.7%, 7.7%] | 1 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-7.0% | [-7.0%, -7.0%] | 1 |
| All ❌✅ (primary) | - | - | 0 |
Binary size
Results (primary 0.1%, secondary 0.1%)
A less reliable metric. May be of interest, but not used to determine the overall result above.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
0.1% | [0.0%, 0.2%] | 79 |
| Regressions ❌ (secondary) |
0.1% | [0.0%, 0.2%] | 47 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
- | - | 0 |
| All ❌✅ (primary) | 0.1% | [0.0%, 0.2%] | 79 |
|
I ran the cachegrind reproducers for helloworld doc json on all these, and they are all |
Successful merges:
clone_fromforBorrowckDomain#164089 (Implementclone_fromforBorrowckDomain)r? @ghost
Create a similar rollup