update tests and benchs for new Fut API

This commit is contained in:
Simon Cruanes 2023-11-07 20:42:30 -05:00
parent 59ae1068fd
commit 62e8336d84
4 changed files with 10 additions and 15 deletions

View file

@ -12,7 +12,7 @@ let rec fib ~on x : int Fut.t =
if x <= !cutoff then if x <= !cutoff then
Fut.spawn ~on (fun () -> fib_direct x) Fut.spawn ~on (fun () -> fib_direct x)
else else
let open Fut.Infix_local in let open Fut.Infix in
let+ t1 = fib ~on (x - 1) and+ t2 = fib ~on (x - 2) in let+ t1 = fib ~on (x - 1) and+ t2 = fib ~on (x - 2) in
t1 + t2 t1 + t2

View file

@ -19,9 +19,7 @@ let run ~pool () =
0 l) 0 l)
in in
let futs = let futs = List.init n_tasks (fun _ -> Fut.spawn ~on:pool task |> Fut.join) in
List.init n_tasks (fun _ -> Fut.spawn ~on:pool task |> Fut.join ~on:pool)
in
let lens = List.map Fut.wait_block_exn futs in let lens = List.map Fut.wait_block_exn futs in
Printf.printf "awaited %d items (%d times)\n%!" (List.hd lens) n_tasks; Printf.printf "awaited %d items (%d times)\n%!" (List.hd lens) n_tasks;

View file

@ -3,7 +3,7 @@ open Moonpool
(* large pool, some of our tasks below are long lived *) (* large pool, some of our tasks below are long lived *)
let pool = Ws_pool.create ~num_threads:30 () let pool = Ws_pool.create ~num_threads:30 ()
open (val Fut.infix pool) open Fut.Infix
type event = type event =
| E_int of int | E_int of int

View file

@ -15,19 +15,16 @@ let rec mk_tree ~pool n : _ tree Fut.t =
let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "mk-tree" in let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "mk-tree" in
if n <= 1 then if n <= 1 then
Fut.return (Leaf 1) Fut.return (Leaf 1)
else else (
let open (val Fut.infix pool) in let l = Fut.spawn ~on:pool (fun () -> mk_tree ~pool (n - 1)) |> Fut.join
let l = and r = Fut.spawn ~on:pool (fun () -> mk_tree ~pool (n - 1)) |> Fut.join in
Fut.spawn ~on:pool (fun () -> mk_tree ~pool (n - 1)) |> Fut.join ~on:pool
and r =
Fut.spawn ~on:pool (fun () -> mk_tree ~pool (n - 1)) |> Fut.join ~on:pool
in
Fut.return @@ Node (l, r) Fut.return @@ Node (l, r)
)
let rec rev ~pool (t : 'a tree Fut.t) : 'a tree Fut.t = let rec rev ~pool (t : 'a tree Fut.t) : 'a tree Fut.t =
let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "rev" in let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "rev" in
let open (val Fut.infix pool) in let open Fut.Infix in
t >>= function t >>= function
| Leaf n -> Fut.return (Leaf n) | Leaf n -> Fut.return (Leaf n)
| Node (l, r) -> | Node (l, r) ->
@ -36,7 +33,7 @@ let rec rev ~pool (t : 'a tree Fut.t) : 'a tree Fut.t =
let rec sum ~pool (t : int tree Fut.t) : int Fut.t = let rec sum ~pool (t : int tree Fut.t) : int Fut.t =
let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "sum" in let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "sum" in
let open (val Fut.infix pool) in let open Fut.Infix in
t >>= function t >>= function
| Leaf n -> Fut.return n | Leaf n -> Fut.return n
| Node (l, r) -> | Node (l, r) ->
@ -45,7 +42,7 @@ let rec sum ~pool (t : int tree Fut.t) : int Fut.t =
let run ~pool n : (int * int) Fut.t = let run ~pool n : (int * int) Fut.t =
let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "run" in let@ _sp = Trace.with_span ~__FILE__ ~__LINE__ "run" in
let open (val Fut.infix pool) in let open Fut.Infix in
let t = Fut.return n >>= mk_tree ~pool in let t = Fut.return n >>= mk_tree ~pool in
let t' = rev ~pool t in let t' = rev ~pool t in
let sum_t = sum ~pool t in let sum_t = sum ~pool t in