-
Notifications
You must be signed in to change notification settings - Fork 13.4k
[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
base: master
Are you sure you want to change the base?
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 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 If this was unintentional then you should revert the changes before this PR is merged. 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 |
This comment has been minimized.
This comment has been minimized.
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%) |
I haven't looked into the code yet apart from our discussions and walkthrough, are the max-rss increases expected? |
Great! How do you get that improvement? In the borrow checker, or somewhere else?
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 |
In move/init for liveness in the borrowck, #141667 |
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