Packs Probe_id.t
and Time_ns.t
into a single int
.
The goal of Short_header
is to pack a Timer.record
into one word
(we want to write an integer number of words for alignment, and don't
want to pay for the size or time of writing a second word if we don't
have to).
A short header "contains" an Probe_id.t
and a Time_ns.t
.
A short header is a single word / integer; we have 63 bits to play with.
The 9 most significant bits contain Probe_id.to_int_exn
; the remaining 54 bits
contain a time, stored as a number of nanoseconds from some Profiler_epoch.t
(the epoch is written into the header; see Writer.write_epoch
).
2 ** 54 nanoseconds is approximately 208 days. The epoch is set to equal a little before now when OCaml starts up, so the header should continue to work for ~208 days after that.