Files
Odin/core/time/perf.odin
2021-01-09 01:08:16 +00:00

40 lines
661 B
Odin

package time
Tick :: struct {
_nsec: i64, // relative amount
}
tick_now :: proc() -> Tick {
return _tick_now();
}
tick_diff :: proc(start, end: Tick) -> Duration {
d := end._nsec - start._nsec;
return Duration(d);
}
tick_lap_time :: proc(prev: ^Tick) -> Duration {
d: Duration;
t := tick_now();
if prev._nsec != 0 {
d = tick_diff(prev^, t);
}
prev^ = t;
return d;
}
tick_since :: proc(start: Tick) -> Duration {
return tick_diff(start, tick_now());
}
@(deferred_in_out=_tick_duration_end)
SCOPED_TICK_DURATION :: proc(d: ^Duration) -> Tick {
return tick_now();
}
_tick_duration_end :: proc(d: ^Duration, t: Tick) {
d^ = tick_since(t);
}