#include #include #include /* this is the real time watch */ double real_t_start, real_t_end; struct timeval tp; struct timezone tz; void startwatch_ () { gettimeofday(&tp, &tz); real_t_start = (double) (tp.tv_sec + tp.tv_usec*1.e-6); } void checkwatch_ (double *time_passed_in_seconds) { gettimeofday(&tp, &tz); real_t_end = (double) (tp.tv_sec + tp.tv_usec*1.e-6); (*time_passed_in_seconds) = real_t_end - real_t_start; } /* this is the user time watch */ extern int getrussage(int,struct rusage*); struct rusage rus; /* starting user time */ struct rusage rue; /* ending user time */ void user_time_startwatch_ () { getrusage(RUSAGE_SELF,&rus); } void user_time_checkwatch_ (double *time_passed_in_seconds) { struct timeval utime; getrusage(RUSAGE_SELF,&rue); utime.tv_sec = rue.ru_utime.tv_sec - rus.ru_utime.tv_sec ; if ( rue.ru_utime.tv_usec < rus.ru_utime.tv_usec ) { utime.tv_sec--; utime.tv_usec = 1000000l - rus.ru_utime.tv_usec + rue.ru_utime.tv_usec; } else utime.tv_usec = rue.ru_utime.tv_usec - rus.ru_utime.tv_usec ; (*time_passed_in_seconds) = (double)utime.tv_sec + (double)utime.tv_usec*1e-6; return; }