#probabilistic #sketch #hyper-log-log #data-structures #streaming-algorithm

amadeus-streaming

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

4个版本

0.4.3 2021年5月20日
0.4.2 2020年8月18日
0.4.1 2020年8月7日
0.4.0 2020年8月7日

#1499 in 算法

Download history 32/week @ 2024-03-12 35/week @ 2024-03-19 44/week @ 2024-03-26 53/week @ 2024-04-02 24/week @ 2024-04-09 58/week @ 2024-04-16 43/week @ 2024-04-23 90/week @ 2024-04-30 38/week @ 2024-05-07 39/week @ 2024-05-14 47/week @ 2024-05-21 34/week @ 2024-05-28 33/week @ 2024-06-04 30/week @ 2024-06-11 46/week @ 2024-06-18 30/week @ 2024-06-25

147每月下载量
10个crate(4个直接)中使用

Apache-2.0

170KB
4K SLoC

amadeus-streaming

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

这是amadeus项目的子crate。

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

  • Count–min sketch
  • Top k(Count–min sketch加上双链表哈希表来跟踪重合值排序时的重合值/Top k键)
  • HyperLogLog
  • Reservoir采样

该库的目标是允许组合这些算法;例如,Top k + HyperLogLog可以实现类似于SELECT key FROM table GROUP BY key ORDER BY value COUNT()的近似版本。

使用RUSTFLAGSnightly特性运行您的应用程序,以利用SIMD加速。

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

查看此gist以获取要实现的其他算法的列表。其他资源包括概率数据结构 – 维基百科DataSketches – Yahoo起源的类似Java库Algebird – Twitter起源的类似Java库

由于这些实现通常在热代码路径上,因此可能需要使用unsafe来)实现渐近最优算法或缓解观察到的瓶颈。

依赖项

~1.1–2.3MB
~49K SLoC