From 96c62d90480c8904ac3ce0efc57d9f7108298b03 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sat, 19 Sep 2015 15:13:58 +0200 Subject: [PATCH] benchmark list.map --- benchs/run_benchs.ml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/benchs/run_benchs.ml b/benchs/run_benchs.ml index 03e2ff7e..23fa0be3 100644 --- a/benchs/run_benchs.ml +++ b/benchs/run_benchs.ml @@ -16,6 +16,25 @@ let repeat = 3 let (%%) f g x = f (g x) module L = struct + (* MAP *) + + let f_ x = x+1 + + let bench_map ?(time=2) n = + let l = CCList.(1 -- n) in + let ral = CCRAL.of_list l in + let map_naive () = ignore (try List.map f_ l with Stack_overflow -> []) + and map_tailrec () = ignore (List.rev (List.rev_map f_ l)) + and ccmap () = ignore (CCList.map f_ l) + and ralmap () = ignore (CCRAL.map f_ ral) + in + B.throughputN time ~repeat + [ "List.map", map_naive, () + ; "List.rev_map o rev", map_tailrec, () + ; "CCList.map", ccmap, () + ; "CCRAL.map", ralmap, () + ] + (* FLAT MAP *) let f_ x = @@ -72,7 +91,13 @@ module L = struct let () = B.Tree.register ( "list" @>>> - [ "flat_map" @>> + [ "map" @>> + B.Tree.concat + [ app_int (bench_map ~time:2) 100 + ; app_int (bench_map ~time:2) 10_000 + ; app_int (bench_map ~time:4) 100_000 + ; app_int (bench_map ~time:4) 500_000 ] + ; "flat_map" @>> B.Tree.concat [ app_int (bench_flat_map ~time:2) 100 ; app_int (bench_flat_map ~time:2) 10_000