package incr_dom

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file javascript_profiling.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
open Js_of_ocaml

class type performance = object
  method mark : Js.js_string Js.t -> unit Js.meth

  method measure :
    Js.js_string Js.t -> Js.js_string Js.t -> Js.js_string Js.t -> unit Js.meth

  method clearMarks : unit Js.meth
  method clearMeasures : unit Js.meth
end

let perf () : performance Js.t = Js.Unsafe.global##.performance
let mark name = (perf ())##mark (Js.string name)

let measure ~name ~start ~end_ =
  (perf ())##measure (Js.string name) (Js.string start) (Js.string end_)
;;

let record name ~f =
  let before_name = name ^ "_before" in
  let after_name = name ^ "_after" in
  let () = mark before_name in
  let res = f () in
  let () = mark after_name in
  measure ~name ~start:before_name ~end_:after_name;
  res
;;

let clear_marks () = (perf ())##clearMarks
let clear_measures () = (perf ())##clearMeasures

module Manual = struct
  let mark = mark
  let measure = measure
end
OCaml

Innovation. Community. Security.