Skip to content

Commit

Permalink
Bench
Browse files Browse the repository at this point in the history
  • Loading branch information
polytypic committed Jan 14, 2024
1 parent 888c33c commit 46c2cae
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
58 changes: 58 additions & 0 deletions bench/bench_cue.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
open Multicore_bench
module Queue = Saturn_lockfree.Cue

let run_one ~budgetf ?(n_adders = 2) ?(n_takers = 2)
?(n_msgs = 50 * Util.iter_factor) () =
let n_domains = n_adders + n_takers in

let t = Queue.create () in

let n_msgs_to_take = Atomic.make 0 |> Multicore_magic.copy_as_padded in
let n_msgs_to_add = Atomic.make 0 |> Multicore_magic.copy_as_padded in

let init _ =
Atomic.set n_msgs_to_take n_msgs;
Atomic.set n_msgs_to_add n_msgs
in
let work i () =
if i < n_adders then
let rec work () =
let n = Util.alloc n_msgs_to_add in
if 0 < n then
let rec loop n =
if 0 < n then loop (n - Bool.to_int (Queue.try_push t i))
else work ()
in
loop n
in
work ()
else
let rec work () =
let n = Util.alloc n_msgs_to_take in
if n <> 0 then
let rec loop n =
if 0 < n then
loop (n - Bool.to_int (Option.is_some (Queue.pop_opt t)))
else work ()
in
loop n
in
work ()
in

let config =
let format role n =
Printf.sprintf "%d %s%s" n role (if n = 1 then "" else "s")
in
Printf.sprintf "%s, %s"
(format "nb adder" n_adders)
(format "nb taker" n_takers)
in

Times.record ~budgetf ~n_domains ~init ~work ()
|> Util.thruput_metrics ~n:n_msgs ~singular:"message" ~config

let run_suite ~budgetf =
Util.cross [ 1; 2 ] [ 1; 2 ]
|> List.concat_map @@ fun (n_adders, n_takers) ->
run_one ~budgetf ~n_adders ~n_takers ()
1 change: 1 addition & 0 deletions bench/main.ml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
let benchmarks =
[
("Saturn Relaxed_queue", Bench_relaxed_queue.run_suite);
("Saturn_lockfree Cue", Bench_cue.run_suite);
("Saturn_lockfree Queue", Bench_queue.run_suite);
("Saturn_lockfree Single_prod_single_cons_queue", Bench_spsc_queue.run_suite);
("Saturn_lockfree Size", Bench_size.run_suite);
Expand Down

0 comments on commit 46c2cae

Please sign in to comment.