Skip to main content

OptimizationStats

Struct OptimizationStats 

Source
pub struct OptimizationStats {
    pub ops_before: usize,
    pub ops_after: usize,
    pub bindings_before: usize,
    pub bindings_after: usize,
    pub literals_before: usize,
    pub literals_after: usize,
    pub iterations: usize,
    pub converged: bool,
}
Expand description

Per-pipeline-run statistics. Useful for benchmarks, regression diagnostics, and --verbose emit modes.

Fields§

§ops_before: usize

Top-level body op count before optimization.

§ops_after: usize

Top-level body op count after optimization.

§bindings_before: usize

Number of bindings before. After equals bindings_before minus what drop_unused_bindings stripped.

§bindings_after: usize§literals_before: usize

Number of literals in the top-level body’s pool, before/after.

§literals_after: usize§iterations: usize

How many run_all_once iterations actually fired (1 to RUN_ALL_MAX_ITERS). 1 means the pipeline converged on the first pass; higher means later-pass changes exposed work for earlier passes and the fixed-point loop kicked in.

§converged: bool

True iff the fixed-point converged within the cap. False means the pipeline stopped mid-way; output is still valid (every individual pass is total) but may have residual optimization opportunities.

Implementations§

Source§

impl OptimizationStats

Source

pub fn ops_eliminated(&self) -> usize

Total ops eliminated (top-level body only). Saturating, so the rare case where output exceeds input (e.g. loop_unroll inlining) returns 0 rather than wrapping.

Source

pub fn bindings_dropped(&self) -> usize

Source

pub fn is_no_op(&self) -> bool

True iff the pipeline made no change at all - no ops eliminated, no bindings dropped, no literals dropped, AND op count is stable. The kernel was either already optimal or out of the pipeline’s reach. Useful for tooling that wants to skip emit re-runs when nothing changed.

Source

pub fn off_graph_dropped(&self) -> usize

Total off-graph data dropped (bindings + literals). Useful as a single-number “how much cleanup did the tail of the pipeline do?” signal.

Source

pub fn merge(&mut self, other: OptimizationStats)

Merge another OptimizationStats into a running aggregate. Adds counts and ORs the converged flag (any non-converged run → aggregate is non-converged). iterations accumulates. Useful for tooling that runs run_all_with_stats over a corpus of N kernels and wants a single rolled-up summary.

Source

pub fn zero() -> Self

Identity element for Self::merge. Useful as the seed of a fold over a corpus.

Source

pub fn format_short(&self) -> String

One-line human-readable summary suitable for log lines. Format: "ops X→Y (-N), bindings A→B (-M), iters K (converged|stopped)". Mirrors the format_short pattern on the audit reports.

Trait Implementations§

Source§

impl Clone for OptimizationStats

Source§

fn clone(&self) -> OptimizationStats

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 Copy for OptimizationStats

Source§

impl Debug for OptimizationStats

Source§

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

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

impl<'de> Deserialize<'de> for OptimizationStats

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for OptimizationStats

Source§

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

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

impl Eq for OptimizationStats

Source§

impl PartialEq for OptimizationStats

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl Serialize for OptimizationStats

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for OptimizationStats

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more