pub struct RefreshPhaseDelta {
pub phase: RefreshPhase,
pub baseline_duration_ms: u64,
pub current_duration_ms: u64,
pub duration_delta_pct: Option<f64>,
pub baseline_items_processed: u64,
pub current_items_processed: u64,
pub baseline_items_per_second: Option<f64>,
pub current_items_per_second: Option<f64>,
pub throughput_delta_pct: Option<f64>,
}Expand description
One phase’s regression signal between baseline and current.
duration_delta_pct is positive when the phase got SLOWER
(current > baseline) — the conventional regression sign that
matches operator expectations (“this PR added 12% to publish”).
throughput_delta_pct is positive when the phase got FASTER
(current items/sec > baseline items/sec). Both are None when
the corresponding base measurement is zero/missing — the
comparator refuses to invent an extrapolation from no data.
Fields§
§phase: RefreshPhase§baseline_duration_ms: u64§current_duration_ms: u64§duration_delta_pct: Option<f64>(current - baseline) / baseline * 100, rounded to 2 decimals.
Positive ⇒ slower in current. None when baseline is 0ms
(no rate of change defined) or when the phase didn’t run in
either side (cannot compare).
baseline_items_processed: u64§current_items_processed: u64§baseline_items_per_second: Option<f64>§current_items_per_second: Option<f64>§throughput_delta_pct: Option<f64>(current - baseline) / baseline * 100, rounded to 2 decimals.
Positive ⇒ faster in current. None when either side has
no items/sec measurement (cannot compute a meaningful delta).
Trait Implementations§
Source§impl Clone for RefreshPhaseDelta
impl Clone for RefreshPhaseDelta
Source§fn clone(&self) -> RefreshPhaseDelta
fn clone(&self) -> RefreshPhaseDelta
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RefreshPhaseDelta
impl Debug for RefreshPhaseDelta
Source§impl<'de> Deserialize<'de> for RefreshPhaseDelta
impl<'de> Deserialize<'de> for RefreshPhaseDelta
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for RefreshPhaseDelta
impl PartialEq for RefreshPhaseDelta
Source§fn eq(&self, other: &RefreshPhaseDelta) -> bool
fn eq(&self, other: &RefreshPhaseDelta) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for RefreshPhaseDelta
impl Serialize for RefreshPhaseDelta
impl StructuralPartialEq for RefreshPhaseDelta
Auto Trait Implementations§
impl Freeze for RefreshPhaseDelta
impl RefUnwindSafe for RefreshPhaseDelta
impl Send for RefreshPhaseDelta
impl Sync for RefreshPhaseDelta
impl Unpin for RefreshPhaseDelta
impl UnsafeUnpin for RefreshPhaseDelta
impl UnwindSafe for RefreshPhaseDelta
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>, which can then be
downcast into Box<dyn 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>, which 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.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.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more