00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __utils_h
00022 #define __utils_h
00023
00024 #ifdef WIN32
00025 #include <vigra/windows.h>
00026 #include <process.h>
00027 #else
00028
00029 #include <sys/time.h>
00030 #endif
00031
00032 #include <zthread/Condition.h>
00033 #include <zthread/FastMutex.h>
00034 #include <zthread/Guard.h>
00035
00036
00037
00038 #define TIMETRACE(TEXT, CODE) { utils::os_TIME t1,t2; utils::os_GetTime(&t1); CODE; \
00039 utils::os_GetTime(&t2); std::cout << TEXT << " took " << utils::os_TimeDiff(&t2,&t1)/1000.0 << " seconds." << std::endl; }
00040
00041
00042 namespace utils
00043 {
00044
00045 int getCPUCount();
00046
00047
00048
00049
00050 #ifdef WIN32
00051 typedef DWORD os_TIME;
00052 #else
00053 typedef struct timeval os_TIME;
00054 #endif
00055
00056 inline void os_GetTime(os_TIME* time)
00057 {
00058 #ifdef WIN32
00059 *time = GetTickCount();
00060 #else
00061 struct timezone tz;
00062 gettimeofday(time, &tz);
00063 #endif
00064 }
00065
00066 inline int os_TimeDiff(os_TIME* time1, os_TIME* time2)
00067 {
00068 #ifdef WIN32
00069 return *time1 - *time2;
00070 #else
00071 return (int)((double)time1->tv_sec*1000 + ((double)time1->tv_usec)*1e-3 -
00072 (double)time2->tv_sec*1000 - ((double)time2->tv_usec)*1e-3);
00073 #endif
00074 }
00075
00077 unsigned long long getTotalMemory();
00078
00079 }
00080
00081 #endif // __utils_h