sig
  type t = {
    wall : float;
    utime : float;
    stime : float;
    cutime : float;
    cstime : float;
    iters : Int64.t;
  }
  type style = No_child | No_parent | All | Auto | Nil
  val make : 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:Int64.t ->
    ?style:Benchmark.style ->
    ?fwidth:int ->
    ?fdigits:int ->
    ?repeat:int ->
    int -> (string * ('-> 'b) * 'a) list -> Benchmark.samples
  val throughput1 :
    ?min_count: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 ->
    Int64.t -> (string * ('-> 'b) * 'a) list -> Benchmark.samples
  val latency1 :
    ?min_cpu:float ->
    ?style:Benchmark.style ->
    ?fwidth:int ->
    ?fdigits:int ->
    ?repeat:int ->
    Int64.t -> ?name:string -> ('-> 'b) -> '-> Benchmark.samples
  val tabulate :
    ?no_parent:bool -> ?confidence:float -> Benchmark.samples -> unit
end