Add Builder for fast sorted fingerprint insertion#20
Open
lukesandberg wants to merge 1 commit intoarthurprs:masterfrom
Open
Add Builder for fast sorted fingerprint insertion#20lukesandberg wants to merge 1 commit intoarthurprs:masterfrom
lukesandberg wants to merge 1 commit intoarthurprs:masterfrom
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
e3faa51 to
d7b2ab3
Compare
Owner
|
Thank you for your contributions. I skimmed through it and it looks good. I'll find more time in the next few days to review and merge. |
Author
|
Thanks! We are excited about getting these changes in and some of your recent perf improvements. They appear to have some pretty dramatic perf wins for our usecase in turbopack. |
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
Buildertype for constructing filters from fingerprints in sorted (non-decreasing) order. Each insertion is O(1) amortized via sequential append — no run boundary lookups, linear scans, or element shifting.grow()andshrink_to_fit()internal paths now useBuilderfor reconstruction, improving their performance.Filter::insert_implfor correctness and simplicityAPI
Benchmarks (10k items, criterion change% vs baseline)
sorted_insertgrow(regular insert to fill)grow_from_90pctgrow_resizeableshrinkshrink_10pctgrowTest plan
cargo test— 35 unit tests + 6 doc-tests passcargo clippy— cleancargo +nightly fuzz run fuzz_sorted_insert -- -max_total_time=120— 636K iterations, 0 crashes (includes resizable growth paths)cargo bench— no regressions, improvements in grow/shrink paths🤖 Generated with Claude Code