>I've just run this quickly on my PIII 800 running Win2K SP3 and worse >case for 1,000,000 calls to QueryPerformanceCounter was 1.92seconds, >usually between 1.55 and 1.65 seconds (10 runs).
I tied it on a 1.8 giga-hertz Pentium 4M, running XP Pro, with very similar results: 1.48 seconds regardless of whether it was a release or debug build. Although I was a bit surprised the faster machine didn't cause a larger difference.
But here is the surprise - when I ran the same test on a 2.0 giga-Hertz Pentium 4, running Win2K SP2, it took around 4.5 seconds. See below.
I wonder if these machines could be using very different timing chips, having nothing to do with the CPU speed? That would explain why timings are hard to reproduce from one machine to another.
Anyhow, Windows is still producing very erratic results when it comes to timing. That's OK, as long as whatever you are trying to time takes a great deal longer than this variable timing overhead.
--Beman
=== details ===
First time on each line - no load on CPU. Second time, another process in a tight loop
Borland debug 4.45899 5.93795 release 4.4701 5.96726
Metrowerks debug 4.46496 5.90992 release 4.45852 5.95018
GCC debug 4.44756 5.94334 release 4.50903 5.89241
Intel debug 4.45704 5.92938 release 4.44913 5.95612
VC++ 6.0 debug 4.48012 5.9725 release 4.46184 5.91715
VC++ 7.0 debug 4.4594 5.91257 release 4.45025 5.98312
> >#include <windows.h> >#include <iostream> >int main(int argc, char* argv[]) >{ >LARGE_INTEGER Start, End, Temp; > QueryPerformanceCounter(&Start); > for (unsigned int i = 0; i < 1000000; ++i) > { > QueryPerformanceCounter(&Temp); > } > QueryPerformanceCounter(&End); > >LARGE_INTEGER Frequency; > QueryPerformanceFrequency(&Frequency); > >double Time = (static_cast<double>(End.QuadPart) - Start.QuadPart) / >Frequency.QuadPart; > std::cout << Time << std::endl; > return 0; >}
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost