Initial commit
[SXSI/xpathcomp.git] / benchmark / benchmark.mli
1 module Utils :
2   sig
3     type queryset = {
4       documents : (string * int) array;
5       queries : string array;
6     }
7     val make_queryset : string list -> string list -> queryset
8     type stats = {
9       mutable query : int;
10       mutable input_document : int;
11       mutable input_size : int;
12       mutable print_output : bool;
13       mutable input_parsing_time : float;
14       mutable query_compile_time : float;
15       mutable query_execution_time : float;
16       mutable serialization_time : float;
17       mutable memory_usage : int;
18     }
19     type stats_token =
20         Query of int
21       | Input_document of int
22       | Print_output of int
23       | Input_size of int
24       | Input_parsing_time of int
25       | Query_compile_time of int
26       | Query_execution_time of int
27       | Serialization_time of int
28       | Memory_usage of int
29     val print_stats : Format.formatter -> stats -> unit
30     val empty_stats : unit -> stats
31     type result = (string * string) * stats array list
32     val parse_result :
33       int -> in_channel -> stats -> (string * stats_token list) list -> unit
34     val build_xquery : string -> string -> string -> bool -> unit
35     val build_xslt : string -> string -> string -> bool -> unit
36   end
37 module type CONFIGURATION =
38   sig 
39     val path : string 
40     val result_basename : string 
41     val num_runs : int
42     val run_without_output : bool
43     val run_with_output : bool
44   end
45 module type ENGINE =
46   sig
47     val name : string
48     val description : string
49     val command : string
50     val mk_queryfile : bool -> string -> string -> string -> unit
51     val mk_cmdline : bool -> string -> string -> string -> string -> string list
52     val time_factor : float
53     val reference : bool
54     val parse_rules : (string * Utils.stats_token list) list
55   end
56 module type ENGINE_TESTER =
57   sig
58     module Conf : CONFIGURATION
59     val test_engine :
60       Utils.result list -> Utils.queryset -> Utils.result list
61   end
62 module INIT_TESTER : functor (C : CONFIGURATION) -> ENGINE_TESTER
63 module MK :
64   functor (E : ENGINE) -> functor (C : ENGINE_TESTER) -> ENGINE_TESTER