4个版本
0.2.0 | 2023年9月21日 |
---|---|
0.1.2 | 2023年9月18日 |
0.1.1 | 2023年9月18日 |
0.1.0 | 2023年9月18日 |
#1122 in 硬件支持
27KB
434 行
hyperlog-simd
一个用于ARM和x86_64平台上的HyperLogLog和HyperLogLogPlusPlus流式去重计数算法的Rust实现,具有SIMD(单指令多数据)支持。此外,还提供了serde兼容性,以方便序列化和反序列化。
特性
- 🔬 HLL和HLL++:实现了HyperLogLog(HLL)和HyperLogLog++(HLL++)算法。
- 🚀 快速SIMD支持:利用ARM和x86_64平台上的SIMD操作速度。
- 🔄 合并Sketches:合并多个sketches以允许增量化和并行处理。
- 📦 Serde兼容性:轻松序列化和反序列化您的sketches。
- 📚 全面文档:提供了所有特性的示例和文档。
目录
安装
将 hyperlog-simd
添加到您的 Cargo.toml
依赖项中
[dependencies]
hyperlog-simd = "0.1.0"
使用
以下是一个简单的入门示例
use hyperlog_simd::{HyperLogLog, HyperLogLogPlusPlus};
let mut hll = HyperLogLog::new();
hll.add("hello");
hll.add("world");
let count = hll.estimate();
println!("Estimated distinct count: {}", count);
let mut hllpp = HyperLogLogPlusPlus::new();
hllpp.add("hello");
hllpp.add("world");
let count_pp = hllpp.estimate();
println!("Estimated distinct estimate (HLL++): {}", count_pp);
有关详细示例和文档,请参阅文档。
基准测试
此库在支持SIMD的平台上有显著的性能提升。基准测试将定期更新,您也可以自行运行它们
cargo bench
贡献
我们欢迎贡献!请参阅CONTRIBUTING.md以获取指导和详细信息。
许可
hyperlog-simd
在MIT协议下授权。有关详细信息,请参阅LICENSE。
快乐的编码!我们希望hyperlog-simd
以最高效率帮助您实现流式去重计数需求!🚀🦀
依赖项
~1.1–1.6MB
~34K SLoC