let d = time Naive_tree.load_xml_file fd "parsing xml document" in
close_fd (); d
in
- let () = Gc.compact () in
let queries =
time
(fun l ->
Logger.msg `STATS "@[Automaton: @\n%a@]" Ata.print auto) auto_list;
end;
- let module Naive = Run.Make(Naive_tree) in
+ let module Naive = Run.Make(Naive_tree)(Naive_node_list) in
let result_list =
- let root = [ Naive_tree.root doc] in
+ let root = Naive_node_list.create () in
+ let () = Naive_node_list.add (Naive_tree.root doc) root in
let f, msg =
match !Options.parallel, !Options.compose with
true, true ->
let s = Naive.stats () in
Run.(
Logger.msg `STATS
- "@[tree size: %d@\ntraversals: %d@\ntransition fetch cache hit ratio: %f@\ntransition eval cache hit ratio: %f@]"
- s.tree_size s.run
+ "@[tree size: %d@\ntraversals: %d@\ntransition fetch cache hit ratio: %f@\ntransition eval cache hit ratio: %f@\nNumber of visited nodes per pass: %a@]"
+ s.tree_size s.pass
(float s.fetch_trans_cache_hit /. float s.fetch_trans_cache_access)
- (float s.eval_trans_cache_hit /. float s.eval_trans_cache_access));
+ (float s.eval_trans_cache_hit /. float s.eval_trans_cache_access)
+ (let i = ref 0 in
+ Pretty.print_list ~sep:"," (fun fmt n -> Format.fprintf fmt "%i: %i" !i n;incr i))
+ s.nodes_per_run);
time (fun () ->
let count = ref 1 in
List.iter (fun results ->
output_string output (string_of_int !count);
output_string output "\" >\n";
if !Options.count then begin
- output_string output (string_of_int (List.length results));
+ output_string output (string_of_int (Naive_node_list.length results));
output_char output '\n';
end else
- List.iter (fun n ->
+ Naive_node_list.iter (fun n ->
Naive_tree.print_xml output doc n;
output_char output '\n'
) results;