From 17ae4212665f5f1286b7b3ac975ff24cdc756554 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Mon, 4 Mar 2013 14:58:23 +0100 Subject: [PATCH] small benchmarking of hashtable --- Makefile | 3 +++ tests/benchs.ml | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 tests/benchs.ml diff --git a/Makefile b/Makefile index f8be8361..13616d80 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,9 @@ all: tests: ocamlbuild $(OPTIONS) -package oUnit -I . tests/tests.native +bench: + ocamlbuild $(OPTIONS) -package bench -package unix -I . tests/benchs.native + clean: ocamlbuild -clean diff --git a/tests/benchs.ml b/tests/benchs.ml new file mode 100644 index 00000000..045ef6c3 --- /dev/null +++ b/tests/benchs.ml @@ -0,0 +1,48 @@ + +(** Benchmarking *) + +let phashtbl_add n = + let h = PHashtbl.create 50 in + for i = 0 to n do + PHashtbl.add h i i; + done; + h + +let hashtbl_add n = + let h = Hashtbl.create 50 in + for i = 0 to n do + Hashtbl.add h i i; + done; + h + +let _ = + let n = 50000 in + let res = Bench.bench_funs + ["phashtbl_add", (fun n -> ignore (phashtbl_add n)); + "hashtbl_add", (fun n -> ignore (hashtbl_add n));] + n + in + Bench.summarize 1. res + +let phashtbl_mem h = + fun n -> + for i = 0 to n do + ignore (PHashtbl.find h i); + done + +let hashtbl_mem h = + fun n -> + for i = 0 to n do + ignore (Hashtbl.find h i); + done + +let _ = + let n = 50000 in + let h = phashtbl_add n in + let h' = hashtbl_add n in + let res = Bench.bench_funs + ["phashtbl_mem", phashtbl_mem h; + "hashtbl_mem", hashtbl_mem h';] + n + in + Bench.summarize 1. res