Module Mtime.Span
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt
:DkSDKProject_DeclareAvailable(mtime CONSTRAINT "= 2.0.0+dune" FINDLIBS mtime mtime.clock mtime.clock.os mtime.top) DkSDKProject_MakeAvailable(mtime)
Add the
Findlib::mtime
library to any desired targets insrc/*/CMakeLists.txt
:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::mtime)
Click your IDE's
Build
button
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install mtime.2.0.0+dune
Edit your
dune-project
and add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (mtime (>= 2.0.0+dune))))
Then run:
dune build *.opam # if this fails, run: dune build
Edit your
<package>.opam
file and add:depends: [ # ... existing dependencies ... "mtime" {>= "2.0.0+dune"} ]
Then run:
opam install . --deps-only
FINALLY, add the mtime
library to any desired (library)
and/or (executable)
targets in your **/dune
files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
mtime))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
mtime))
Monotonic time spans
type
t`` =
span
See Mtime.span
.
val
zero :
span
zero
is a span of 0ns.
val
one :
span
one
is a span of 1ns.
val
max_span :
span
max_span
is 264-1ns.
Predicates
Arithmetic
abs_diff span span'
is the absolute difference between span
and
span'
.
Durations
n * dur
is n
times duration dur
.
Warning. Does not check for overflow or that n
is positive.
val
ns :
span
ns
is a nanosecond duration, 1·10-9s.
- since 1.4.0
val
us :
span
us
is a microsecond duration, 1·10-6s.
- since 1.4.0
val
ms :
span
ms
is a millisecond duration, 1·10-3s.
- since 1.4.0
val
s :
span
s
is a second duration, 1s.
- since 1.4.0
val
min :
span
min
is a minute duration, 60s.
- since 1.4.0
val
hour :
span
hour
is an hour duration, 3600s.
- since 1.4.0
val
day :
span
day
is a day duration, 86'400s.
- since 1.4.0
val
year :
span
year
is a Julian year duration (365.25 days), 31'557'600s.
Converting
val
to_uint64_ns :
span
->
int64
to_uint64_ns span
is span
as an unsigned 64-bit integer nanosecond
span.
val
of_uint64_ns : ``int64
->
span
of_uint64_ns u
is the unsigned 64-bit integer nanosecond span u
as
a span.
val
of_float_ns : ``float
->
span
option
of_float_ns f
is the positive floating point nanosecond span f
as a
span. This is None
if f
is negative, non finite, or larger or equal
than 253 (~104 days, the largest exact floating point
integer).
- since 2.0.0
val
to_float_ns :
span
->
float
to_float_ns s
is span
as a nanosecond floating point span. Note that
if s
is larger than 253 (~104 days, the largest exact
floating point integer) the result is an approximation and will not
round trip with of_float_ns
.
- since 2.0.0
Formatters
val
pp :
Stdlib.Format.formatter
->
span
->
unit
pp
formats spans according to their magnitude using SI prefixes on
seconds and accepted non-SI units. Years are counted in Julian years
(365.25 SI-accepted days) as
defined by
the International Astronomical Union.
Rounds towards positive infinity, i.e. over approximates, no duration is formatted shorter than it is.
The output is UTF-8 encoded, it uses U+03BC for µs
(10-6s
).
val
dump :
Stdlib.Format.formatter
->
t
->
unit
dump ppf span
formats an unspecified raw representation of span
on
ppf
.