// This class provides a device to measure the cpu-time. // Times are reported in seconds. // E. Mayoraz, August 95 #include "chrono.h" #include #include #ifndef CLK_TCK #define CLK_TCK _sys_conf(_SC_CLK_TCK) #endif chrono::chrono() { struct tms buf; times(&buf); starttime = laptime = (double)(buf.tms_utime)/CLK_TCK; } double chrono::time() const { struct tms buf; times(&buf); return (double)(buf.tms_utime)/CLK_TCK - starttime; } double chrono::lap() { struct tms buf; times(&buf); double thislap = (double)(buf.tms_utime)/CLK_TCK - laptime; laptime = (double)(buf.tms_utime)/CLK_TCK; return thislap; } ostream& operator << (ostream& s, const chrono& c) { struct tms buf; times(&buf); s << "--Lap time " << setw(10) << (double)(buf.tms_utime)/CLK_TCK - c.laptime << " Total time " << setw(10) << (double)(buf.tms_utime)/CLK_TCK - c.starttime << endl << flush; return s; } void chrono::restart() { struct tms buf; times(&buf); starttime = laptime = (double)(buf.tms_utime)/CLK_TCK; }