Releases: mpope9/exor_filter
Releases · mpope9/exor_filter
v0.4.1
Included in this release:
- Upgraded xor_filter headerfile. Includes protections against dups.
- Included fix in xor_filter header file found by
cppcheck
.- PR for upstream found here: FastFilter/xor_singleheader#14
- Used
cppcheck
on nif code, looks clean. - Performance increases
- Using a custom tail-recursive
over_10_thousand/1
instead oflength/1
function for greater performance on large lists. - Removing dup key checking from erlang code, now found in underlying library.
- Using a custom tail-recursive
- Address typo for freeing the wrong pointer
- Using
lists:map
instead oflists:foldr
, as it isn't tail recursive, for the default hash. - Removed raw interface, no longer has any speed benefits.
v0.3.0
This release is the 'production readiness' release.
Includes:
- Error when duplicate keys are present in the hash function and pre-hashed options, there is no longer the risk of an infinite loop during initialization!
- The
default_hash
squashes dupes, so that there is no risk of this happening here either.
- The
- A 'raw' interface to avoid this, use with caution.
- Convenience modules
xor8
andxor16
. - Dialyzer fixes
- Moar tests
- Documentation updates.
- Simplified C and erlang code
- Removal of
fast_hash
option, as duplication checking would have voided the usefulness.
v0.0.1
v0.0.1 CHANGELOG
- Two hashing methods are provided
default_hash
, which uses theerlang:phash2/1
functionfast_hash
, which is faster but inconsistent across nodes.
- A custom hash function may be provided
- Pre-hashed data may be passed as well.
- Initialization using a dirty nif is used if the passed list is greater than 10K elements. So it is 'safe' to load large amounts of data.
- It takes 2 seconds to initialize a filter of 10M elements using the
exor_filter:xor8_buffered/2
function with pre-hashed data.- Our example used keys that were generated sequentially 😛