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
|
|
|
|
|
2010-07-22 10:25:14 +00:00
|
|
|
namespace nv {
|
2010-05-27 23:18:08 +00:00
|
|
|
|
2010-07-22 10:25:14 +00:00
|
|
|
class NVCORE_CLASS Timer
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Timer() {}
|
2010-05-27 23:18:08 +00:00
|
|
|
|
2010-07-22 10:25:14 +00:00
|
|
|
void start() { m_start = clock(); }
|
|
|
|
void stop() { m_stop = clock(); }
|
2009-07-06 08:57:36 +00:00
|
|
|
|
2010-07-22 10:25:14 +00:00
|
|
|
float elapsed() const { return float(m_stop - m_start) / CLOCKS_PER_SEC; }
|
|
|
|
|
|
|
|
private:
|
|
|
|
clock_t m_start;
|
|
|
|
clock_t m_stop;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // nv namespace
|
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
|