Skip to content

Pranish-Pantha/pithanos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎯 Pithanos

Crates.io License: MIT

⚡ Fast, lock-free probabilistic data structures for modern Rust. Includes Bloom Filter, Cuckoo Filter, and Count-Min Sketch implementations optimized for speed and concurrency.


✨ Features

Feature Description
🧩 Bloom Filter Approximate set membership check
🥒 Cuckoo Filter Approximate set membership with deletion support
📊 Count-Min Sketch Approximate frequency estimation
⚙️ No global locks Thread-safe access with atomic operations, fast deterministic hashing (xxhash)
📦 Modular design Shared internal traits and utilities, clean module structure
🧪 Benchmark suite Criterion-based microbenchmarks for queries

📦 Installation

Add this to your Cargo.toml:

[dependencies]
pithanos = "0.2"

🚀 Quick Start

Bloom Filter

use pithanos::bloom::BloomFilter;

fn main() {
    let filter = BloomFilter::new(1000, 3); // 1000 bits, 3 hash functions

    filter.insert(&"foo");
    filter.insert(&"bar");

    assert!(filter.contains(&"foo"));
    assert!(!filter.contains(&"bar"));
}

Count-Min Sketch

use pithanos::cms::CountMinSketch;

fn main() {
    let cms = CountMinSketch::new(1000, 3); // wdith 100, depth 3

    cms.increment(&"foo", 3);
    cms.increment(&"bar", 1);

    println!("Frequency of 'foo': {}", cms.frequency(&"foo"));
    println!("Frequency of 'bar': {}", cms.frequency(&"bar"));
}

🧪 Benchmarks

Pithanos uses criterion for micro-benchmarks.

Run all benchmarks with cargo bench

💬 Acknowledgments

Pithanos (πιθανός) — Ancient Greek: “likely,” “probable,” or “plausible.”

Inspired by RedisBloom

About

Fast, lock-free probabilistic data structures for modern Rust

Topics

Resources

License

Stars

Watchers

Forks

Languages