Updated: The class is now thread safe.
High resolution timing is supported in Win32 by the
QueryPerformanceFrequency API calls. The timer resolution varies with the processor. Today's high speed processors have a timer resolution of less than a microsecond. Of course, this is a much better resolution than the
QueryPerformanceCounter calls directly takes too much typing and the resulting code is usually hard to read. So, I looked all over the net for a timer class but I could not find one that suited me. I wrote a simple and powerful timer class and named it
CPerfTimer. I wrote this a long time ago but I still have not had the need to update it. Searching the net, I could not find a timer class as simple to use and as useful as
CPerfTimer. Several other timer classes are available and they vary as to their simplicity and usefulness. I do not claim that this is the end-all-be-all of timer classes; but, I hope that someone will find it useful enough to refrain from taking the time to write yet another timer class.
This class is simple to use. Just declare a variable as type
Start() to start timing and call
Stop() to stop timing. You can pause a timer by calling
Stop() and then you can call
Start() to resume. Retrieve the elapsed time by calling an
Elapsed...() function. Assignment, addition, subtraction and comparison are supported. There are a few information calls available also. All calls except
Stop can be performed on a timer without stopping it.
I have not included separate documentation or example application. The code is fairly well documented and the above paragraph was copied from the CPerfTimer.h file. Methods for adding, subtracting and comparing
CPerfTimers and seconds (double) are also included. And, a
CPerfTimerT class that should be thread safe (no extensive testing has been done). Please inform me if any bugs are found or you have an idea for an enhancement.
This article has no explicit license attached to it, but may contain usage terms in the article text or the download files themselves. If in doubt, please contact the author via the discussion board below.
A list of licenses authors might use can be found here.