Implement Timer for C++11

This uses std::chrono::system_clock
This commit is contained in:
Matt Williams 2013-08-22 20:40:45 +01:00
parent 55dc066a3f
commit f81b42747b
2 changed files with 14 additions and 17 deletions

View File

@ -28,37 +28,31 @@ freely, subject to the following restrictions:
#ifdef _MSC_VER // Don't worry about the exact version, as long as this is defied.
#include <Windows.h>
#else
#include <chrono>
#endif //_MSC_VER
namespace PolyVox
{
#if defined(_MSC_VER)
class Timer
{
public:
Timer(bool bAutoStart = true);
void start(void);
float elapsedTimeInSeconds(void);
uint32_t elapsedTimeInMilliSeconds(void);
private:
#if defined(_MSC_VER)
double m_fPCFreq;
__int64 m_iStartTime;
};
#else //_MSC_VER
class Timer
{
public:
Timer(bool bAutoStart = true);
void start(void);
float elapsedTimeInSeconds(void);
uint32_t elapsedTimeInMilliSeconds(void);
};
typedef std::chrono::system_clock clock;
std::chrono::time_point<clock> m_start;
#endif //_MSC_VER
};
}
#endif //__PolyVox_Timer_H__

View File

@ -78,16 +78,19 @@ namespace PolyVox
void Timer::start(void)
{
m_start = clock::now();
}
float Timer::elapsedTimeInSeconds(void)
{
return 0.0f;
std::chrono::duration<float> elapsed_seconds = clock::now() - m_start;
return elapsed_seconds.count();
}
uint32_t Timer::elapsedTimeInMilliSeconds(void)
{
return 0;
std::chrono::duration<float, std::milli> elapsed_milliseconds = clock::now() - m_start;
return elapsed_milliseconds.count();
}
#endif //_MSC_VER
}