pub struct CycleTelemetry {
pub static_sccs: usize,
pub phantom_sccs: usize,
pub live_cycles_witnessed: usize,
pub circ_cells_stamped: usize,
pub settle_passes_total: usize,
pub max_passes_single_scc: usize,
pub iterated_sccs: usize,
pub converged_sccs: usize,
pub capped_sccs: usize,
pub max_abs_delta_at_stop: f64,
pub nan_converged: usize,
pub elapsed_ms: u128,
}Expand description
Per-recalc telemetry for SCC evaluation under CycleDetection::Runtime
(spec formualizer-cycle-semantics-spec.md §10).
Collection is unconditional: SCC tasks are rare relative to ordinary
vertex evaluation and the counters are a handful of integer adds per
task, so no config flag gates them (unlike VirtualDepTelemetry,
which pays per-schedule costs). Counters reset at the start of every
evaluation request.
Fields§
§static_sccs: usizeSCC tasks executed (static SCCs that reached Runtime evaluation).
phantom_sccs: usizeSCC tasks whose live subgraph was acyclic — values produced.
live_cycles_witnessed: usizeDistinct live cycles witnessed across all SCC tasks.
circ_cells_stamped: usizeCells stamped #CIRC! by Runtime SCC tasks.
settle_passes_total: usizeEvaluation sweeps over (subsets of) SCC members, totalled across tasks (pass 1 included).
max_passes_single_scc: usizeLargest pass count any single SCC task needed.
iterated_sccs: usizeSCC tasks that entered iterative calculation (CyclePolicy::Iterate
with a witnessed live cycle). RFC #113, Stage 3.
converged_sccs: usizeIterating SCC tasks that stopped because every member passed the spec-§6 convergence test.
capped_sccs: usizeSCC tasks that stopped at a pass cap. Under CyclePolicy::Iterate
this is the Excel max_iterations cap (NOT an error — last values
are kept; includes the no-convergence-test max_iterations: 1
contract). Under CyclePolicy::Error it is the defensive acyclic
settle cap (|SCC| + 2), which only a bug can hit.
max_abs_delta_at_stop: f64Largest |Δ| observed in any member’s final-pass convergence
comparison across iterating SCC tasks (numeric-class members only).
0.0 when no comparison ran (e.g. max_iterations: 1).
nan_converged: usizeIdentical-bit NaN vs NaN member comparisons that were treated as converged (spec §6 NaN rule).
elapsed_ms: u128Total wall-clock time spent inside Runtime SCC tasks.
Trait Implementations§
Source§impl Clone for CycleTelemetry
impl Clone for CycleTelemetry
Source§fn clone(&self) -> CycleTelemetry
fn clone(&self) -> CycleTelemetry
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 CycleTelemetry
impl Debug for CycleTelemetry
Source§impl Default for CycleTelemetry
impl Default for CycleTelemetry
Source§fn default() -> CycleTelemetry
fn default() -> CycleTelemetry
Source§impl PartialEq for CycleTelemetry
impl PartialEq for CycleTelemetry
Source§fn eq(&self, other: &CycleTelemetry) -> bool
fn eq(&self, other: &CycleTelemetry) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for CycleTelemetry
Auto Trait Implementations§
impl Freeze for CycleTelemetry
impl RefUnwindSafe for CycleTelemetry
impl Send for CycleTelemetry
impl Sync for CycleTelemetry
impl Unpin for CycleTelemetry
impl UnsafeUnpin for CycleTelemetry
impl UnwindSafe for CycleTelemetry
Blanket Implementations§
impl<T> Allocation for T
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> 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