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