core.time.MonoTimeImpl.opBinary - multiple declarations
Subtracting two MonoTimes results in a
the amount of time which elapsed between them.
The primary way that programs should time how long something takes is to do
MonoTime before = MonoTime
.currTime; // do stuff MonoTime after = MonoTime .currTime; // How long it took. Duration timeElapsed = after - before;
or to use a wrapper (such as a stop watch type) which does that.
Duration is in hnsecs, whereas MonoTime is in system
ticks, it's usually the case that this assertion will fail
auto before = MonoTime
.currTime; // do stuff auto after = MonoTime .currTime; auto timeElapsed = after - before; assert(before + timeElapsed == after);
This is generally fine, and by its very nature, converting from
system ticks to any type of seconds (hnsecs, nsecs, etc.) will
introduce rounding errors, but if code needs to avoid any of the
small rounding errors introduced by conversion, then it needs to use
ticks property and keep all calculations in ticks
rather than using
Adding or subtracting a
Duration to/from a MonoTime results in
a MonoTime which is adjusted by that amount.
Jonathan M Davis and Kato Shoichi