19 #pragma warning(disable : 4786) 
   22 #if defined(__MACH__) || defined(__FreeBSD__) 
   25 #if !defined(__MSVCRT__) 
   26 #include <sys/resource.h> 
   34 #if 0 // change this to 1 if want to use the win32 API 
   41 #define TWO_TO_THE_THIRTYTWO 4294967296.0 
   42 #define DELTA_EPOCH_IN_SECS 11644473600.0 
   47   GetSystemTimeAsFileTime(&ft);
 
   48   double t = ft.dwHighDateTime * TWO_TO_THE_THIRTYTWO + ft.dwLowDateTime;
 
   49   t = t/10000000.0 - DELTA_EPOCH_IN_SECS;
 
   53 #include <sys/types.h> 
   54 #include <sys/timeb.h> 
   57   struct _timeb timebuffer;
 
   58 #pragma warning(disable : 4996) 
   60 #pragma warning(default : 4996) 
   61   return timebuffer.time + timebuffer.millitm / 1000.0;
 
   72   gettimeofday(&tv, NULL);
 
   73   return static_cast< double >(tv.tv_sec) + static_cast< int >(tv.tv_usec) / 1000000.0;
 
   89   static const double firstCall = callType > 0 ? callType : callTime;
 
   90   return callType < 0 ? firstCall : callTime - firstCall;
 
  103 #define TWO_TO_THE_THIRTYTWO 4294967296.0 
  108 #ifdef COIN_DOING_DIFFS 
  113 #if defined(_MSC_VER) || defined(__MSVCRT__) 
  119   GetProcessTimes(GetCurrentProcess(), &creation, &exit, &kernel, &user);
 
  120   double t = user.dwHighDateTime * TWO_TO_THE_THIRTYTWO + user.dwLowDateTime;
 
  121   return t / 10000000.0;
 
  123   unsigned int ticksnow; 
 
  124   ticksnow = (
unsigned int)clock();
 
  125   cpu_temp = (double)((
double)ticksnow / CLOCKS_PER_SEC);
 
  131   usage.ru_utime.tv_sec = 0;
 
  132   usage.ru_utime.tv_usec = 0;
 
  134   getrusage(RUSAGE_SELF, &usage);
 
  135   cpu_temp = 
static_cast< double >(usage.ru_utime.tv_sec);
 
  136   cpu_temp += 1.0e-6 * (
static_cast< double >(usage.ru_utime.tv_usec));
 
  146 #if defined(_MSC_VER) || defined(__MSVCRT__) 
  151   usage.ru_utime.tv_sec = 0;
 
  152   usage.ru_utime.tv_usec = 0;
 
  154   getrusage(RUSAGE_SELF, &usage);
 
  155   sys_temp = 
static_cast< double >(usage.ru_stime.tv_sec);
 
  156   sys_temp += 1.0e-6 * (
static_cast< double >(usage.ru_stime.tv_usec));
 
  166 #if defined(_MSC_VER) || defined(__MSVCRT__) 
  171   usage.ru_utime.tv_sec = 0;
 
  172   usage.ru_utime.tv_usec = 0;
 
  174   getrusage(RUSAGE_CHILDREN, &usage);
 
  175   cpu_temp = 
static_cast< double >(usage.ru_utime.tv_sec);
 
  176   cpu_temp += 1.0e-6 * (
static_cast< double >(usage.ru_utime.tv_usec));
 
  206 #ifdef COIN_COMPILE_WITH_TRACING 
  207   std::fstream *stream;
 
  212 #ifdef COIN_COMPILE_WITH_TRACING 
  213   inline bool evaluate(
bool b_tmp)
 const 
  218         (*stream) << i_tmp << 
"\n";
 
  224   inline double evaluate(
double d_tmp)
 const 
  228         (*stream) << d_tmp << 
"\n";
 
  251 #ifdef COIN_COMPILE_WITH_TRACING
 
  263 #ifdef COIN_COMPILE_WITH_TRACING
 
  270 #ifdef COIN_COMPILE_WITH_TRACING 
  278     , write_stream(write)
 
  284   CoinTimer(
double lim, std::fstream *s, 
bool w)
 
bool isExpired() const 
Return whether the originally specified time limit has passed since the timer was started...
 
void restart()
Restart the timer (keeping the same time limit) 
 
double evaluate(const double d_tmp) const 
 
static double CoinCpuTime()
 
This class implements a timer that also implements a tracing functionality. 
 
static double CoinCpuTimeJustChildren()
 
bool evaluate(const bool b_tmp) const 
 
double CoinGetTimeOfDay()
 
CoinTimer(double lim)
Create a timer with the given time limit and with no tracing. 
 
void reset()
An alternate name for restart() 
 
double timeLeft() const 
Return how much time is left on the timer. 
 
double CoinWallclockTime(double callType=0)
Query the elapsed wallclock time since the first call to this function. 
 
double start
When the timer was initialized/reset/restarted. 
 
double timeElapsed() const 
Return how much time has elapsed. 
 
void reset(double lim)
Reset (and restart) the timer and change its time limit. 
 
bool isPastPercent(double pct) const 
Return whether the given percentage of the time limit has elapsed since the timer was started...
 
bool isPast(double lim) const 
Return whether the given amount of time has elapsed since the timer was started. 
 
CoinTimer()
Default constructor creates a timer with no time limit and no tracing. 
 
static double CoinSysTime()