pub struct Diagnostic {
pub suffix: Cow<'static, str>,
pub is_enabled: bool,
/* private fields */
}
Expand description
A timeline of DiagnosticMeasurement
s of a specific type.
Diagnostic examples: frames per second, CPU usage, network latency
Fields§
§suffix: Cow<'static, str>
§is_enabled: bool
Implementations§
Source§impl Diagnostic
impl Diagnostic
Sourcepub fn add_measurement(&mut self, measurement: DiagnosticMeasurement)
pub fn add_measurement(&mut self, measurement: DiagnosticMeasurement)
Add a new value as a DiagnosticMeasurement
.
Sourcepub fn new(path: DiagnosticPath) -> Diagnostic
pub fn new(path: DiagnosticPath) -> Diagnostic
Create a new diagnostic with the given path.
Sourcepub fn with_max_history_length(self, max_history_length: usize) -> Self
pub fn with_max_history_length(self, max_history_length: usize) -> Self
Set the maximum history length.
Sourcepub fn with_suffix(self, suffix: impl Into<Cow<'static, str>>) -> Self
pub fn with_suffix(self, suffix: impl Into<Cow<'static, str>>) -> Self
Add a suffix to use when logging the value, can be used to show a unit.
Sourcepub fn with_smoothing_factor(self, smoothing_factor: f64) -> Self
pub fn with_smoothing_factor(self, smoothing_factor: f64) -> Self
The smoothing factor used for the exponential smoothing used for
smoothed
.
If measurements come in less frequently than smoothing_factor
seconds
apart, no smoothing will be applied. As measurements come in more
frequently, the smoothing takes a greater effect such that it takes
approximately smoothing_factor
seconds for 83% of an instantaneous
change in measurement to e reflected in the smoothed value.
A smoothing factor of 0.0 will effectively disable smoothing.
pub fn path(&self) -> &DiagnosticPath
Sourcepub fn measurement(&self) -> Option<&DiagnosticMeasurement>
pub fn measurement(&self) -> Option<&DiagnosticMeasurement>
Get the latest measurement from this diagnostic.
Sourcepub fn average(&self) -> Option<f64>
pub fn average(&self) -> Option<f64>
Return the simple moving average of this diagnostic’s recent values. N.B. this a cheap operation as the sum is cached.
Sourcepub fn smoothed(&self) -> Option<f64>
pub fn smoothed(&self) -> Option<f64>
Return the exponential moving average of this diagnostic.
This is by default tuned to behave reasonably well for a typical
measurement that changes every frame such as frametime. This can be
adjusted using with_smoothing_factor
.
Sourcepub fn history_len(&self) -> usize
pub fn history_len(&self) -> usize
Return the number of elements for this diagnostic.
Sourcepub fn duration(&self) -> Option<Duration>
pub fn duration(&self) -> Option<Duration>
Return the duration between the oldest and most recent values for this diagnostic.
Sourcepub fn get_max_history_length(&self) -> usize
pub fn get_max_history_length(&self) -> usize
Return the maximum number of elements for this diagnostic.
pub fn values(&self) -> impl Iterator<Item = &f64>
pub fn measurements(&self) -> impl Iterator<Item = &DiagnosticMeasurement>
Sourcepub fn clear_history(&mut self)
pub fn clear_history(&mut self)
Clear the history of this diagnostic.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Diagnostic
impl RefUnwindSafe for Diagnostic
impl Send for Diagnostic
impl Sync for Diagnostic
impl Unpin for Diagnostic
impl UnwindSafe for Diagnostic
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.