-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
perf: Revert accidental inclusion of a part of #69218 #71996
Conversation
r? @davidtwco (rust_highfive has picked a reviewer for you, use r? to override) |
This was accidentally included in rust-lang#69494 after a rebase and given how much `inflate` and `keccak` stresses the obligation forest seems like a likely culprit to the regression in those benchmarks. (It is necessary in rust-lang#69218 as obligation forest needs to accurately track the root variables or unifications will get lost)
That seems like the wrong PR |
@bors try @rust-timer queue |
Awaiting bors try build completion |
⌛ Trying commit 1d8489c with merge b80dbeb9b6dc6b59230376c05f5d2dd14a757f54... |
☀️ Try build successful - checks-azure |
Queued b80dbeb9b6dc6b59230376c05f5d2dd14a757f54 with parent a08c473, future comparison URL. |
@bors r+ the perf run results, however, aren't visible yet |
📌 Commit 1d8489c has been approved by |
@bors delegate+ |
✌️ @Marwes can now approve this pull request |
Finished benchmarking try commit b80dbeb9b6dc6b59230376c05f5d2dd14a757f54, comparison URL. |
@bors rollup=never (please do that for PRs that are suspected to impact perf) |
@bors r- Hmm |
@Marwes doesn't seem to have much impact on keccak... any thoughts? |
Trying to figure that out but I really can't find another place which would disproportionately affect keccak and inflate :S |
Reclaims most of the regression in inflate
Adding some @nnethercote I tried cachegrind but for whatever reason I can't get it to work. Tried with callgrind also and tried to view the output in kcachegrind (which I have used before) but I just get addresses displayed. I guess something makes valgrind/cachegrind/ etc not understand the debug information. (perf + hotspot works fine though, as usual :/) |
@Marwes: your comment made me realize that the docs are missing a crucial part about setting a |
Used |
Didn't work how? Can you show me some example output? |
Running And then running (Diffs a file with itself so everything is zero, still there are not rust functions in the diff)
|
Note that I'm not sure we'll rebuild the compiler for you, so you may need to x.py clean and rebuild. Also, debuginfo level of 1 should be sufficient I suspect and significantly lighter on disk usage - I've personally seen IIRC tens of gigabytes of space savings. |
I also recommend running Cachegrind via |
Cleaning and rebuilding does not help, nor does just using level 1 or running via collector. Could use a perf run to validate that inlining helps. |
@bors try @rust-timer queue |
Awaiting bors try build completion |
⌛ Trying commit ebc7eda with merge ad74291237c3c0233ace59eec9db124ff1c17082... |
☀️ Try build successful - checks-azure |
Queued ad74291237c3c0233ace59eec9db124ff1c17082 with parent aeca4d6, future comparison URL. |
Finished benchmarking try commit ad74291237c3c0233ace59eec9db124ff1c17082, comparison URL. |
Great work @Marwes! |
It doesn't recover all the performance but it is at least most of it (1.5% regression remaining locally). However with #69218 it probably doesn't matter anyway, since that improves keccak and inflate by so much that it won't really be noticed. |
@bors r+ rollup=neve |
📌 Commit ebc7eda has been approved by |
@bors rollup=never |
☀️ Test successful - checks-azure |
The perf improvements from the landing are here. Nice work! |
This was accidentally included in #69464 after a rebase and given
how much
inflate
andkeccak
stresses the obligation forest seemslike a likely culprit to the regression in those benchmarks.
(It is necessary in #69218 as obligation forest needs to accurately
track the root variables or unifications will get lost)