class StopWatch
{
private:
LARGE_INTEGER start;
LARGE_INTEGER stop;
LARGE_INTEGER frequency;
bool started;
bool stopped;
public:
StopWatch(bool autoStart = true)
{
start.QuadPart = 0;
stop.QuadPart = 0;
started = false;
stopped = false;
QueryPerformanceFrequency(&frequency);
if (autoStart)
StartTimer();
}
void StartTimer()
{
if (started)
AfxThrowNotSupportedException();
started = true;
stopped = false;
QueryPerformanceCounter(&start);
}
void StopTimer(bool traceResult = true)
{
QueryPerformanceCounter(&stop);
if (!started)
AfxThrowNotSupportedException();
started = false;
stopped = true;
if (traceResult)
AfxMessageBox(Helpers::StringFormat(L"Time [ms]: %d\n",
GetElapsedTime()));
}
int GetElapsedTime()
{
if (started)
AfxThrowNotSupportedException();
if (!stopped)
AfxThrowNotSupportedException();
return (int)((stop.QuadPart - start.QuadPart) * 1000 /
frequency.QuadPart);
}
};
2010-07-05
Yet another high-resolution timer in C++
Simple high-resolution timer in C++.
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz