X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Ftimer.hpp;h=18ed3e8ebaf5e02061f9c612ae762fed3d3fe09c;hb=585b2385384b32af964b5f2f999e70173b33a460;hp=28ec47416766c3eb917447d527a57ef1e0e47e97;hpb=85b7bde8fee1a43ace784690188e2f4c62f89825;p=awesomized%2Flibmemcached diff --git a/libtest/timer.hpp b/libtest/timer.hpp index 28ec4741..18ed3e8e 100644 --- a/libtest/timer.hpp +++ b/libtest/timer.hpp @@ -40,92 +40,28 @@ #include #include -#ifdef __MACH__ -# include -# include -#else -# include -#endif - namespace libtest { class Timer { public: - Timer() - { - _begin.tv_sec= 0; - _begin.tv_nsec= 0; - _end.tv_sec= 0; - _end.tv_nsec= 0; - } - - void reset() - { - _end.tv_sec= 0; - _end.tv_nsec= 0; - _time(_begin); - } - - void sample() - { - _time(_end); - } - - void offset(int64_t minutes_arg, int64_t seconds_arg, int64_t nanoseconds) - { - reset(); - _end= _begin; - _end.tv_sec+= (minutes_arg * 60) +seconds_arg; - _end.tv_nsec+= nanoseconds; - } - - int64_t minutes() - { - struct timespec result; - difference(result); - return int64_t(result.tv_sec / 60); - } - - uint64_t elapsed_milliseconds() const - { - struct timespec temp; - difference(temp); - - return temp.tv_sec*1000 +temp.tv_nsec/1000000; - } - - void difference(struct timespec& arg) const - { - if ((_end.tv_nsec -_begin.tv_nsec) < 0) - { - arg.tv_sec= _end.tv_sec -_begin.tv_sec -1; - arg.tv_nsec= 1000000000 +_end.tv_nsec -_begin.tv_nsec; - - } - else - { - arg.tv_sec= _end.tv_sec -_begin.tv_sec; - arg.tv_nsec= _end.tv_nsec -_begin.tv_nsec; - } - } + Timer(); + + void reset(); + + void sample(); + + void offset(int64_t minutes_arg, int64_t seconds_arg, int64_t nanoseconds); + + int64_t minutes(); + + uint64_t elapsed_milliseconds() const; + + void difference(struct timespec& arg) const; private: - void _time(struct timespec& ts) - { -#ifdef __MACH__ // OSX lacks clock_gettime() - clock_serv_t _clock_serv; - mach_timespec_t _mach_timespec; - host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &_clock_serv); - clock_get_time(_clock_serv, &_mach_timespec); - mach_port_deallocate(mach_task_self(), _clock_serv); - ts.tv_sec= _mach_timespec.tv_sec; - ts.tv_nsec= _mach_timespec.tv_nsec; -#else - clock_gettime(CLOCK_REALTIME, &ts); -#endif - } + void _time(struct timespec& ts); private: struct timespec _begin;