pub struct Histogram { /* private fields */ }
Expand description
the main datastructure
Implementations§
Source§impl Histogram
impl Histogram
Sourcepub fn configure() -> Config
pub fn configure() -> Config
configure a Histogram
§Example
let mut h = Histogram::configure()
.max_value(10_000)
.build()
.unwrap();
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
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);
Sourcepub fn increment(&mut self, value: u64) -> Result<(), &'static str>
pub fn increment(&mut self, value: u64) -> Result<(), &'static str>
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);
Sourcepub fn increment_by(
&mut self,
value: u64,
count: u64,
) -> Result<(), &'static str>
pub fn increment_by( &mut self, value: u64, count: u64, ) -> Result<(), &'static str>
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);
Sourcepub fn decrement(&mut self, value: u64) -> Result<(), &'static str>
pub fn decrement(&mut self, value: u64) -> Result<(), &'static str>
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);
Sourcepub fn decrement_by(
&mut self,
value: u64,
count: u64,
) -> Result<(), &'static str>
pub fn decrement_by( &mut self, value: u64, count: u64, ) -> Result<(), &'static str>
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);
Sourcepub fn percentile(&self, percentile: f64) -> Result<u64, &'static str>
pub fn percentile(&self, percentile: f64) -> Result<u64, &'static str>
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);
Sourcepub fn minimum(&self) -> Result<u64, &'static str>
pub fn minimum(&self) -> Result<u64, &'static str>
convenience function for min
§Example
let mut h = Histogram::new();
for value in 1..1000 {
h.increment(value);
}
assert_eq!(h.minimum().unwrap(), 1);
Sourcepub fn maximum(&self) -> Result<u64, &'static str>
pub fn maximum(&self) -> Result<u64, &'static str>
convenience function for max
§Example
let mut h = Histogram::new();
for value in 1..1000 {
h.increment(value);
}
assert_eq!(h.maximum().unwrap(), 999);
Sourcepub fn mean(&self) -> Result<u64, &'static str>
pub fn mean(&self) -> Result<u64, &'static str>
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);
Sourcepub fn stdvar(&self) -> Result<u64, &'static str>
pub fn stdvar(&self) -> Result<u64, &'static str>
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);
Sourcepub fn stddev(&self) -> Option<u64>
pub fn stddev(&self) -> Option<u64>
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);
Sourcepub fn merge(&mut self, other: &Histogram)
pub fn merge(&mut self, other: &Histogram)
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);
Sourcepub fn entries(&self) -> u64
pub fn entries(&self) -> u64
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);
Sourcepub fn buckets_total(&self) -> u64
pub fn buckets_total(&self) -> u64
return the number of buckets in the Histogram
§Example
let mut h = Histogram::new();
assert!(h.buckets_total() > 1);