Uh oh!
There was an error while loading. Please reload this page.
Better sso structures - #77171
Conversation
rust-highfive
commented
Sep 24, 2020
r? @oli-obk (rust_highfive has picked a reviewer for you, use r? to override) |
oli-obk
commented
Sep 25, 2020
@bors try @rust-timer queue |
rust-timer
commented
Sep 25, 2020
Awaiting bors try build completion |
bors
commented
Sep 25, 2020
⌛ Trying commit 1046efb1dd1e7739fea89f4717b64ede06478647 with merge 756b88018c71526ac1998d6368cd4886d88cdb73... |
oli-obk
commented
Sep 25, 2020
I'll review in a bit, but let's launch perfbot in parallel |
bors
commented
Sep 25, 2020
☀️ Try build successful - checks-actions, checks-azure |
rust-timer
commented
Sep 25, 2020
Queued 756b88018c71526ac1998d6368cd4886d88cdb73 with parent fadf025, future comparison URL. |
Mark-Simulacrum
commented
Sep 25, 2020
FYI, this try build might be a bit noisier or affected by more than just the PR itself, as we just applied some de-noising on the server. So it might make sense to re-create a try build, especially if perf is a blocking concern for whatever reason. |
There was a problem hiding this comment.
Why is this not just a wrapper struct around SsoHashMap<T, ()>?
There was a problem hiding this comment.
That's actually a good idea.
Sure, it's already a thin wrap, but it could be even thinner.
Let me try that.
There was a problem hiding this comment.
Ah 😆 I thought there was a reason and just wanted it documented. Maybe let's do that in a separate step, since we already have a perf situation
rust-timer
commented
Sep 25, 2020
Finished benchmarking try commit (756b88018c71526ac1998d6368cd4886d88cdb73): comparison url. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. Please note that if the perf results are neutral, you should likely undo the rollup=never given below by specifying Importantly, though, if the results of this run are non-neutral do not roll this PR up -- it will mask other regressions or improvements in the roll up. @bors rollup=never |
oli-obk
commented
Sep 25, 2020
Just to be sure that's not due to the recent perf changes: @bors try @rust-timer queue |
rust-timer
commented
Sep 25, 2020
Awaiting bors try build completion |
bors
commented
Sep 25, 2020
⌛ Trying commit 1046efb1dd1e7739fea89f4717b64ede06478647 with merge f42f07c1222f0c090836b569b9de3e508c571e1b... |
bors
commented
Sep 25, 2020
☀️ Try build successful - checks-actions, checks-azure |
rust-timer
commented
Sep 25, 2020
Queued f42f07c1222f0c090836b569b9de3e508c571e1b with parent b984ef6, future comparison URL. |
rust-timer
commented
Sep 25, 2020
Finished benchmarking try commit (f42f07c1222f0c090836b569b9de3e508c571e1b): comparison url. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. Please note that if the perf results are neutral, you should likely undo the rollup=never given below by specifying Importantly, though, if the results of this run are non-neutral do not roll this PR up -- it will mask other regressions or improvements in the roll up. @bors rollup=never |
oli-obk
commented
Sep 25, 2020
So it's not noise. Typeck deserialization from incremental caches is affected |
VFLashM
commented
Sep 26, 2020
I'm really surprised by the result. |
oli-obk
commented
Sep 26, 2020
Maybe inlining changed? That can be very subtle and happen due to minor changes |
VFLashM
commented
Sep 26, 2020
Hmm. I can't reproduce this result locally: Any suggestions? Here are the changes compared to previous version:
|
oli-obk
commented
Sep 26, 2020
I can't tell from the code changes (where the map/set is used) how this could affect incremental cache loading times. I'm guessing it's all spurious. So, let's go with: rebase, change the set impl to just forward to the map impl, run perf again. Does that sound reasonable to you? |
VFLashM
commented
Sep 26, 2020
Yup, let me do just that. |
It is a more descriptive name and with upcoming changes there will be nothing "mini" about them.
Now both provide almost complete API of their non-SSO counterparts.
ba13505 to
848cd2aComparebors
commented
Sep 27, 2020
⌛ Trying commit 41942fa with merge f19b20c14696f331a43042bde62219a773d43ba4... |
bors
commented
Sep 27, 2020
☀️ Try build successful - checks-actions, checks-azure |
rust-timer
commented
Sep 27, 2020
Queued f19b20c14696f331a43042bde62219a773d43ba4 with parent c9e5e6a, future comparison URL. |
rust-timer
commented
Sep 27, 2020
Finished benchmarking try commit (f19b20c14696f331a43042bde62219a773d43ba4): comparison url. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. Please note that if the perf results are neutral, you should likely undo the rollup=never given below by specifying Importantly, though, if the results of this run are non-neutral do not roll this PR up -- it will mask other regressions or improvements in the roll up. @bors rollup=never |
VFLashM
commented
Sep 28, 2020
Sigh. Trying to reproduce it locally one more time. |
VFLashM
commented
Sep 28, 2020
I reproduced it locally. Am I missing something? |
oli-obk
commented
Sep 28, 2020
The only thing I can come up with is that this is not a regression in this PR, but this PR is just a symptom of a regression from the beta (bootstrap) compiler to master. So master doesn't optimize your changes as well as they were optimized on beta. Can you try this out by rebasing onto the master branch from just when the mini maps were introduced and rerunning perf on stage 2? Or is that not long enough ago to make a difference? cc @rust-lang/wg-compiler-performance @rust-lang/wg-codegen any ideas what's going on? do we have any perf regressions maybe due to an llvm upgrade or something? |
VFLashM
commented
Oct 2, 2020
Yeah, they were introduced just recently. I think I narrowed it down. When I remove generality over I'm out good of ideas by now. What would be the best way to inspect assembly output sans for disassembling rust? |
oli-obk
commented
Oct 2, 2020
|
Due to performance regression, see SsoHashMap comment.
VFLashM
commented
Oct 3, 2020
Pushed a change. Removed |
oli-obk
commented
Oct 5, 2020
@bors try @rust-timer queue |
rust-timer
commented
Oct 5, 2020
Awaiting bors try build completion |
bors
commented
Oct 5, 2020
⌛ Trying commit d1d2184 with merge 3580ee5afaa5d6dc265216653a63bdd35ebe828c... |
bors
commented
Oct 5, 2020
☀️ Try build successful - checks-actions, checks-azure |
rust-timer
commented
Oct 5, 2020
Queued 3580ee5afaa5d6dc265216653a63bdd35ebe828c with parent efbaa41, future comparison URL. |
rust-timer
commented
Oct 5, 2020
Finished benchmarking try commit (3580ee5afaa5d6dc265216653a63bdd35ebe828c): comparison url. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. Please note that if the perf results are neutral, you should likely undo the rollup=never given below by specifying Importantly, though, if the results of this run are non-neutral do not roll this PR up -- it will mask other regressions or improvements in the roll up. @bors rollup=never |
oli-obk
commented
Oct 5, 2020
@bors r+ Thanks, this looks good now. Wrt the constant that decides the array size, you could make it a const generic parameter in a follow-up PR if you think making it configurable is useful per-site. |
bors
commented
Oct 5, 2020
📌 Commit d1d2184 has been approved by |
bors
commented
Oct 5, 2020
bors
commented
Oct 5, 2020
☀️ Test successful - checks-actions, checks-azure |

This change greatly expands interface of MiniSet/MiniMap and renames them because they are no longer "Mini".