Trait telemetry::plain::Histogram
[−]
[src]
pub trait Histogram<T>: Clone {
fn record_cb<F>(&self, _: F) where F: FnOnce() -> Option<T>;
fn record(&self, value: T) { ... }
}
A plain histogram.
Histograms do not implement Sync
, so an instance of Histogram
cannot be shared by several threads. However, any histogram can be
cloned as needed for concurrent use.
Performance
Cloning a histogram is relatively cheap, both in terms of memory and in terms of speed (most histograms weigh ~40bytes on a x86-64 architecture).
When the telemetry service is inactive, recording data to a
histogram is very fast (essentially a dereference and an atomic
fetch). When the telemetry service is active, the duration of
recording data is comparable to the duration of sending a simple
message to a Sender
.
Required Methods
fn record_cb<F>(&self, _: F) where F: FnOnce() -> Option<T>
Record a value in this histogram, as provided by a callback.
If the service is currently inactive, this is a noop.
If the callback returns None
, no value is recorded.
Provided Methods
fn record(&self, value: T)
Record a value in this histogram.
If the service is currently inactive, this is a noop.