#include "Util.h"
#include <assert.h> #include <Windows.h>
Stopwatch::Stopwatch() { LARGE_INTEGER i; if(::QueryPerformanceFrequency(&i) == 0) { assert(false); } frequency_ = i.QuadPart;
Reset(); }
void Stopwatch::Start() { LARGE_INTEGER i; ::QueryPerformanceCounter(&i); start_ = i.QuadPart; is_running_ = true; }
void Stopwatch::Stop() { if(is_running_) { LARGE_INTEGER i; ::QueryPerformanceCounter(&i); elapsed_ += i.QuadPart - start_; is_running_ = false; } }
void Stopwatch::Reset() { elapsed_ = start_ = 0; is_running_ = false; }
unsigned long long Stopwatch::GetElapsedMilliseconds() { if (is_running_) { LARGE_INTEGER i; ::QueryPerformanceCounter(&i); return (elapsed_ + i.QuadPart - start_) * 1000 / frequency_; } else { return elapsed_ * 1000 / frequency_; } }
unsigned long long Stopwatch::GetElapsedSeconds() { return GetElapsedTicks() / frequency_; }
unsigned long long Stopwatch::GetElapsedTicks() { if (is_running_) { LARGE_INTEGER i; ::QueryPerformanceCounter(&i); return elapsed_ + i.QuadPart - start_; } else { return elapsed_; } }
unsigned long long Stopwatch::GetFrequency() { return frequency_; } |