58 #if !defined(CLOCKS_PER_SEC) 59 #define CLOCKS_PER_SEC 100 96 (void) memset(timer_info,0,
sizeof(*timer_info));
165 assert(timer_info != (
TimerInfo *) NULL);
193 #if defined(MAGICKCORE_HAVE_CLOCK_GETTIME) 194 #define NANOSECONDS_PER_SECOND 1000000000.0 195 #if defined(CLOCK_HIGHRES) 196 # define CLOCK_ID CLOCK_HIGHRES 197 #elif defined(CLOCK_MONOTONIC_RAW) 198 # define CLOCK_ID CLOCK_MONOTONIC_RAW 199 #elif defined(CLOCK_MONOTONIC_PRECISE) 200 # define CLOCK_ID CLOCK_MONOTONIC_PRECISE 201 #elif defined(CLOCK_MONOTONIC) 202 # define CLOCK_ID CLOCK_MONOTONIC 204 # define CLOCK_ID CLOCK_REALTIME 210 (void) clock_gettime(CLOCK_ID,&timer);
211 return((
double) timer.tv_sec+timer.tv_nsec/NANOSECONDS_PER_SECOND);
212 #elif defined(MAGICKCORE_HAVE_TIMES) && defined(MAGICKCORE_HAVE_SYSCONF) 216 return((
double) times(&timer)/sysconf(_SC_CLK_TCK));
218 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 219 return(NTElapsedTime());
264 assert(timestamp != (
char *) NULL);
267 "%04d-%02d-%02dT%02d:%02d:%02d%+03d:00",utc_time.tm_year+1900,
268 utc_time.tm_mon+1,utc_time.tm_mday,utc_time.tm_hour,utc_time.tm_min,
329 *source_date_epoch = (
const char *) NULL;
336 source_date_epoch=getenv(
"SOURCE_DATE_EPOCH");
339 if (source_date_epoch != (
const char *) NULL)
345 if ((epoch > 0) && (epoch <= time((time_t *) NULL)))
348 return(time((time_t *) NULL));
379 (void) memset(time_info,0,
sizeof(*time_info));
556 #if defined(MAGICKCORE_HAVE_TIMES) && defined(MAGICKCORE_HAVE_SYSCONF) 560 (void) times(&timer);
561 return((
double) (timer.tms_utime+timer.tms_stime)/sysconf(_SC_CLK_TCK));
563 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 564 return(NTUserTime());
MagickExport double GetUserTime(TimerInfo *time_info)
static double ElapsedTime(void)
MagickExport TimerInfo * DestroyTimerInfo(TimerInfo *timer_info)
MagickExport TimerInfo * AcquireTimerInfo(void)
static double StringToDouble(const char *magick_restrict string, char **magick_restrict sentinal)
MagickExport ssize_t FormatLocaleString(char *magick_restrict string, const size_t length, const char *magick_restrict format,...)
MagickExport void StartTimer(TimerInfo *time_info, const MagickBooleanType reset)
static double UserTime(void)
#define MagickCoreSignature
MagickExport void * AcquireCriticalMemory(const size_t size)
static void GetMagickUTCtime(const time_t *timep, struct tm *result)
MagickExport time_t GetMagickTime(void)
MagickExport void ResetTimer(TimerInfo *time_info)
MagickExport void GetTimerInfo(TimerInfo *time_info)
MagickExport double GetElapsedTime(TimerInfo *time_info)
MagickExport void * RelinquishMagickMemory(void *memory)
static void StopTimer(TimerInfo *)
MagickExport ssize_t FormatMagickTime(const time_t time, const size_t length, char *timestamp)
MagickExport MagickBooleanType ContinueTimer(TimerInfo *time_info)