From a3e4ab5cc92ab6e8ad4e988936422244f6756243 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 26 Jan 2016 01:33:38 +0100 Subject: [PATCH] add benchs for `CCPool` --- benchs/run_benchs.ml | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/benchs/run_benchs.ml b/benchs/run_benchs.ml index dea99e05..596433ae 100644 --- a/benchs/run_benchs.ml +++ b/benchs/run_benchs.ml @@ -1009,6 +1009,33 @@ module Thread = struct ; "naive", make naive, () ] + let fib_pool_ ~size n = + let module P = CCPool.Make(struct let max_size = size end) in + let open P.Fut.Infix in + let rec fib n = + if n<=1 then P.Fut.return 1 + else + let f1 = fib (n-1) + and f2 = fib (n-2) in + P.Fut.return (+) <*> f1 <*> f2 + in + P.Fut.get (fib n) + + let fib_manual n = + let rec fib n = + if n<= 1 then 1 + else fib (n-1) + fib (n-2) + in + fib n + + (* pool of size [size] *) + let bench_pool ~size n = + assert (fib_manual n = fib_pool_ ~size n); + B.throughputN 3 ~repeat + [ "sequential", fib_manual, n + ; "pool", fib_pool_ ~size, n + ] + let () = B.Tree.register ( let take_push = CCList.map (fun (size,senders,receivers) -> @@ -1028,7 +1055,9 @@ module Thread = struct "thread" @>>> ( take_push @ - [] + [ "fib_size5" @>> app_ints (bench_pool ~size:5) [10; 15; 30; 35] + ; "fib_size15" @>> app_ints (bench_pool ~size:15) [10; 15; 30; 35] + ] ) ) end