pub struct ConvexTimingStatistics {
pub overall_alg: TimedTask,
pub extraction: TimedTask,
pub presolve: TimedTask,
pub solve: TimedTask,
pub solution_recovery: TimedTask,
pub linear_system_symbolic_factorization: TimedTask,
pub linear_system_factorization: TimedTask,
pub linear_system_back_solve: TimedTask,
}Expand description
Wall-clock phase accumulator for the dedicated convex (LP / QP / conic)
path, the counterpart of TimingStatistics for a solve that has no
callbacks, no Hessian updates and no filter line search to attribute time
to.
gh #767: print_timing_statistics=yes was accepted on the convex path,
reported (used) by print_user_options, and emitted nothing — so a tool
attributing cost by phase read 0% everywhere on a convex-routed instance,
which is indistinguishable from “already fast” rather than “not measured”.
A 9.8 s bearing_400 printed no timer at all.
The rows this reports are the phases the convex path actually has. Four of
them — OverallAlgorithm and the three LinearSystem* rows — carry the
same labels TimingStatistics::report prints, because they are the
same quantities; the rest are named for the convex driver’s own stages
rather than reusing NLP row names that would always read zero.
Fields§
§overall_alg: TimedTaskThe whole convex driver: extraction through solution recovery.
Reported regardless of the detailed-timer switch, matching
TimingStatistics::overall_alg.
extraction: TimedTaskReading the .nl model into the standard-form convex problem.
presolve: TimedTaskConvex presolve plus the matching postsolve lift.
solve: TimedTaskThe engine call itself (interior-point or active-set iterations).
solution_recovery: TimedTaskRecovering per-constraint duals and bound multipliers in the original model’s ordering.
linear_system_symbolic_factorization: TimedTask§linear_system_factorization: TimedTask§linear_system_back_solve: TimedTaskImplementations§
Source§impl ConvexTimingStatistics
impl ConvexTimingStatistics
pub fn new() -> Self
Sourcepub fn report(&self) -> String
pub fn report(&self) -> String
Format the per-phase report, in the row layout
TimingStatistics::report uses (label padded to 42 columns, wall
seconds right-aligned). Returns a multi-line string ending in a
trailing newline so callers can print! it directly.
Sourcepub fn set_detailed_enabled(&self, on: bool)
pub fn set_detailed_enabled(&self, on: bool)
Enable or disable the detailed per-phase timers, mirroring
TimingStatistics::set_detailed_enabled and therefore upstream
Ipopt’s timing_statistics gating: with the option off, every
start() / end() on these tasks is a no-op and the solve pays no
clock syscalls for them.
Self::overall_alg is deliberately left enabled, for the same
reason it is on the NLP path — upstream’s help text is explicit that
the overall algorithm time is unaffected by this option.