perf: streamline sketch update paths - #267
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
contains_and_insertto check membership and insert in one pass while reusing the existingset_bitsandset_bitconcepts.contains_and_insertwhen all queried values are already present.Performance
Measured locally with 10,000 present
u64values per iteration:cargo bench --package benchmarks --bench benchmarks -- bloom::update --min-time 3 --sample-count 30mainmedianbloom::update::contains_and_insert_present_u64The Theta-family threshold change is included as a code simplification rather than as a general performance claim: 32-byte Theta and Tuple update measurements remained close to the baseline, while shorter-input results varied more noticeably.
Validation
cargo x checkcargo x testcargo x lint