// timer.cpp #include "stdafx.h" #include #include "timer.h" Timer::Timer () { label = "Process Timer"; reset(); } Timer::Timer (const std::string &label) { Timer::label = label; reset(); } Timer::~Timer() { } void Timer::reset(void) { #ifdef WIN32 tps = CLOCKS_PER_SEC; #else tps = sysconf ( _SC_CLK_TCK ); #endif end_time = 0; usertime = 0; systemtime = 0; elapsedtime = 0; waittime = 0; } void Timer::start(void) { #ifdef WIN32 start_time = clock(); #else start_time = times(&(start_cpu_time)); #endif } void Timer::show(void) { #ifdef WIN32 std::cout << " " << label << "\n" << " -------------------------------\n" << " Elapsed Time : " << elapsedtime << "s" << std::endl; #else std::cout << " " << label << "\n" << " -------------------------------\n" << " User CPU Time : " << usertime << " s\n" << " System CPU Time: " << systemtime << " s\n" << " Wait Time : " << waittime << " s\n" << " -------------------------------\n" << " Elapsed Time : " << elapsedtime << " s\n" << std::endl; #endif } void Timer::stop(void) { #ifdef WIN32 end_time = clock(); #else end_time = times(&end_cpu_time); #endif elapsedtime = ((double)(end_time - start_time )/(double)tps ); if (elapsedtime < 0.001) { elapsedtime = 0.001; } #ifndef WIN32 usertime = ((double)(end_cpu_time.tms_utime - start_cpu_time.tms_utime)/(double)tps); systemtime = ((double)(end_cpu_time.tms_stime - start_cpu_time.tms_stime)/(double)tps); waittime = (elapsedtime - (usertime + systemtime)); #endif if ( waittime < 0.00 ) { waittime = 0.00; } } double Timer::get_user_time(void) { return usertime; } double Timer::get_system_time(void) { return systemtime; } double Timer::get_wait_time(void) { return waittime; } double Timer::get_non_wait_time(void) { return usertime + systemtime; } double Timer::get_elapsed_time(void) { return elapsedtime; } #ifdef TIMER_TEST int main(void) { Timer t1("Example Process Timing"); t1.begin(); // begin some processing ... for (int i=0; i<1000; i++) { std::string name = getenv("PATH"); std::cout << name << std::endl; } // end some processing ... t1.end(); t1.show(); return 0; } #endif // eof timer.cpp