Skip to content

Latest commit

 

History

History
67 lines (45 loc) · 1.31 KB

File metadata and controls

67 lines (45 loc) · 1.31 KB

API: CMSHeap

Status: Ready

Purpose

Count-Min with integrated heavy-hitter heap (HHHeap) for top-k tracking.

Type/Struct

  • CMSHeap<S = Vector2D<i64>, M = RegularPath, H = DefaultXxHasher>

Constructors

fn new(rows: usize, cols: usize, top_k: usize) -> Self
fn from_storage(storage: S, top_k: usize) -> Self
fn default() -> Self

Insert/Update

fn insert(&mut self, key: &DataInput)
fn insert_many(&mut self, key: &DataInput, many: S::Counter)
fn bulk_insert(&mut self, values: &[DataInput])
fn clear_heap(&mut self)

Query

fn estimate(&self, key: &DataInput) -> S::Counter
fn rows(&self) -> usize
fn cols(&self) -> usize
fn cms(&self) -> &CountMin<S, M, H>
fn heap(&self) -> &HHHeap

Merge

fn merge(&mut self, other: &Self)

Serialization

Not currently provided as a dedicated public API.

Examples

use asap_sketchlib::{CMSHeap, DataInput, Vector2D, RegularPath};

let mut sk = CMSHeap::<Vector2D<i64>, RegularPath>::new(3, 256, 8);
sk.insert(&DataInput::Str("flow"));
assert!(sk.estimate(&DataInput::Str("flow")) >= 1);

Caveats

  • Heap can be cleared independently of sketch counters.
  • Merge requires matching dimensions and compatible type parameters.

Status

Useful helper wrapper; tested but less central than base sketches.