pub struct SearchStats {Show 16 fields
pub node0_entries: u64,
pub exit_tt_early: u64,
pub exit_trivial: u64,
pub exit_leaf: u64,
pub exit_quick: u64,
pub exit_later: u64,
pub exit_tt_late: u64,
pub reached_moveloop0: u64,
pub tt_lookups: u64,
pub tt_hits: u64,
pub tt_stores: u64,
pub cutoff_nodes: u64,
pub allnode_nodes: u64,
pub cutoff_first: u64,
pub cutoff_index_sum: u64,
pub cutoff_hist: [u64; 8],
}Expand description
Per-search instrumentation counters. All zero unless the crate is
built with --features profiling. Two questions drive the layout —
the same two that govern double-dummy speed:
- TT hit rate — how often does a transposition-table probe prune
an entire subtree? (
tt_hits / tt_lookups) - Move ordering — when a node beta-cuts, how early in the move list does the cutoff fire? Perfect ordering cuts on move 1.
The node-0 funnel additionally attributes why lead nodes return without entering the move loop (TT, trivial bounds, quick/later tricks, leaf evaluation).
Fields§
§node0_entries: u64Times Engine::ab_search_0 was entered.
exit_tt_early: u64Returned via the depth >= 20 TT probe.
exit_trivial: u64Returned via the trivial tricks_max bound checks.
exit_leaf: u64Returned at the depth == 0 leaf evaluation.
exit_quick: u64Returned because quick_tricks was decisive.
exit_later: u64Returned because later_tricks_* was decisive.
exit_tt_late: u64Returned via the depth < 20 TT probe.
reached_moveloop0: u64Reached the move-generation + search loop.
tt_lookups: u64Total tt_lookup calls.
tt_hits: u64tt_lookup calls that returned a usable bound.
tt_stores: u64tt.add stores from node 0.
cutoff_nodes: u64Nodes whose move loop produced a beta/alpha cutoff.
allnode_nodes: u64Nodes whose move loop ran to exhaustion without a cutoff.
cutoff_first: u64Cutoffs that fired on the very first move tried.
cutoff_index_sum: u64Sum of 1-based cutoff move indices (for the mean).
cutoff_hist: [u64; 8]Histogram of 1-based cutoff index; the last bucket is “8+”.
Trait Implementations§
Source§impl Clone for SearchStats
impl Clone for SearchStats
Source§fn clone(&self) -> SearchStats
fn clone(&self) -> SearchStats
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 SearchStats
impl Debug for SearchStats
Source§impl Default for SearchStats
impl Default for SearchStats
Source§fn default() -> SearchStats
fn default() -> SearchStats
impl Copy for SearchStats
Auto Trait Implementations§
impl Freeze for SearchStats
impl RefUnwindSafe for SearchStats
impl Send for SearchStats
impl Sync for SearchStats
impl Unpin for SearchStats
impl UnsafeUnpin for SearchStats
impl UnwindSafe for SearchStats
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
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