sig
  type t = {
    wall : float;
    utime : float;
    stime : float;
    cutime : float;
    cstime : float;
    iters : Stdlib.Int64.t;
    minor_words : float;
    major_words : float;
    promoted_words : float;
  }
  type style = No_child | No_parent | All | Auto | Nil
  val make : Stdlib.Int64.t -> Benchmark.t
  val add : Benchmark.t -> Benchmark.t -> Benchmark.t
  val sub : Benchmark.t -> Benchmark.t -> Benchmark.t
  val to_string :
    ?style:Benchmark.style ->
    ?fwidth:int -> ?fdigits:int -> Benchmark.t -> string
  type samples = (string * Benchmark.t list) list
  val merge : Benchmark.samples -> Benchmark.samples -> Benchmark.samples
  val throughputN :
    ?min_count:Stdlib.Int64.t ->
    ?style:Benchmark.style ->
    ?fwidth:int ->
    ?fdigits:int ->
    ?repeat:int ->
    int -> (string * ('-> 'b) * 'a) list -> Benchmark.samples
  val throughput1 :
    ?min_count:Stdlib.Int64.t ->
    ?style:Benchmark.style ->
    ?fwidth:int ->
    ?fdigits:int ->
    ?repeat:int ->
    int -> ?name:string -> ('-> 'b) -> '-> Benchmark.samples
  val latencyN :
    ?min_cpu:float ->
    ?style:Benchmark.style ->
    ?fwidth:int ->
    ?fdigits:int ->
    ?repeat:int ->
    Stdlib.Int64.t -> (string * ('-> 'b) * 'a) list -> Benchmark.samples
  val latency1 :
    ?min_cpu:float ->
    ?style:Benchmark.style ->
    ?fwidth:int ->
    ?fdigits:int ->
    ?repeat:int ->
    Stdlib.Int64.t -> ?name:string -> ('-> 'b) -> '-> Benchmark.samples
  val tabulate :
    ?no_parent:bool -> ?confidence:float -> Benchmark.samples -> unit
  val print_gc : Benchmark.samples -> unit
  module Tree :
    sig
      type t
      val ( @> ) :
        string -> Benchmark.samples Stdlib.Lazy.t -> Benchmark.Tree.t
      val ( @>> ) : string -> Benchmark.Tree.t -> Benchmark.Tree.t
      val concat : Benchmark.Tree.t list -> Benchmark.Tree.t
      val ( @>>> ) : string -> Benchmark.Tree.t list -> Benchmark.Tree.t
      val with_int :
        (int -> Benchmark.Tree.t) -> int list -> Benchmark.Tree.t
      val print : Stdlib.Format.formatter -> Benchmark.Tree.t -> unit
      type path = string list
      val print_path : Stdlib.Format.formatter -> Benchmark.Tree.path -> unit
      val parse_path : string -> Benchmark.Tree.path
      val prefix :
        Benchmark.Tree.path -> Benchmark.Tree.t -> Benchmark.Tree.t
      val filter :
        Benchmark.Tree.path -> Benchmark.Tree.t -> Benchmark.Tree.t
      type arg_state
      val arg :
        unit ->
        Benchmark.Tree.arg_state *
        (Stdlib.Arg.key * Stdlib.Arg.spec * Stdlib.Arg.doc) list
      val run :
        ?with_gc:bool ->
        ?arg:Benchmark.Tree.arg_state ->
        ?paths:Benchmark.Tree.path list ->
        ?out:Stdlib.Format.formatter -> Benchmark.Tree.t -> unit
      val global : unit -> Benchmark.Tree.t
      val register : Benchmark.Tree.t -> unit
      val run_global :
        ?argv:string array -> ?out:Stdlib.Format.formatter -> unit -> unit
    end
end