void ptmr_start(ptmr_t * tm) { #if (! defined(_WIN32)) || defined(GNUWINCE) || defined(__SYMBIAN32__) struct timeval e_start; /* Elapsed time */ #if (! defined(_HPUX_SOURCE)) && (! defined(__SYMBIAN32__)) struct rusage start; /* CPU time */ /* Unix but not HPUX */ getrusage(RUSAGE_SELF, &start); tm->start_cpu = make_sec(&start.ru_utime) + make_sec(&start.ru_stime); #endif /* Unix + HP */ gettimeofday(&e_start, 0); tm->start_elapsed = make_sec(&e_start); #elif defined(_WIN32_WP) tm->start_cpu = GetTickCount64() / 1000; tm->start_elapsed = GetTickCount64() / 1000; #elif defined(_WIN32_WCE) /* No GetProcessTimes() on WinCE. (Note CPU time will be bogus) */ tm->start_cpu = GetTickCount() / 1000; tm->start_elapsed = GetTickCount() / 1000; #else HANDLE pid; FILETIME t_create, t_exit, kst, ust; /* PC */ pid = GetCurrentProcess(); GetProcessTimes(pid, &t_create, &t_exit, &kst, &ust); tm->start_cpu = make_sec(&ust) + make_sec(&kst); tm->start_elapsed = (float64) clock() / CLOCKS_PER_SEC; #endif }
void ptmr_start (ptmr_t *tm) { #if (! WIN32) struct timeval e_start; /* Elapsed time */ #if (! _HPUX_SOURCE) struct rusage start; /* CPU time */ /* Unix but not HPUX */ getrusage (RUSAGE_SELF, &start); tm->start_cpu = make_sec (&start.ru_utime) + make_sec (&start.ru_stime); #endif /* Unix + HP */ gettimeofday (&e_start, 0); tm->start_elapsed = make_sec (&e_start); #else HANDLE pid; FILETIME t_create, t_exit, kst, ust; /* PC */ pid = GetCurrentProcess(); GetProcessTimes (pid, &t_create, &t_exit, &kst, &ust); tm->start_cpu = make_sec (&ust) + make_sec (&kst); tm->start_elapsed = (float64)clock() / CLOCKS_PER_SEC; #endif }
void ptmr_stop(ptmr_t * tm) { float64 dt_cpu, dt_elapsed; #if (! WIN32) || defined(GNUWINCE) struct timeval e_stop; /* Elapsed time */ #if (! _HPUX_SOURCE) struct rusage stop; /* CPU time */ /* Unix but not HPUX */ getrusage(RUSAGE_SELF, &stop); dt_cpu = make_sec(&stop.ru_utime) + make_sec(&stop.ru_stime) - tm->start_cpu; #else dt_cpu = 0.0; #endif /* Unix + HP */ gettimeofday(&e_stop, 0); dt_elapsed = (make_sec(&e_stop) - tm->start_elapsed); #elif defined(_WIN32_WCE) /* No GetProcessTimes() on WinCE. (Note CPU time will be bogus) */ dt_cpu = GetTickCount() / 1000 - tm->start_cpu; dt_elapsed = GetTickCount() / 1000 - tm->start_elapsed; #else HANDLE pid; FILETIME t_create, t_exit, kst, ust; /* PC */ pid = GetCurrentProcess(); GetProcessTimes(pid, &t_create, &t_exit, &kst, &ust); dt_cpu = make_sec(&ust) + make_sec(&kst) - tm->start_cpu; dt_elapsed = ((float64) clock() / CLOCKS_PER_SEC) - tm->start_elapsed; #endif tm->t_cpu += dt_cpu; tm->t_elapsed += dt_elapsed; tm->t_tot_cpu += dt_cpu; tm->t_tot_elapsed += dt_elapsed; }
void timing_stop (timing_t *tm) { float64 dt_cpu, dt_elapsed; #if (! WIN32) struct timeval e_stop; /* Elapsed time */ #if (! _HPUX_SOURCE) struct rusage stop; /* CPU time */ /* Unix but not HPUX */ getrusage (RUSAGE_SELF, &stop); dt_cpu = make_sec (&stop.ru_utime) + make_sec (&stop.ru_stime) - tm->start_cpu; #else dt_cpu = 0.0; #endif /* Unix + HP */ gettimeofday (&e_stop, 0); dt_elapsed = (make_sec (&e_stop) - tm->start_elapsed); #else HANDLE pid; FILETIME t_create, t_exit, kst, ust; /* PC */ pid = GetCurrentProcess(); GetProcessTimes (pid, &t_create, &t_exit, &kst, &ust); dt_cpu = make_sec (&ust) + make_sec (&kst) - tm->start_cpu; dt_elapsed = ((float64)clock() / CLOCKS_PER_SEC) - tm->start_elapsed; #endif tm->t_cpu += dt_cpu; tm->t_elapsed += dt_elapsed; tm->t_tot_cpu += dt_cpu; tm->t_tot_elapsed += dt_elapsed; }