diff --git a/bench/dune b/bench/dune new file mode 100644 index 0000000..c6fec56 --- /dev/null +++ b/bench/dune @@ -0,0 +1,4 @@ + +(executable + (name trace1) + (libraries trace.core trace-tef)) diff --git a/bench/trace1.ml b/bench/trace1.ml new file mode 100644 index 0000000..f194a0d --- /dev/null +++ b/bench/trace1.ml @@ -0,0 +1,36 @@ +module Trace = Trace_core + +let ( let@ ) = ( @@ ) + +let work ~n () : unit = + for _i = 1 to n do + let@ _sp = + Trace.with_span ~__FILE__ ~__LINE__ "outer" ~data:(fun () -> + [ "i", `Int _i ]) + in + for _k = 1 to 10 do + let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "inner" in + () + done; + Thread.delay 1e-6 + done + +let main ~n ~j () : unit = + let domains = Array.init j (fun _ -> Domain.spawn (fun () -> work ~n ())) in + Array.iter Domain.join domains + +let () = + let@ () = Trace_tef.with_setup () in + + let n = ref 10_000 in + let j = ref 4 in + + let args = + [ + "-n", Arg.Set_int n, " number of iterations"; + "-j", Arg.Set_int j, " set number of workers"; + ] + |> Arg.align + in + Arg.parse args ignore "bench1"; + main ~n:!n ~j:!j () diff --git a/bench1.sh b/bench1.sh new file mode 100755 index 0000000..134b4a1 --- /dev/null +++ b/bench1.sh @@ -0,0 +1,3 @@ +#!/bin/sh +DUNE_OPTS="--profile=release --display=quiet" +exec dune exec $DUNE_OPTS bench/trace1.exe -- $@