aboutsummaryrefslogtreecommitdiff
path: root/core/time/perf.odin
blob: f370bedbfce23169684fac2a40c3b03ca92ec0d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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);
}