[other] Minor optimization in times

This commit is contained in:
Oscar Nihlgård 2019-07-11 11:19:34 +02:00
commit 974362c98f

View file

@ -511,6 +511,9 @@ template convert(dur: Duration, unit: static[FixedTimeUnit]): int64 =
# The correction is required due to how durations are normalized. # The correction is required due to how durations are normalized.
# For example,` initDuration(nanoseconds = -1)` is stored as # For example,` initDuration(nanoseconds = -1)` is stored as
# { seconds = -1, nanoseconds = 999999999 }. # { seconds = -1, nanoseconds = 999999999 }.
when unit == Nanoseconds:
dur.seconds * 1_000_000_000 + dur.nanosecond
else:
let correction = dur.seconds < 0 and dur.nanosecond > 0 let correction = dur.seconds < 0 and dur.nanosecond > 0
when unit >= Seconds: when unit >= Seconds:
convert(Seconds, unit, dur.seconds + ord(correction)) convert(Seconds, unit, dur.seconds + ord(correction))