// Copyright (C) 2003 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #ifndef DLIB_TIME_THIs_ #define DLIB_TIME_THIs_ #include "platform.h" #ifndef WIN32 #include <sys/times.h> #include <limits.h> #include <unistd.h> #include <iostream> // ---------------------------------------------------------------------------------------- #define TIME_THIS_TO(_tt_op,_tt_out) \ { \ clock_t _tt_start, _tt_end; \ tms _tt_timesbuf; \ _tt_start = times(&_tt_timesbuf); \ _tt_op; \ _tt_end = times(&_tt_timesbuf); \ long _tt_ticks = sysconf(_SC_CLK_TCK); \ if ((double)(_tt_end-_tt_start)/(double)_tt_ticks < 1) \ { \ _tt_out << "\ntime: " \ << (int)(1000*((double)(_tt_end-_tt_start)/(double)_tt_ticks)) << "ms\n"; \ } \ else \ { \ _tt_out << "\ntime: " \ << (double)(_tt_end-_tt_start)/(double)_tt_ticks << "sec\n"; \ } \ } \ #define TIME_THIS(_tt_op) TIME_THIS_TO(_tt_op,std::cout) // ---------------------------------------------------------------------------------------- #endif #ifdef WIN32 #include "windows_magic.h" #include <windows.h> // for GetTickCount() #include <iostream> // ---------------------------------------------------------------------------------------- #define TIME_THIS_TO(_tt_op,_tt_out) \ { \ unsigned long _tt_count = GetTickCount(); \ _tt_op; \ _tt_count = GetTickCount() - _tt_count; \ if (_tt_count < 1000) \ { \ _tt_out << "\ntime: " << _tt_count << "ms\n"; \ } \ else \ { \ _tt_out << "\ntime: " << static_cast<double>(_tt_count)/1000 << "sec\n"; \ } \ } \ #define TIME_THIS(_tt_op) TIME_THIS_TO(_tt_op,std::cout) // ---------------------------------------------------------------------------------------- #endif #endif // DLIB_TIME_THIs_