pub struct PerformanceProfile {
pub avg_hessian_time_us: f64,
pub avg_hvp_time_us: f64,
pub avg_jacobian_time_us: f64,
pub parallel_efficiency: f64,
pub sparsity_benefit: f64,
pub recorded_computations: usize,
pub largest_hessian_problem: usize,
}Expand description
Measured performance of a HigherOrderEngine, from
HigherOrderEngine::get_derivative_stats.
Every field is derived from timings recorded by the engine’s own entry
points. Before those entry points recorded anything, avg_hvp_time_us,
avg_jacobian_time_us and cache_hit_rate were hard-coded zeros.
Fields§
§avg_hessian_time_us: f64Mean wall time of a full Hessian computation, in microseconds.
avg_hvp_time_us: f64Mean wall time of a Hessian-vector product, in microseconds.
avg_jacobian_time_us: f64Mean wall time of a Jacobian computation, in microseconds.
parallel_efficiency: f64Mean sequential time / mean parallel time over recorded Hessians; 1.0
when only one of the two regimes has been observed.
sparsity_benefit: f64Mean dense time / mean sparsified time over recorded Hessians; 1.0
when only one of the two regimes has been observed.
recorded_computations: usizeNumber of timings recorded across all three kinds.
largest_hessian_problem: usizeLargest problem dimension seen in a recorded Hessian computation.
Trait Implementations§
Source§impl Clone for PerformanceProfile
impl Clone for PerformanceProfile
Auto Trait Implementations§
impl Freeze for PerformanceProfile
impl RefUnwindSafe for PerformanceProfile
impl Send for PerformanceProfile
impl Sync for PerformanceProfile
impl Unpin for PerformanceProfile
impl UnsafeUnpin for PerformanceProfile
impl UnwindSafe for PerformanceProfile
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.