From 61378e59228fd01bd2785aa26d1ff175bf52791f Mon Sep 17 00:00:00 2001 From: Rahul Sinha <rahul.sinha@mpimet.mpg.de> Date: Fri, 27 Jun 2014 13:26:03 +0200 Subject: [PATCH] Bug #4966: Speed julianDeltaToTimeDelta() --- src/mtime_timedelta.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/mtime_timedelta.c b/src/mtime_timedelta.c index 2e1ac706..9ca23485 100644 --- a/src/mtime_timedelta.c +++ b/src/mtime_timedelta.c @@ -805,6 +805,16 @@ julianDeltaToTimeDelta(struct _juliandelta* jd, struct _datetime* base_dt, struc int64_t j = base_dt->date.year; /* Initialize to 0. */ td_return->year = 0; + + /* Fast-Fwd: >= 400 */ + while (days >= NO_OF_DAYS_IN_400_YEARS) + { + td_return->year = td_return->year + 400; + j = j + 400; + days = days - NO_OF_DAYS_IN_400_YEARS; + + }; + do { @@ -895,6 +905,16 @@ julianDeltaToTimeDelta(struct _juliandelta* jd, struct _datetime* base_dt, struc int64_t j = base_dt->date.year; /* Initialize. */ td_return->year = 0; + + /* Fast-Fwd: >= 400 */ + while (days >= NO_OF_DAYS_IN_400_YEARS) + { + td_return->year = td_return->year + 400; + j = j - 400; + days = days - NO_OF_DAYS_IN_400_YEARS; + + }; + do { /* Loop over and get the year by substracting 366/365 days depending -- GitLab