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

Fix poor worst case performance of set intersection #57043

Merged
merged 4 commits into from Jan 15, 2019

Conversation

Projects
None yet
8 participants
@ssomers
Copy link
Contributor

ssomers commented Dec 21, 2018

Specifically, intersection of asymmetrically sized sets when the large set is on the left. See also the latest answer on stackoverflow.

Also applied to the union member, where the effect is much less but still measurable.

Formatted the changed code only, does not increase the error count reported by tidy check, and tried to adhere to the spirit of the unit tests.

Fix poor worst case performance of set intersection (and union, somew…
…hat) on asymmetrically sized sets and extend unit tests slightly beyond that
@rust-highfive

This comment was marked as outdated.

Copy link
Collaborator

rust-highfive commented Dec 21, 2018

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @TimNN (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

@Centril

This comment was marked as outdated.

Copy link
Contributor

Centril commented Dec 24, 2018

cc @bluss

@memoryruins

This comment has been minimized.

Copy link
Contributor

memoryruins commented Jan 13, 2019

@Centril

This comment has been minimized.

Copy link
Contributor

Centril commented Jan 13, 2019

r? @bluss

@rust-highfive rust-highfive assigned bluss and unassigned TimNN Jan 13, 2019

@alexcrichton

This comment has been minimized.

Copy link
Member

alexcrichton commented Jan 14, 2019

@bors: r+

Thanks @ssomers!

@bors

This comment has been minimized.

Copy link
Contributor

bors commented Jan 14, 2019

📌 Commit cef2e2f has been approved by alexcrichton

Centril added a commit to Centril/rust that referenced this pull request Jan 14, 2019

Rollup merge of rust-lang#57043 - ssomers:master, r=alexcrichton
Fix poor worst case performance of set intersection

Specifically, intersection of asymmetrically sized sets when the large set is on the left. See also the [latest answer on stackoverflow](https://stackoverflow.com/questions/35439376/python-set-intersection-is-faster-then-rust-hashset-intersection).

Also applied to the union member, where the effect is much less but still measurable.

Formatted the changed code only, does not increase the error count reported by tidy check, and tried to adhere to the spirit of the unit tests.

Centril added a commit to Centril/rust that referenced this pull request Jan 14, 2019

Rollup merge of rust-lang#57043 - ssomers:master, r=alexcrichton
Fix poor worst case performance of set intersection

Specifically, intersection of asymmetrically sized sets when the large set is on the left. See also the [latest answer on stackoverflow](https://stackoverflow.com/questions/35439376/python-set-intersection-is-faster-then-rust-hashset-intersection).

Also applied to the union member, where the effect is much less but still measurable.

Formatted the changed code only, does not increase the error count reported by tidy check, and tried to adhere to the spirit of the unit tests.

bors added a commit that referenced this pull request Jan 14, 2019

Auto merge of #57607 - Centril:rollup, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #57043 (Fix poor worst case performance of set intersection)
 - #57480 (Clean up and fix a bug in query plumbing)
 - #57481 (provide suggestion for invalid boolean cast)
 - #57540 (Modify some parser diagnostics to continue evaluating beyond the parser)
 - #57570 (Querify local `plugin_registrar_fn` and `proc_macro_decls_static`)
 - #57572 (Unaccept `extern_in_paths`)
 - #57585 (Recover from item trailing semicolon)
 - #57589 (Add a debug_assert to Vec::set_len)

Failed merges:

r? @ghost

@bors bors merged commit cef2e2f into rust-lang:master Jan 15, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment