Copyright © 2006 Mikko Rasa, Mikkosoft Productions
Distributed under the LGPL
*/
+#ifdef WIN32
+#include <windows.h>
+#else
#include <sys/resource.h>
#include <sys/time.h>
+#endif
#include "timedelta.h"
#include "timestamp.h"
#include "units.h"
*/
TimeStamp now()
{
+#ifndef WIN32
timeval tv;
gettimeofday(&tv, 0);
return TimeStamp(tv.tv_sec*1000000LL+tv.tv_usec);
+#else
+ static int64_t epoch=0;
+ if(!epoch)
+ {
+ SYSTEMTIME st;
+ st.wYear=1970;
+ st.wMonth=1;
+ st.wDay=1;
+ st.wHour=0;
+ st.wMinute=0;
+ st.wSecond=0;
+ st.wMilliseconds=0;
+
+ FILETIME ft;
+ SystemTimeToFileTime(&st, &ft);
+ epoch=(ft.dwLowDateTime+(int64_t)ft.dwHighDateTime<<32)/10;
+ }
+
+ FILETIME ft;
+ GetSystemTimeAsFileTime(&ft);
+ return TimeStamp((ft.dwLowDateTime+(int64_t)ft.dwHighDateTime<<32)/10-epoch);
+#endif
}
/**
*/
TimeDelta get_cpu_time()
{
+#ifndef WIN32
rusage ru;
getrusage(RUSAGE_SELF, &ru);
return (ru.ru_utime.tv_sec+ru.ru_stime.tv_sec)*sec + (ru.ru_utime.tv_usec+ru.ru_stime.tv_usec)*usec;
+#else
+ //XXX Figure out the function to use on Win32
+ return TimeDelta();
+#endif
}
/**