Struct histogram::Histogram[][src]

pub struct Histogram { /* fields omitted */ }
[]

the main datastructure

Implementations

impl Histogram[src][]

pub fn new() -> Histogram[src][]

create a new Histogram

Example

let mut h = Histogram::new();

pub fn configure() -> Config[src][]

configure a Histogram

Example

let mut h = Histogram::configure()
    .max_value(10_000)
    .build()
    .unwrap();

pub fn clear(&mut self)[src][]

clear the histogram data

Example

let mut h = Histogram::new();

h.increment(1);
assert_eq!(h.entries(), 1);
h.clear();
assert_eq!(h.entries(), 0);

pub fn increment(&mut self, value: u64) -> Result<(), &'static str>[src][]

increment the count for a value

Example

use histogram::Histogram;

let mut h = Histogram::new();

h.increment(1);
assert_eq!(h.get(1).unwrap(), 1);

pub fn increment_by(
    &mut self,
    value: u64,
    count: u64
) -> Result<(), &'static str>
[src][]

record additional counts for value

Example

let mut h = Histogram::new();

h.increment_by(1, 1);
assert_eq!(h.get(1).unwrap(), 1);

h.increment_by(2, 2);
assert_eq!(h.get(2).unwrap(), 2);

h.increment_by(10, 10);
assert_eq!(h.get(10).unwrap(), 10);

pub fn decrement(&mut self, value: u64) -> Result<(), &'static str>[src][]

decrement the count for a value. This functionality is best used to remove previously inserted from the histogram.

Example

let mut h = Histogram::new();

h.increment(1).unwrap();
assert_eq!(h.get(1).unwrap(), 1);
h.decrement(1).unwrap();
assert_eq!(h.get(1).unwrap(), 0);

pub fn decrement_by(
    &mut self,
    value: u64,
    count: u64
) -> Result<(), &'static str>
[src][]

remove count for value from histogram. This functionality is best used to remove previously inserted from the histogram.

Example

let mut h = Histogram::new();

h.increment_by(1, 1).unwrap();
h.increment_by(2, 2).unwrap();
h.decrement_by(1, 1).unwrap();

assert_eq!(h.get(2).unwrap(), 2);
assert_eq!(h.get(1).unwrap(), 0);

pub fn get(&self, value: u64) -> Option<u64>[src][]

get the count for a value

Example

let mut h = Histogram::new();
assert_eq!(h.get(1).unwrap(), 0);

pub fn percentile(&self, percentile: f64) -> Result<u64, &'static str>[src][]

return the value for the given percentile

Example

let mut h = Histogram::new();
for value in 1..1000 {
    h.increment(value).unwrap();
}

assert_eq!(h.percentile(50.0).unwrap(), 501);
assert_eq!(h.percentile(90.0).unwrap(), 901);
assert_eq!(h.percentile(99.0).unwrap(), 991);
assert_eq!(h.percentile(99.9).unwrap(), 999);

pub fn minimum(&self) -> Result<u64, &'static str>[src][]

convenience function for min

Example

let mut h = Histogram::new();
for value in 1..1000 {
    h.increment(value);
}
assert_eq!(h.minimum().unwrap(), 1);

pub fn maximum(&self) -> Result<u64, &'static str>[src][]

convenience function for max

Example

let mut h = Histogram::new();
for value in 1..1000 {
    h.increment(value);
}
assert_eq!(h.maximum().unwrap(), 999);

pub fn mean(&self) -> Result<u64, &'static str>[src][]

arithmetic mean approximation across the histogram

Example

let mut h = Histogram::new();
for value in 1..1000 {
    h.increment(value);
}
assert_eq!(h.mean().unwrap(), 500);

pub fn stdvar(&self) -> Result<u64, &'static str>[src][]

standard variance approximation across the histogram

Example

let mut h = Histogram::new();
for value in 1..11 {
    h.increment(value);
}
assert_eq!(h.stdvar().unwrap(), 9);

pub fn stddev(&self) -> Option<u64>[src][]

standard deviation approximation across the histogram

Example

let mut h = Histogram::new();

for value in 1..11 {
    h.increment(value);
}

assert_eq!(h.stddev().unwrap(), 3);

h.clear();

for value in 1..4 {
    h.increment(value);
}
for _ in 0..26 {
    h.increment(1);
}

assert_eq!(h.stddev().unwrap(), 1);

pub fn merge(&mut self, other: &Histogram)[src][]

merge one Histogram into another Histogram

Example

let mut a = Histogram::new();
let mut b = Histogram::new();

assert_eq!(a.entries(), 0);
assert_eq!(b.entries(), 0);

a.increment(1);
b.increment(2);

assert_eq!(a.entries(), 1);
assert_eq!(b.entries(), 1);

a.merge(&mut b);

assert_eq!(a.entries(), 2);
assert_eq!(a.get(1).unwrap(), 1);
assert_eq!(a.get(2).unwrap(), 1);

pub fn entries(&self) -> u64[src][]

return the number of entries in the Histogram

Example

let mut h = Histogram::new();

assert_eq!(h.entries(), 0);
h.increment(1);
assert_eq!(h.entries(), 1);

pub fn buckets_total(&self) -> u64[src][]

return the number of buckets in the Histogram

Example

let mut h = Histogram::new();

assert!(h.buckets_total() > 1);

Trait Implementations

impl Clone for Histogram[src][+]

impl Debug for Histogram[src][+]

impl Default for Histogram[src][+]

impl<'a> IntoIterator for &'a Histogram[src][+]

type Item = Bucket

The type of the elements being iterated over.

type IntoIter = Iter<'a>

Which kind of iterator are we turning this into?

Auto Trait Implementations

impl RefUnwindSafe for Histogram

impl Send for Histogram

impl Sync for Histogram

impl Unpin for Histogram

impl UnwindSafe for Histogram

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src][+]

impl<T> Borrow<T> for T where
    T: ?Sized
[src][+]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src][+]

impl<T> From<T> for T[src][+]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src][+]

impl<T> ToOwned for T where
    T: Clone
[src][+]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src][+]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src][+]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.