A fast bloom filter implemented by Rust for Python!
Project description
fastbloom
A fast bloom filter implemented by Rust for Python!
setup
Python
requirements
Python >= 3.7
install
Install the latest fastbloom version with:
pip install fastbloom-rs
Rust
fastbloom-rs = "0.1.3"
Examples
Python
basic usage
from fastbloom_rs import BloomFilter
bloom = BloomFilter(100_000_000, 0.01)
bloom.add_str('hello')
bloom.add_bytes(b'world')
bloom.add_int(9527)
assert bloom.contains('hello')
assert bloom.contains(b'world')
assert bloom.contains(9527)
assert not bloom.contains('hello world')
build bloom filter from bytes or list
from fastbloom_rs import BloomFilter
bloom = BloomFilter(100_000_000, 0.01)
bloom.add_str('hello')
assert bloom.contains('hello')
bloom2 = BloomFilter.from_bytes(bloom.get_bytes(), bloom.hashes())
assert bloom2.contains('hello')
bloom3 = BloomFilter.from_int_array(bloom.get_int_array(), bloom.hashes())
assert bloom3.contains('hello')
Rust
use fastbloom_rs::{BloomFilter, FilterBuilder};
let mut bloom = FilterBuilder::new(100_000_000, 0.01).build_bloom_filter();
bloom.add(b"helloworld");
assert_eq!(bloom.contains(b"helloworld"), true);
assert_eq!(bloom.contains(b"helloworld!"), false);
more examples at docs.rs
benchmark
computer info
CPU | Memory | OS |
---|---|---|
AMD Ryzen 7 5800U with Radeon Graphics | 16G | Windows 10 |
bloom add
Benchmark insert str to bloom filter:
|
|
Additional Statistics:
Lower bound | Estimate | Upper bound | |
---|---|---|---|
Slope | 41.095 ns | 41.146 ns | 41.203 ns |
R² | 0.9959495 | 0.9961648 | 0.9959083 |
Mean | 41.157 ns | 41.207 ns | 41.257 ns |
Std. Dev. | 226.07 ps | 261.59 ps | 294.01 ps |
Median | 41.132 ns | 41.184 ns | 41.247 ns |
MAD | 201.13 ps | 277.13 ps | 335.05 ps |
bloom add one million
Benchmark loop insert (1..1_000_000).map(|n| { n.to_string() })
to bloom filter:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fastbloom_rs-0.1.3.tar.gz
(61.0 kB
view hashes)
Built Distributions
Close
Hashes for fastbloom_rs-0.1.3-cp37-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 331c2ee4e3d32de95ae7b3235b63e2c90ebe41e3054ac975caa1f89707b6689c |
|
MD5 | dcc562b2bc4cdb42125deb9e7ab1afd0 |
|
BLAKE2b-256 | fb8ae4e933319330ce261eeea1a73222e8b47b895b25db6c3357620c0833f3f0 |
Close
Hashes for fastbloom_rs-0.1.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcaa315dd109afef876214cddb43cc69860c891d4b4b14268b6ebfbea0d772dc |
|
MD5 | 86dc27068b8b93aa8fbc5e8440c53a14 |
|
BLAKE2b-256 | 303eed1d809518b895a5cf6e8f38ad0229bbfdc6c361c96baaf0d5fc3efbdf8a |
Close
Hashes for fastbloom_rs-0.1.3-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74c0db2ba66abf9b5e7b8f66fc2f3f9cbe30ee19cf326c8b1d8cc8dd292b1612 |
|
MD5 | 61342269c973f02fff0b4dcb4e7729e4 |
|
BLAKE2b-256 | ed09f0278c0d783740df9e217e18ce236911a29d7130c2e85e4c932736bee21f |
Close
Hashes for fastbloom_rs-0.1.3-cp37-abi3-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d03ac6146ea5ad28d315952a94a086d91942d6b08a5ac9113b4c2c0a2aaf1cf8 |
|
MD5 | a7802c4d7db50b4a19d39a520731a3fe |
|
BLAKE2b-256 | 9159b3973bf60016fa833f2e48908238e9592309ca2f90cb7abdc12633e943b9 |
Close
Hashes for fastbloom_rs-0.1.3-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f86bb9948d727b3e7284128772aca656527ab2b55d3e8222977c0a6bd54aadb |
|
MD5 | bcf994bd9197cb4099bc8201cf389703 |
|
BLAKE2b-256 | a4dd5f2ec5f8943daaad80130b8679c50663d29ee57e2f5203ade86889f386dd |