AArseniy Alekseyevv0.15~preview.126.09+236
ffdb310d创建于 2022年1月27日历史提交
(** 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
;;