Skip to main content

RateMeter

Struct RateMeter 

Source
pub struct RateMeter { /* private fields */ }
Expand description

Exponentially weighted moving average of a byte counter’s rate.

Time-based: the weight of each sample depends on how much wall clock it covers, not on how many samples were taken, so the smoothing has the same time constant at 50 Hz and at one sample a second. The estimate starts at zero and is driven by the samples alone; the first call only records where the counter stood.

Implementations§

Source§

impl RateMeter

Source

pub const ETA_FLOOR: f64 = 1024.0

Below this the rate is startup noise and an ETA built from it counts down from nonsense; eta_secs reports none instead.

Source

pub fn new(tau_secs: f64) -> Self

A meter that forgets about 63% of the past every tau_secs seconds.

Source

pub fn sample(&mut self, now_secs: f64, done: u64) -> f64

Feed the counter’s value at now_secs and get the smoothed rate back.

A sample that does not advance the clock is ignored, and a counter that went backwards (a retried chunk) reads as zero bytes moved, not as a negative rate.

Source

pub fn rate(&self) -> f64

The smoothed rate in bytes per second.

Source

pub fn eta_secs(&self, remaining: u64) -> Option<f64>

Seconds until remaining bytes arrive at the current rate, once the rate has warmed past ETA_FLOOR.

Trait Implementations§

Source§

impl Clone for RateMeter

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RateMeter

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RateMeter

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for RateMeter

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.