Timings

`sig
type file = string
type source_provenance =
File of Timings.file
| Pack of string
| Startup
| Toplevel
type compiler_pass =
All
| Parsing of Timings.file
| Parser of Timings.file
| Dash_pp of Timings.file
| Dash_ppx of Timings.file
| Typing of Timings.file
| Transl of Timings.file
| Generate of Timings.file
| Assemble of Timings.source_provenance
| Clambda of Timings.source_provenance
| Cmm of Timings.source_provenance
| Compile_phrases of Timings.source_provenance
| Selection of Timings.source_provenance
| Comballoc of Timings.source_provenance
| CSE of Timings.source_provenance
| Liveness of Timings.source_provenance
| Deadcode of Timings.source_provenance
| Spill of Timings.source_provenance
| Split of Timings.source_provenance
| Regalloc of Timings.source_provenance
| Linearize of Timings.source_provenance
| Scheduling of Timings.source_provenance
| Emit of Timings.source_provenance
| Flambda_pass of string * Timings.source_provenance
val reset : unit -> unit
val get : Timings.compiler_pass -> float option
val time_call : Timings.compiler_pass -> (unit -> 'a) -> 'a
val time : Timings.compiler_pass -> ('a -> 'b) -> 'a -> 'b
val accumulate_time : Timings.compiler_pass -> ('a -> 'b) -> 'a -> 'b
val print : Format.formatter -> unit
end`