|
Prev | Next | elapsed_seconds_c |
s = elapsed_seconds()
double equal to the
number of seconds since the first call to elapsed_seconds.
# if _MSC_VER
// ---------------------------------------------------------------------------
// Microsoft version of timer
# include <windows.h>
# include <cassert>
double elapsed_seconds(void)
{ static bool first_ = true;
static SYSTEMTIME st_;
double hour, minute, second, milli, diff;
SYSTEMTIME st;
if( first_ )
{ GetSystemTime(&st_);
first_ = false;
return 0.;
}
GetSystemTime(&st);
hour = (double) st.wHour - (double) st_.wHour;
minute = (double) st.wMinute - (double) st_.wMinute;
second = (double) st.wSecond - (double) st_.wSecond;
milli = (double) st.wMilliseconds - (double) st_.wMilliseconds;
diff = 1e-3*milli + second + 60.*minute + 3600.*hour;
if( diff < 0. )
diff += 3600.*24.;
assert( 0 <= diff && diff < 3600.*24. );
return diff;
}
# else
// ---------------------------------------------------------------------------
// Unix version of timer
# include <sys/time.h>
double elapsed_seconds(void)
{ double sec, usec, diff;
static bool first_ = true;
static struct timeval tv_first;
struct timeval tv;
if( first_ )
{ gettimeofday(&tv_first, NULL);
first_ = false;
return 0.;
}
gettimeofday(&tv, NULL);
assert( tv.tv_sec >= tv_first.tv_sec );
sec = (double)(tv.tv_sec - tv_first.tv_sec);
usec = (double)tv.tv_usec - (double)tv_first.tv_usec;
diff = sec + 1e-6*usec;
return diff;
}
# endif