1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add varying levels of precision to TimeTaker

This commit is contained in:
kwolekr 2013-03-29 16:51:57 -04:00
parent 5e7e0347cd
commit df49b93877
5 changed files with 108 additions and 17 deletions

View file

@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "irrlichttypes.h" // u32
#include "debug.h"
#include "constants.h"
#include "gettime.h"
#ifdef _MSC_VER
#define SWPRINTF_CHARSTRING L"%S"
@ -153,18 +154,65 @@ bool threadSetPriority(threadid_t tid, int prio);
*/
#ifdef _WIN32 // Windows
#include <windows.h>
inline u32 getTimeS()
{
return GetTickCount() / 1000;
}
inline u32 getTimeMs()
{
return GetTickCount();
}
inline u32 getTimeUs()
{
LARGE_INTEGER freq, t;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&t);
return (double)(t.QuadPart) / ((double)(freq.QuadPart) / 1000000.0);
}
inline u32 getTimeNs()
{
LARGE_INTEGER freq, t;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&t);
return (double)(t.QuadPart) / ((double)(freq.QuadPart) / 1000000000.0);
}
#else // Posix
#include <sys/time.h>
#include <time.h>
inline u32 getTimeS()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec;
}
inline u32 getTimeMs()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}
inline u32 getTimeUs()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec * 1000000 + tv.tv_usec;
}
inline u32 getTimeNs()
{
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
return ts.tv_sec * 1000000000 + ts.tv_nsec;
}
/*#include <sys/timeb.h>
inline u32 getTimeMs()
{
@ -174,6 +222,22 @@ bool threadSetPriority(threadid_t tid, int prio);
}*/
#endif
inline u32 getTime(TimePrecision prec)
{
switch (prec) {
case PRECISION_SECONDS:
return getTimeS();
case PRECISION_MILLI:
return getTimeMs();
case PRECISION_MICRO:
return getTimeUs();
case PRECISION_NANO:
return getTimeNs();
}
return 0;
}
} // namespace porting
#endif // PORTING_HEADER