www.lampel.net / johannes / projects / hptime

Johannes Lampel - Projects/HPTime

I wrote this class for more exact time measurements than it was possible using the standard time functions that come with your C/C++ compiler. It is based on the RDTSC asm command which reads out a CPU internal 64 bit counter which is incremented with each clock cycle.

When this class is instantiated, it first detects your cpu speed using QueryPerformanceCounter on windows or ftime on linux. Usually this class is instantiated as a global variable, i.e. you only need this initialization once, since this measurement takes some time. You can get the number of cycles the CPU is already running as an 64 bit integer value or as a double precision floating point value indicating the seconds the CPU runs. Please note that when measuring clockwise some periods of time, you have to bear in mind, that programs on a multitasking operating system are not run parallel, but they are given tiny time slices. That means that you shouldnt worry about peaks in your measurements, or try to filter them out.
Because of the size of the counter of 64bit you don't have to worry about overflows in a reasonable time, at least on current CPUs.