1- open Core_kernel
1+ open Core
22
33(* * Loosely modelled on https://chromium.googlesource.com/chromium/src/+/HEAD/tools/metrics/histograms/README.md *)
44
7171
7272module Exp_time_spans = Make (struct
7373 (* * Note: All time spans are represented in JSON as floating point millis *)
74- type t = Time .Span.t [@@ deriving bin_io_unversioned ]
74+ type t = Time_float .Span.t [@@ deriving bin_io_unversioned ]
7575
76- let to_yojson t = `Float (Time .Span. to_ms t)
76+ let to_yojson t = `Float (Time_float .Span. to_ms t)
7777
7878 let of_yojson t =
7979 let open Ppx_deriving_yojson_runtime in
8080 match t with
8181 | `Float ms ->
82- Result. Ok (Time .Span. of_ms ms)
82+ Result. Ok (Time_float .Span. of_ms ms)
8383 | _ ->
8484 Result. Error " Not a floating point milliseconds value"
8585
@@ -92,8 +92,8 @@ module Exp_time_spans = Make (struct
9292
9393 (* See http://mathworld.wolfram.com/LeastSquaresFittingLogarithmic.html *)
9494 let fit min max buckets =
95- let x0, y0 = (Time .Span. to_ms min, Float. zero) in
96- let x1, y1 = (Time .Span. to_ms max, Float. of_int buckets) in
95+ let x0, y0 = (Time_float .Span. to_ms min, Float. zero) in
96+ let x1, y1 = (Time_float .Span. to_ms max, Float. of_int buckets) in
9797 let n = 2.0 in
9898 let sum f = f (x0, y0) +. f (x1, y1) in
9999 let b =
@@ -126,8 +126,8 @@ module Exp_time_spans = Make (struct
126126 in
127127 (a, b)
128128
129- let create ?(min = Time .Span. of_sec 1. ) ?( max = Time.Span. of_min 10 . )
130- ?(buckets = 50 ) () =
129+ let create ?(min = Time_float .Span. of_sec 1. )
130+ ?(max = Time_float.Span. of_min 10. ) ?( buckets = 50 ) () =
131131 let a, b = fit min max buckets in
132132 { a; b; buckets }
133133 end
@@ -138,10 +138,10 @@ module Exp_time_spans = Make (struct
138138 let y = Float. of_int y in
139139 Float. exp ((y /. b) -. (a /. b))
140140 in
141- (Time .Span. of_ms (f_1 i), Time .Span. of_ms (f_1 (i + 1 )))
141+ (Time_float .Span. of_ms (f_1 i), Time_float .Span. of_ms (f_1 (i + 1 )))
142142
143143 let bucket ~params :{ Params. a; b; buckets } span =
144- let x = Time .Span. to_ms span in
144+ let x = Time_float .Span. to_ms span in
145145 if Float. ( < = ) x 0.0 then `Underflow
146146 else
147147 (* y = a + b log(x) *)
@@ -154,19 +154,21 @@ end)
154154let % test_unit " reports properly with overflows and underflows and table hits" =
155155 let open Exp_time_spans in
156156 let tbl =
157- create ~buckets: 50 ~min: (Time.Span. of_ms 1. ) ~max: (Time.Span. of_day 1. ) ()
157+ create ~buckets: 50 ~min: (Time_float.Span. of_ms 1. )
158+ ~max: (Time_float.Span. of_day 1. )
159+ ()
158160 in
159161 let r = report tbl in
160162 assert (r.Pretty. underflow = 0 ) ;
161163 assert (r.Pretty. overflow = 0 ) ;
162164 (* underflow *)
163- add tbl (Time .Span. of_us 100. ) ;
165+ add tbl (Time_float .Span. of_us 100. ) ;
164166 (* in the table *)
165- add tbl (Time .Span. of_ms 100. ) ;
166- add tbl (Time .Span. of_sec 100. ) ;
167- add tbl (Time .Span. of_day 0.5 ) ;
167+ add tbl (Time_float .Span. of_ms 100. ) ;
168+ add tbl (Time_float .Span. of_sec 100. ) ;
169+ add tbl (Time_float .Span. of_day 0.5 ) ;
168170 (* overflow *)
169- add tbl (Time .Span. of_day 2. ) ;
171+ add tbl (Time_float .Span. of_day 2. ) ;
170172 let r = report tbl in
171173 assert (List. sum ~f: Fn. id (module Int ) r.Pretty. values = 3 ) ;
172174 assert (r.Pretty. underflow = 1 ) ;
0 commit comments