Uh oh!
There was an error while loading. Please reload this page.
Experiment: No dynamic dispatch for query functions - #155244
Experiment: No dynamic dispatch for query functions#155244zetanumbers wants to merge 15 commits into
Conversation
petrochenkov
commented
Apr 13, 2026
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Experiment: No dynamic dispatch for query functions
zetanumbers
commented
Apr 13, 2026
At this point the code is super messy as an experiment. However I've found some changes feel more natural than the current impl, so I might return and polish it as a refactor. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
petrochenkov
commented
Apr 13, 2026
@bors cancel |
❗ There is currently no auto build in progress on this PR. Hint: There is a pending try build on this PR. Maybe you meant to cancel it? You can do that using |
petrochenkov
commented
Apr 13, 2026
@bors try cancel |
Try build cancelled. Cancelled workflows: |
petrochenkov
commented
Apr 13, 2026
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
Experiment: No dynamic dispatch for query functions
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Kobzol
commented
Apr 13, 2026
I vaguely remember something similar tried in the past, but maybe I misremember 🤔 Let's try 🔮: small compile-time wins and a massive bootstrap time regression 😆 |
rust-timer
commented
Apr 13, 2026
Finished benchmarking commit (311dde6): comparison URL. Overall result: ❌✅ regressions and improvements - please read:Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf. Next, please: If you can, justify the regressions found in this try perf run in writing along with @bors rollup=never 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 2.1%, secondary 3.2%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary -2.6%, secondary 5.7%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: 491.114s -> 526.632s (7.23%) |
This comment has been minimized.
This comment has been minimized.
zetanumbers
commented
Apr 14, 2026
More. |
petrochenkov
commented
Apr 14, 2026
@bors try @rust-timer queue |
rust-timer
commented
Apr 14, 2026
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
🔒 Merge conflict A merge attempt failed due to a merge conflict. Please rebase on top of the latest base How do I rebase?Assuming
You may also read Please avoid the "Resolve conflicts" button on GitHub. Sometimes step 4 will complete without asking for resolution. This is usually due to difference between how |
petrochenkov
commented
Apr 14, 2026
Ah, cannot try, this needs a rebase first. |
View all comments
Currently a lot of functions in the query system go through dynamic dispatch. This PR eliminates dynamic dispatch as much as possible in rustc_middle and rustc_query_impl. Actually rustc_query_impl was merged into rustc_middle to reduce the number of small changes in this PR.
Please run rustc_perf as this PR might bring performance benefits.
r? @petrochenkov