24 lines
656 B
OCaml
24 lines
656 B
OCaml
(** Program for testing magic-trace with operations that take a variable amount of time
|
|
measured using [mark_start]. *)
|
|
|
|
open! Core
|
|
|
|
let[@inline never] do_delay () = ignore (Core_unix.nanosleep 0.000_1 : float)
|
|
let min_dur = Magic_trace.Min_duration.of_ns 700_000
|
|
|
|
let[@inline never] variable_delay n =
|
|
Magic_trace.mark_start ();
|
|
let trailing_ones = Ocaml_intrinsics.Int.count_trailing_zeros (lnot n) in
|
|
let delays = trailing_ones + 1 in
|
|
for _ = 1 to delays do
|
|
do_delay ()
|
|
done;
|
|
if Magic_trace.Min_duration.over min_dur then Magic_trace.take_snapshot_with_arg delays
|
|
;;
|
|
|
|
let () =
|
|
for i = 1 to 10_000 do
|
|
variable_delay i
|
|
done
|
|
;;
|