#[cfg(feature = "bench-counters")]
mod enabled {
use std::sync::atomic::{AtomicUsize, Ordering};
pub static INDEX_ENTRIES_BUILT: AtomicUsize = AtomicUsize::new(0);
pub static METADATA_READS: AtomicUsize = AtomicUsize::new(0);
pub static KEY_SCHEMA_PARSES: AtomicUsize = AtomicUsize::new(0);
pub static INDEX_DEFS_PARSES: AtomicUsize = AtomicUsize::new(0);
pub fn record(counter: &AtomicUsize) {
counter.fetch_add(1, Ordering::Relaxed);
}
pub fn reset() {
for counter in [
&INDEX_ENTRIES_BUILT,
&METADATA_READS,
&KEY_SCHEMA_PARSES,
&INDEX_DEFS_PARSES,
] {
counter.store(0, Ordering::Relaxed);
}
}
pub fn snapshot() -> Counts {
Counts {
index_entries_built: INDEX_ENTRIES_BUILT.load(Ordering::Relaxed),
metadata_reads: METADATA_READS.load(Ordering::Relaxed),
key_schema_parses: KEY_SCHEMA_PARSES.load(Ordering::Relaxed),
index_defs_parses: INDEX_DEFS_PARSES.load(Ordering::Relaxed),
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Counts {
pub index_entries_built: usize,
pub metadata_reads: usize,
pub key_schema_parses: usize,
pub index_defs_parses: usize,
}
}
#[cfg(not(feature = "bench-counters"))]
mod enabled {
pub struct Counter;
pub static INDEX_ENTRIES_BUILT: Counter = Counter;
pub static METADATA_READS: Counter = Counter;
pub static KEY_SCHEMA_PARSES: Counter = Counter;
pub static INDEX_DEFS_PARSES: Counter = Counter;
#[inline(always)]
pub fn record(_counter: &Counter) {}
}
pub use enabled::*;