|
@@ -6,6 +6,7 @@ type timer = {
|
|
|
}
|
|
|
|
|
|
type timer_context = {
|
|
|
+ root_timer : timer;
|
|
|
mutable current : timer;
|
|
|
mutable measure_times : bool;
|
|
|
start_time : float;
|
|
@@ -19,12 +20,22 @@ let make id = {
|
|
|
calls = 0;
|
|
|
}
|
|
|
|
|
|
-let make_context root_timer = {
|
|
|
- current = root_timer;
|
|
|
- timer_lut = Hashtbl.create 0;
|
|
|
- measure_times = false;
|
|
|
- start_time = Extc.time();
|
|
|
-}
|
|
|
+let make_context root_timer =
|
|
|
+ let ctx = {
|
|
|
+ root_timer = root_timer;
|
|
|
+ current = root_timer;
|
|
|
+ timer_lut = Hashtbl.create 0;
|
|
|
+ measure_times = true;
|
|
|
+ start_time = Extc.time();
|
|
|
+ } in
|
|
|
+ Hashtbl.add ctx.timer_lut root_timer.id root_timer;
|
|
|
+ ctx
|
|
|
+
|
|
|
+let update_timer timer start =
|
|
|
+ let now = Extc.time () in
|
|
|
+ let dt = now -. start in
|
|
|
+ timer.total <- timer.total +. dt -. timer.pauses;
|
|
|
+ dt
|
|
|
|
|
|
let start_timer ctx id =
|
|
|
let start = Extc.time () in
|
|
@@ -39,9 +50,7 @@ let start_timer ctx id =
|
|
|
timer.calls <- timer.calls + 1;
|
|
|
ctx.current <- timer;
|
|
|
(fun () ->
|
|
|
- let now = Extc.time () in
|
|
|
- let dt = now -. start in
|
|
|
- timer.total <- timer.total +. dt -. timer.pauses;
|
|
|
+ let dt = update_timer timer start in
|
|
|
timer.pauses <- 0.;
|
|
|
old.pauses <- old.pauses +. dt;
|
|
|
ctx.current <- old
|
|
@@ -85,6 +94,7 @@ type timer_node = {
|
|
|
}
|
|
|
|
|
|
let build_times_tree ctx =
|
|
|
+ ignore(update_timer ctx.root_timer ctx.start_time);
|
|
|
let nodes = Hashtbl.create 0 in
|
|
|
let rec root = {
|
|
|
name = "";
|