nvidia-texture-tools/src/nvcore/Timer.h

62 lines
1.2 KiB
C
Raw Normal View History

2009-07-06 08:57:36 +00:00
// This code is in the public domain -- castano@gmail.com
2010-05-27 23:18:08 +00:00
#pragma once
2009-07-06 08:57:36 +00:00
#ifndef NV_CORE_TIMER_H
#define NV_CORE_TIMER_H
2010-03-16 22:35:20 +00:00
#include "nvcore.h"
2009-07-06 08:57:36 +00:00
#if 1
#include <time.h> //clock
class NVCORE_CLASS Timer
{
public:
2010-05-27 23:18:08 +00:00
Timer() {}
void start() { m_start = clock(); }
void stop() { m_stop = clock(); }
float elapsed() const { return float(m_stop - m_start) / CLOCKS_PER_SEC; }
2009-07-06 08:57:36 +00:00
private:
2010-05-27 23:18:08 +00:00
clock_t m_start;
clock_t m_stop;
2009-07-06 08:57:36 +00:00
};
#else
#define WINDOWS_LEAN_AND_MEAN
#define VC_EXTRALEAN
#define NOMINMAX
#include <windows.h>
class NVCORE_CLASS Timer
{
public:
2010-05-27 23:18:08 +00:00
Timer() {
// get the tick frequency from the OS
QueryPerformanceFrequency((LARGE_INTEGER*) &m_frequency);
}
void start() { QueryPerformanceCounter((LARGE_INTEGER*) &m_start); }
void stop() { QueryPerformanceCounter((LARGE_INTEGER*) &m_stop); }
int elapsed() const {
return (int)1000 * ((double)m_stop.QuadPart - (double)m_start.QuadPart) / (double)m_frequency.QuadPart;
}
2009-07-06 08:57:36 +00:00
private:
2010-05-27 23:18:08 +00:00
LARGE_INTEGER m_frequency;
LARGE_INTEGER m_start;
LARGE_INTEGER m_stop;
2009-07-06 08:57:36 +00:00
};
#endif // 0
#endif // NV_CORE_TIMER_H