]> git.eshelyaron.com Git - emacs.git/commitdiff
Decode current time directly to timespec
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 11 Jul 2024 13:03:50 +0000 (15:03 +0200)
committerEshel Yaron <me@eshelyaron.com>
Thu, 11 Jul 2024 14:39:52 +0000 (16:39 +0200)
* src/timefns.c (decode_time_components): If FASTER_TIMEFNS, when
returning the current time and the desired form is struct timespec
or time_t, return it directly rather than converting it to struct
ticks_hz and then to struct timespec.  This can avoid some mpz
calculations and/or bignums.

(cherry picked from commit e8b3c4cb58ce6e78b9bcfb9146f0ac6ece0d3055)

src/timefns.c

index 6949c83dbcb4093e750ca6dd06c3b656bc1e3f5d..ad39d1307cdf98b21eb8c2c1c23f0d837b9235b7 100644 (file)
@@ -884,8 +884,14 @@ decode_time_components (enum timeform form,
       eassume (false);
 
     case TIMEFORM_NIL:
-      ticks = timespec_ticks (current_timespec ());
-      hz = timespec_hz;
+      {
+       struct timespec now = current_timespec ();
+       if (FASTER_TIMEFNS
+           && (cform == CFORM_TIMESPEC || cform == CFORM_SECS_ONLY))
+         return (struct err_time) { .time = { .ts = now } };
+       ticks = timespec_ticks (now);
+       hz = timespec_hz;
+      }
       break;
 
     default: