Skip to content

Latest commit

 

History

History
67 lines (45 loc) · 1.12 KB

File metadata and controls

67 lines (45 loc) · 1.12 KB

API: UnivMon

Status: Ready

Purpose

Universal stream-monitoring sketch for L1/L2/cardinality/entropy.

Type/Struct

  • UnivMon

Constructors

fn default() -> Self
fn init_univmon(heap_size: usize, sketch_row: usize, sketch_col: usize, layer_size: usize) -> Self

Insert/Update

fn insert(&mut self, key: &DataInput, value: i64)
fn fast_insert(&mut self, key: &DataInput, value: i64)
fn free(&mut self)

Query

fn calc_l1(&self) -> f64
fn calc_l2(&self) -> f64
fn calc_entropy(&self) -> f64
fn calc_card(&self) -> f64
fn calc_g_sum<F>(&self, g: F, is_card: bool) -> f64

Merge

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

Serialization

fn serialize_to_bytes(&self) -> Result<Vec<u8>, RmpEncodeError>
fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, RmpDecodeError>

Examples

use asap_sketchlib::{DataInput, UnivMon};

let mut um = UnivMon::init_univmon(32, 3, 1024, 4);
um.insert(&DataInput::Str("flow"), 1);
assert!(um.calc_l1() >= 1.0);

Caveats

  • Structure parameters should match before merge.

Status

Primary multi-metric framework.