Gc.max_overhead = 1000000;
Gc.space_overhead = 100 }
let hash x = 131*x/(x-1+1)
+
let test_loop tree tag =
let t' = Tree.tagged_desc tree tag Tree.root in
let f = Hashtbl.create 4096
in
Hashtbl.add f (hash 101) g;
(Hashtbl.find f (hash 101)) t' Tree.root
+
+let test_full tree =
+ let root = Tree.root in
+ let fin = Tree.closing tree root in
+ let rec loop t = if t <= fin then
+ let tag = Tree.tag tree t in
+(* let _ = Tag.to_string tag in *)
+ if tag == Tag.pcdata then (ignore (Tree.get_text tree t));
+ let t = (Obj.magic ((Obj.magic t) + 1)) in
+ loop t
+ in
+ loop root
+
+
let test_loop2 tree tag =
let t' = Tree.tagged_desc tree tag Tree.root in
let f = Hashtbl.create 4096
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 *)
+ let _ = Printf.eprintf "Count is %i\n%!" r in
let _ = Printf.eprintf "Timing //keyword 2:" in
let r = time (test_loop2 v) (Tag.tag "keyword") in
- let _ = Printf.eprintf "Count is %i\n%!" r in
+ let _ = Printf.eprintf "Count is %i\n%!" r in
+ let _ = Printf.eprintf "Timing //node() :" in
+ let _ = time (test_full) v in *)
XPath.Ast.print Format.err_formatter query;
Format.fprintf Format.err_formatter "\n%!";
Printf.eprintf "Compiling query : ";
let _ = Printf.eprintf "Number of nodes in the result set : %i\n%!" r
in ()
else
- let result = time (top_down auto) v in
- let rcount = IdSet.length result in
+ let module GR = Ata.Test(struct let doc = v end) in
+ let result = time (GR.top_down auto) v in
+ let _ = Printf.eprintf "Counting results " in
+ let rcount = time (GR.Results.length) result in
Printf.eprintf "Number of nodes in the result set : %i\n" rcount;
Printf.eprintf "\n%!";
begin
| Some f ->
Printf.eprintf "Serializing results : ";
time( fun () ->
- let oc = open_out f in
- output_string oc "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
- IdSet.iter (fun t ->
- Tree.print_xml_fast oc v t;
- output_char oc '\n';
-
- ) result) ();
+ (*let oc = open_out f in *)
+ let oc = Unix.openfile f [ Unix.O_WRONLY;Unix.O_TRUNC;Unix.O_CREAT] 0o644 in
+ (*output_string oc "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";*)
+ GR.Results.iter (fun t ->
+ Tree.print_xml_fast3 v t oc;
+ (*output_char oc '\n'; *)
+ ) result) ();
end;
end;
let _ = Gc.set enabled_gc in