-
Notifications
You must be signed in to change notification settings - Fork 13.7k
[experimental, do not merge!] a faster implementation of Polonius and a more compact DenseBitSet implementation #141583
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
Conversation
...not interpretted as Rust doctests
This commit modifies DenseBitSet so that it only uses one word on the stack instead of 4 words as before, allowing for faster clones. The downside is that it may at most store 63 elements on the stack as aposed to 128 for the previous implementation.
sizes are different The new implementation of DenseBitSet doesn't store the exact domain size, so of course the hash values for identical sets with different domain sizes may be equal.
... dependency to be required instead of optional
...erialize dependency to be required instead of optional", and introduce conditional compilation instead.
This PR changes a file inside tests/crashes
. If a crash was fixed, please move into the corresponding ui
subdir and add 'Fixes #' to the PR description to autoclose the issue upon merge.
Some changes occurred in src/tools/compiletest
cc @jieyouxu
Some changes occurred to MIR optimizations
cc @rust-lang/wg-mir-opt
These commits modify the Cargo.lock
file. Unintentional changes to Cargo.lock
can be introduced when switching branches and rebasing PRs.
If this was unintentional then you should revert the changes before this PR is merged.
Otherwise, you can ignore this comment.
Some changes occurred in coverage instrumentation.
cc @Zalathar
For perf tests, your PRs should be drafts so they’re not merged and also they won’t ping a lot of people until you want them to do so for review.
@bors try @rust-timer queue
This comment has been minimized.
This comment has been minimized.
☀️ Try build successful - checks-actions
Build commit: 16435a6 (16435a66301a7d82ae6ff183f6d9a7005cb3f471
)
This comment has been minimized.
This comment has been minimized.
For perf tests, your PRs should be drafts so they’re not merged and also they won’t ping a lot of people until you want them to do so for review.
I think that drafts still ping ppl right now, although they shouldn't request a reviewer.
Sometimes we don't want to ping people, so I hope that's incorrect and they still don't ping.
Finished benchmarking commit (16435a6): comparison URL. Overall result: ❌✅ regressions and improvements - please read the text belowBenchmarking 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. Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @bors rollup=never Instruction countThis 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.
Max RSS (memory usage)Results (primary 70.8%, secondary 25.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.
CyclesResults (primary 1.4%, secondary 1.0%)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.
Binary sizeResults (primary 0.0%, secondary 0.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.
Bootstrap: 776.359s -> 774.569s (-0.23%) |
cranelift-codegen
is still seeing a big +5% hit but funnily enough I likely have a -10% improvement for it.
I haven't looked into the code yet apart from our discussions and walkthrough, are the max-rss increases expected?
cranelift-codegen
is still seeing a big +5% hit but funnily enough I likely have a -10% improvement for it.
Great! How do you get that improvement? In the borrow checker, or somewhere else?
I haven't looked into the code yet apart from our discussions and walkthrough, are the max-rss increases expected?
No The max-rss increase in a few crates is not expected. I don't know what it comes from. It is at least not the DenseBitSet
implementation because we see the same regression in #141326 which is same as this pr minus the DenseBitSet
-changes. It has to be investigated further.
In move/init for liveness in the borrowck, #141667
Uh oh!
There was an error while loading. Please reload this page.
This is the union of #141326 and #141325, a Polonius experiment combined with a more compact version of
DenseBitSet
. I would like to get a perf-run of this @lqd.r? lqd