Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ All significant changes to this project will be documented in this file.

### New features

* Add immutable `XorFilter` and `XorFilterBuilder` behind the `xor` feature, with 8-, 16-, and 32-bit fingerprints, consuming builder configuration with complete-input construction and bounded seeded retries, optional cardinality metadata for imported filters, standard serialization for all three widths (Java-compatible for 8/16-bit filters), and raw parts for application-defined storage.
* Add immutable `XorFilter` and `XorFilterBuilder` behind the `xor` feature, with 8-, 16-, and 32-bit fingerprints, consuming builder configuration with complete-input construction, bounded seeded retries and compact temporary storage, optional cardinality metadata for imported filters, standard serialization for all three widths (Java-compatible for 8/16-bit filters), and raw parts for application-defined storage.

### Improvements

Expand Down
6 changes: 6 additions & 0 deletions datasketches/src/xor/filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,12 @@ impl XorFilter {
.with_context("num_items", num_items));
}

// Assignment only needs the peel stack. Release the graph before allocating the
// fingerprint payload so these allocations do not overlap at peak memory usage.
drop(xor_mask);
drop(count);
drop(queue);

let fingerprints = match filter_type {
XorFilterType::Xor8 => {
let mut values = vec![0_u8; capacity].into_boxed_slice();
Expand Down
Loading