mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-16 08:04:20 +00:00
[other] Minor optimization in times
This commit is contained in:
@@ -511,17 +511,20 @@ template convert(dur: Duration, unit: static[FixedTimeUnit]): int64 =
|
||||
# The correction is required due to how durations are normalized.
|
||||
# For example,` initDuration(nanoseconds = -1)` is stored as
|
||||
# { seconds = -1, nanoseconds = 999999999 }.
|
||||
let correction = dur.seconds < 0 and dur.nanosecond > 0
|
||||
when unit >= Seconds:
|
||||
convert(Seconds, unit, dur.seconds + ord(correction))
|
||||
when unit == Nanoseconds:
|
||||
dur.seconds * 1_000_000_000 + dur.nanosecond
|
||||
else:
|
||||
if correction:
|
||||
convert(Seconds, unit, dur.seconds + 1) -
|
||||
convert(Nanoseconds, unit,
|
||||
convert(Seconds, Nanoseconds, 1) - dur.nanosecond)
|
||||
let correction = dur.seconds < 0 and dur.nanosecond > 0
|
||||
when unit >= Seconds:
|
||||
convert(Seconds, unit, dur.seconds + ord(correction))
|
||||
else:
|
||||
convert(Seconds, unit, dur.seconds) +
|
||||
convert(Nanoseconds, unit, dur.nanosecond)
|
||||
if correction:
|
||||
convert(Seconds, unit, dur.seconds + 1) -
|
||||
convert(Nanoseconds, unit,
|
||||
convert(Seconds, Nanoseconds, 1) - dur.nanosecond)
|
||||
else:
|
||||
convert(Seconds, unit, dur.seconds) +
|
||||
convert(Nanoseconds, unit, dur.nanosecond)
|
||||
|
||||
proc inWeeks*(dur: Duration): int64 =
|
||||
## Convert the duration to the number of whole weeks.
|
||||
|
||||
Reference in New Issue
Block a user