#概率 #草图 #HyperLogLog #流算法

streaming_algorithms

各种流算法的 SIMD 加速实现,包括 Count–min 草图、Top k、HyperLogLog、采样器

5 个不稳定版本

0.3.0 2020年7月15日
0.2.0 2020年6月17日
0.1.2 2020年6月9日
0.1.1 2019年9月9日
0.1.0 2018年9月19日

#888数据结构

每月31次下载
kmerhll 中使用

MIT/Apache

150KB
3K SLoC

streaming_algorithms

Crates.io MIT / Apache 2.0 licensed Build Status

📖 文档 | 💬 聊天

各种 流算法 的 SIMD 加速实现。

这个库仍在开发中。非常欢迎提交 PR!目前实现的算法包括

  • Count–min 草图
  • Top k(Count–min 草图加上双链表哈希表以跟踪重击者/按聚合值排序的 Top k 键)
  • HyperLogLog
  • 采样器

该库的目标是使这些算法可组合;例如 Top k + HyperLogLog 可以实现类似以下 SQL 查询的近似版本:SELECT key FROM table GROUP BY key ORDER BY COUNT(DISTINCT value) DESC LIMIT k

使用 RUSTFLAGS="-C target-cpu=native"nightly 功能运行您的应用程序,以利用 SIMD 加速,如下所示

RUSTFLAGS="-C target-cpu=native" cargo run --features "streaming_algorithms/nightly" --release

请参阅 此 gist 以获取待实现的其他算法的良好列表。其他资源包括 概率数据结构 – 维基百科DataSketches – 来自雅虎的类似 Java 库Algebird – 来自 Twitter 的类似 Java 库

由于这些实现通常位于热代码路径中,因此使用了 unsafe,尽管只有在以下情况下才需要:a) 实现渐近最优算法或 b) 缓解观察到的瓶颈。

许可协议

根据以下任一项许可

任选。

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您提交的任何有意包含在作品中的贡献,应按照上述方式双重许可,没有任何附加条款或条件。

依赖项

~1–2MB
~42K SLoC