detailed time in echo example

This commit is contained in:
craff 2021-12-15 18:18:52 -10:00
parent 4770e3e729
commit 672e33c827

View file

@ -7,18 +7,29 @@ let now_ = Unix.gettimeofday
let middleware_stat () : S.Middleware.t * (unit -> string) = let middleware_stat () : S.Middleware.t * (unit -> string) =
let n_req = ref 0 in let n_req = ref 0 in
let total_time_ = ref 0. in let total_time_ = ref 0. in
let parse_time_ = ref 0. in
let build_time_ = ref 0. in
let write_time_ = ref 0. in
let m h req ~resp = let m h req ~resp =
incr n_req; incr n_req;
let t1 = S.Request.time req in let t1 = S.Request.time req in
let t2 = now_ () in
h req ~resp:(fun response -> h req ~resp:(fun response ->
let t3 = now_ () in
resp response; resp response;
let t2 = now_ () in let t4 = now_ () in
total_time_ := !total_time_ +. (t2 -. t1); total_time_ := !total_time_ +. (t4 -. t1);
parse_time_ := !parse_time_ +. (t2 -. t1);
build_time_ := !build_time_ +. (t3 -. t2);
write_time_ := !write_time_ +. (t4 -. t3);
) )
and get_stat () = and get_stat () =
Printf.sprintf "%d requests (average response time: %.3fms)" Printf.sprintf "%d requests (average response time: %.3fms = %.3fms + %.3fms + %.3fms)"
!n_req (!total_time_ /. float !n_req *. 1e3) !n_req (!total_time_ /. float !n_req *. 1e3)
(!parse_time_ /. float !n_req *. 1e3)
(!build_time_ /. float !n_req *. 1e3)
(!write_time_ /. float !n_req *. 1e3)
in in
m, get_stat m, get_stat