00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00037 #ifndef NVWA_PCTIMER_H
00038 #define NVWA_PCTIMER_H
00039
00040 #if defined(_WIN32) || defined(__CYGWIN__)
00041
00042 #ifndef _WIN32
00043 #define _PCTIMER_NO_WIN32
00044 #endif
00045
00046 #ifndef WIN32_LEAN_AND_MEAN
00047 #define WIN32_LEAN_AND_MEAN
00048 #endif
00049 #include <windows.h>
00050
00051 #ifdef _PCTIMER_NO_WIN32
00052 #undef _PCTIMER_NO_WIN32
00053 #undef _WIN32
00054 #endif
00055
00056 #include "_nvwa.h"
00057
00058 NVWA_NAMESPACE_BEGIN
00059
00060 typedef double pctimer_t;
00061
00062 __inline pctimer_t pctimer(void)
00063 {
00064 static LARGE_INTEGER pcount, pcfreq;
00065 static int initflag;
00066
00067 if (!initflag)
00068 {
00069 QueryPerformanceFrequency(&pcfreq);
00070 initflag++;
00071 }
00072
00073 QueryPerformanceCounter(&pcount);
00074 return (double)pcount.QuadPart / (double)pcfreq.QuadPart;
00075 }
00076
00077 NVWA_NAMESPACE_END
00078
00079 #else
00080
00081 #include <sys/time.h>
00082
00083 NVWA_NAMESPACE_BEGIN
00084
00085 typedef double pctimer_t;
00086
00087 __inline pctimer_t pctimer(void)
00088 {
00089 struct timeval tv;
00090 gettimeofday(&tv, NULL);
00091 return (double)tv.tv_sec + (double)tv.tv_usec / 1000000;
00092 }
00093
00094 NVWA_NAMESPACE_END
00095
00096 #endif
00097
00098 #endif