Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EXPERIMENTAL] Perf experiments for user-type projection and visiting primary bindings #137156

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

Zalathar
Copy link
Contributor

r? ghost
@rustbot experimental

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 16, 2025
@Zalathar
Copy link
Contributor Author

@rustbot experimental

@Zalathar Zalathar added S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 17, 2025
@Zalathar
Copy link
Contributor Author

Don't use the full visit_primary_bindings (which also builds user-type projections) for callers that don't need it:

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 17, 2025
@bors
Copy link
Contributor

bors commented Feb 17, 2025

⌛ Trying commit 21e5195 with merge 05c0a45...

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 17, 2025
[EXPERIMENTAL] Perf experiments for user-type projection and visiting primary bindings

r? ghost
`@rustbot` experimental
@rust-log-analyzer

This comment has been minimized.

@Zalathar
Copy link
Contributor Author

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 17, 2025
[EXPERIMENTAL] Perf experiments for user-type projection and visiting primary bindings

r? ghost
`@rustbot` experimental
@bors
Copy link
Contributor

bors commented Feb 17, 2025

⌛ Trying commit 37d8664 with merge 50cce24...

@bors
Copy link
Contributor

bors commented Feb 17, 2025

☀️ Try build successful - checks-actions
Build commit: 50cce24 (50cce24090d8af2e956a039c2211eb857b1e1882)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (50cce24): comparison URL.

Overall result: no relevant changes - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (secondary 0.3%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.8% [2.8%, 2.8%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.2% [-2.2%, -2.2%] 1
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 790.255s -> 789.634s (-0.08%)
Artifact size: 350.01 MiB -> 350.07 MiB (0.02%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 17, 2025
@Zalathar
Copy link
Contributor Author

Let's try my full overhaul to UserTypeProjections, including what's already in #137123:

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 17, 2025
@bors
Copy link
Contributor

bors commented Feb 17, 2025

⌛ Trying commit 0db74e2 with merge 1d0df2d...

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 17, 2025
[EXPERIMENTAL] Perf experiments for user-type projection and visiting primary bindings

r? ghost
`@rustbot` experimental
@bors
Copy link
Contributor

bors commented Feb 17, 2025

☀️ Try build successful - checks-actions
Build commit: 1d0df2d (1d0df2d7a57af746f77818258b722d7c4d0ebcd4)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (1d0df2d): comparison URL.

Overall result: ✅ improvements - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.2% [-0.2%, -0.2%] 1
Improvements ✅
(secondary)
-0.2% [-0.2%, -0.2%] 1
All ❌✅ (primary) -0.2% [-0.2%, -0.2%] 1

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (primary 1.9%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
1.9% [1.4%, 2.4%] 7
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.9% [1.4%, 2.4%] 7

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 789.735s -> 788.328s (-0.18%)
Artifact size: 350.22 MiB -> 350.12 MiB (-0.03%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 17, 2025
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (e799a75): comparison URL.

Overall result: ❌ regressions - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.2% [0.2%, 0.2%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -0.5%, secondary -3.2%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
1.8% [1.8%, 1.8%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.8% [-2.8%, -2.8%] 1
Improvements ✅
(secondary)
-3.2% [-3.2%, -3.2%] 1
All ❌✅ (primary) -0.5% [-2.8%, 1.8%] 2

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 772.938s -> 772.737s (-0.03%)
Artifact size: 360.27 MiB -> 360.26 MiB (-0.00%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 20, 2025
@Zalathar Zalathar force-pushed the proj-perf branch 2 times, most recently from bcd1007 to a8292c6 Compare February 24, 2025 11:31
@Zalathar
Copy link
Contributor Author

Does anything good come from storing THIR pattern nodes in an IndexVec?

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 24, 2025
@bors
Copy link
Contributor

bors commented Feb 24, 2025

⌛ Trying commit a8292c6 with merge 3388060...

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 24, 2025
[EXPERIMENTAL] Perf experiments for user-type projection and visiting primary bindings

r? ghost
`@rustbot` experimental
@bors
Copy link
Contributor

bors commented Feb 24, 2025

☀️ Try build successful - checks-actions
Build commit: 3388060 (338806014f390531933ad550f8d9f70ec19a371c)

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (3388060): comparison URL.

Overall result: no relevant changes - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (secondary 2.1%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.1% [1.7%, 2.7%] 7
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 770.825s -> 770.289s (-0.07%)
Artifact size: 359.65 MiB -> 359.65 MiB (-0.00%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 24, 2025
@Zalathar
Copy link
Contributor Author

Trying the PatId migration once again, but this time with more de-boxing afterwards.

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 25, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 25, 2025
[EXPERIMENTAL] Perf experiments for user-type projection and visiting primary bindings

r? ghost
`@rustbot` experimental
@bors
Copy link
Contributor

bors commented Feb 25, 2025

⌛ Trying commit 18826bf with merge 703b52e...

@bors
Copy link
Contributor

bors commented Feb 25, 2025

☀️ Try build successful - checks-actions
Build commit: 703b52e (703b52e3ca149a02fbcede8b50d96021f194f244)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (703b52e): comparison URL.

Overall result: ❌ regressions - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
0.3% [0.3%, 0.3%] 1
Regressions ❌
(secondary)
1.3% [1.3%, 1.3%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.3% [0.3%, 0.3%] 1

Max RSS (memory usage)

Results (primary -0.4%, secondary -0.9%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
1.5% [0.4%, 3.9%] 21
Regressions ❌
(secondary)
1.3% [0.4%, 3.0%] 14
Improvements ✅
(primary)
-0.8% [-2.3%, -0.4%] 104
Improvements ✅
(secondary)
-1.1% [-2.7%, -0.4%] 147
All ❌✅ (primary) -0.4% [-2.3%, 3.9%] 125

Cycles

Results (primary -0.0%, secondary -0.3%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
1.1% [0.4%, 6.6%] 18
Regressions ❌
(secondary)
0.9% [0.4%, 3.9%] 46
Improvements ✅
(primary)
-0.8% [-3.0%, -0.4%] 28
Improvements ✅
(secondary)
-1.1% [-5.5%, -0.4%] 62
All ❌✅ (primary) -0.0% [-3.0%, 6.6%] 46

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 770.608s -> 771.553s (0.12%)
Artifact size: 361.97 MiB -> 361.96 MiB (-0.00%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants