use std::sync::OnceLock;
use std::time::Instant;
static PERF_ENABLED: OnceLock<bool> = OnceLock::new();
pub(crate) fn enabled() -> bool {
*PERF_ENABLED.get_or_init(|| {
std::env::var("HALLEY_WL_PERF")
.ok()
.map(|raw| {
matches!(
raw.trim().to_ascii_lowercase().as_str(),
"1" | "true" | "yes" | "on"
)
})
.unwrap_or(false)
})
}
#[inline]
pub(crate) fn start() -> Option<Instant> {
enabled().then(Instant::now)
}
#[inline]
pub(crate) fn elapsed_ms(start: Instant) -> f32 {
start.elapsed().as_secs_f32() * 1000.0
}