#sketch #quantile #port #golang #direct #merge #dd-sketch

sketches-ddsketch

Go语言DDSketch实现的直接移植

8次发布

0.3.0 2024年6月1日
0.2.2 2024年2月4日
0.2.1 2023年4月10日
0.2.0 2022年6月27日
0.1.1 2019年9月21日

#46 in 算法

Download history 148896/week @ 2024-04-27 148077/week @ 2024-05-04 161598/week @ 2024-05-11 159568/week @ 2024-05-18 166386/week @ 2024-05-25 234408/week @ 2024-06-01 215421/week @ 2024-06-08 210971/week @ 2024-06-15 255797/week @ 2024-06-22 222971/week @ 2024-06-29 214062/week @ 2024-07-06 205748/week @ 2024-07-13 217483/week @ 2024-07-20 214194/week @ 2024-07-27 201259/week @ 2024-08-03 153936/week @ 2024-08-10

820,416 每月下载量
用于 144 个crate(7 直接使用)

Apache-2.0

24KB
557

sketches-ddsketch

这是将GolangDDSketch分位数sketch实现直接移植到Rust。DDSketch是一个具有相对误差保证的全合并分位数sketch,并且速度非常快。

DDSketch

  • sketch大小根据需要自动增长,初始为128个bin。
  • 极快的样本插入和sketch合并。

用法

use sketches_ddsketch::{Config, DDSketch};

let config = Config::defaults();
let mut sketch = DDSketch::new(c);

sketch.add(1.0);
sketch.add(1.0);
sketch.add(1.0);

// Get p=50%
let quantile = sketch.quantile(0.5).unwrap();
assert_eq!(quantile, Some(1.0));

性能

此移植实现中未进行任何性能调整,因此我们预计其配置文件将与原始实现相似。

开箱即用,可以实现超过70M样本插入/秒和350K sketch合并/秒。所有测试都在一个单核Intel i7处理器上运行,最大时钟频率为4.2Ghz。

依赖项

~170KB