Files
wayvr/uidev/src/profiler.rs
2025-09-23 17:43:19 +02:00

44 lines
895 B
Rust

use crate::timestep::get_micros;
pub struct Profiler {
interval_us: u64,
last_measure_us: u64,
frametime_sum_us: u64,
measure_frames: u64,
time_start_us: u64,
}
impl Profiler {
pub fn new(interval_ms: u64) -> Self {
Self {
frametime_sum_us: 0,
interval_us: interval_ms * 1000,
last_measure_us: 0,
measure_frames: 0,
time_start_us: 0,
}
}
pub fn start(&mut self) {
self.time_start_us = get_micros();
}
pub fn end(&mut self) {
let cur_micros = get_micros();
let frametime = cur_micros - self.time_start_us;
self.measure_frames += 1;
self.frametime_sum_us += frametime;
if self.last_measure_us + self.interval_us < cur_micros {
log::debug!(
"avg frametime: {:.3}ms",
(self.frametime_sum_us / self.measure_frames) as f32 / 1000.0
);
self.last_measure_us = cur_micros;
self.frametime_sum_us = 0;
self.measure_frames = 0;
}
}
}