X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=main.ml;h=9ce75baf6b12170eeaee015a875a5fe87dee2552;hb=a223af3254fb51c279cfbccdc18c59484fdca74e;hp=c9fc2c5a670a4463ba1a56eb3938606146926e3c;hpb=90c98aee27a7e4a85c45b5488e5505649f5a265c;p=SXSI%2Fxpathcomp.git diff --git a/main.ml b/main.ml index c9fc2c5..9ce75ba 100644 --- a/main.ml +++ b/main.ml @@ -79,7 +79,8 @@ let test_text doc = () type pointers -external build_pointers : Tree.t -> pointers = "caml_build_pointers" +type order = PREORDER | INORDER | POSTORDER +external build_pointers : Tree.t -> order -> pointers = "caml_build_pointers" external iter_pointers : pointers -> int = "caml_iter_pointers" external free_pointers : pointers -> unit = "caml_free_pointers" @@ -97,19 +98,48 @@ let main v query_string output = let _ = Printf.eprintf "Number of nodes %i\n%!" (Tree.size v) in (* let _ = test_text v in *) (* let _ = Tree.stats v in *) - let _ = Printf.eprintf "Timing first_child/next_sibling %!" in + let _ = Printf.eprintf "\nTiming first_child/next_sibling on sxsi %!" in let c = time (Tree.benchmark_fcns) v in let _ = Printf.eprintf "Traversed %i nodes\n" c in - let _ = Printf.eprintf "Timing last_child/prev_sibling %!" in + let _ = Printf.eprintf "\nTiming first_element/next_element on sxsi %!" in + let c = time (Tree.benchmark_fene) v in + let _ = Printf.eprintf "Traversed %i nodes\n" c in + let _ = Printf.eprintf "\nTiming last_child/prev_sibling on sxsi %!" in let _ = time (Tree.benchmark_lcps) v in - let _ = Printf.eprintf "Timing jump to a %!" in - let _ = time (Tree.benchmark_jump v) (Tag.tag "a") in - let _ = Printf.eprintf "Timing pointer allocation %!" in - let pointers = time (build_pointers) v in - let _ = Printf.eprintf "Timing pointer iteration %!" in + let tag = "keyword" in + let _ = Printf.eprintf "\nTiming jump to <%s> on sxsi %!" tag in + let _ = time (Tree.benchmark_jump v) (Tag.tag tag) in + (* let _ = Printf.eprintf "\nTiming pointer allocation (preorder) %!" in + let pointers = time (build_pointers v) PREORDER in + let _ = Printf.eprintf "\nTiming pointer iteration %!" in + let i = time (iter_pointers) pointers in + let _ = Printf.eprintf "Traversed %i pointers\nTiming pointer deallocation %!" i in + let _ = time (free_pointers) pointers in + + + let _ = Printf.eprintf "\nTiming pointer allocation (inorder) %!" in + let pointers = time (build_pointers v) INORDER in + let _ = Printf.eprintf "\nTiming pointer iteration %!" in let i = time (iter_pointers) pointers in - let _ = Printf.eprintf "Traversed %i pointers\n\nTiming pointer deallocation %!" i in + let _ = Printf.eprintf "Traversed %i pointers\nTiming pointer deallocation %!" i in let _ = time (free_pointers) pointers in + + let _ = Printf.eprintf "\nTiming pointer allocation (postorder) %!" in + let pointers = time (build_pointers v) POSTORDER in + let _ = Printf.eprintf "\nTiming pointer iteration %!" in + let i = time (iter_pointers) pointers in + let _ = Printf.eprintf "Traversed %i pointers\nTiming pointer deallocation %!" i in + let _ = time (free_pointers) pointers in *) + + let _ = Printf.eprintf "\nTiming iterative_traversal on sxsi %!" in + let c = time (Tree.benchmark_iter) v in + let _ = Printf.eprintf "Traversed %i nodes\n" c in + + + + + + (* let _ = Printf.eprintf "Timing //keyword :" in let r = time (test_loop v) (Tag.tag "keyword") in let _ = Printf.eprintf "Count is %i\n%!" r in