sleep() oder QueryPerformanceCounter?
-
Hallo,
ich habe folgenden Code geschrieben:
for(int i=0;i<1;i++) { QueryPerformanceCounter((LARGE_INTEGER*)&CurentCount); //for(int i=0; i < 10000; i++) Sleep(10); QueryPerformanceCounter((LARGE_INTEGER*)&LastCount); timeDiff=(((double)(LastCount-CurentCount))/((double)Frequency)); }Ausgabe:
timeDiff=0.015457 swer macht eurer Meinung nach den größeren Fehler? sleep() oder QueryPerformanceCounter?.. das sind ja immerhin 30% abweichung.
Bei Sleep(1) ist es noch schlimmer..
Blöd wäre wenn beide eine hohe Abweichung hättenlg
-
Erstens: Die ganzen Operationen um das Sleep() herum kosten auch ein wenig Zeit (inklusive der QPC-Aufrufe).
Zweitens: Windows ist ein Multi-Tasking-System. Und wenn Sleep() fertig ist, kann es durchaus sein, daß gerade ein anderer Prozess beschäftigt ist - und dann mußt du halt etwas länger warten

-
Sleep(1-15) ist auf einem Multi-Prozessor-System immer 15 ms (Single-Prozessor: 10ms).
Du kannst es mittels "timeBeginPeriod" auf bis zu 2 ms reduzieren.