[gelöst]Jeder sechste Frame 0 ms?

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Xethoras
Beiträge: 36
Registriert: 05.03.2008, 21:56

[gelöst]Jeder sechste Frame 0 ms?

Beitrag von Xethoras »

Folgendes Problem: Die meisten Frames meines Programms dauern 15-16 ms. Einzelne Frames brauchen allerdings lediglich 0 ms (laut dem Code, den ich gleich poste). Ich weiß jetzt nicht ob das tatsächlich so ist(und warum das so sein kann) oder ob mein Zeitmesscode nicht richtig funktioniert( und warum nicht)

Code: Alles auswählen

SYSTEMTIME Time1,Time2    //Woanders...
//In der Mainloop:
GetSystemTime(&Time1);
if(Time2.wMilliseconds>Time1.wMilliseconds)
{
	timeoffset=1000-Time2.wMilliseconds+Time1.wMilliseconds;
}
else
	timeoffset=Time1.wMilliseconds-Time2.wMilliseconds;
Time2=Time1;
Jeden Frame sollte es genausoviel Zeichenbefehle geben.
Zuletzt geändert von Xethoras am 14.04.2009, 12:56, insgesamt 1-mal geändert.
DarkD
Beiträge: 8
Registriert: 30.03.2005, 00:01

Re: Jeder sechste Frame 0 ms?

Beitrag von DarkD »

Hi,

Der Timer hat nur eine Auflösung von ca. 16ms. Das heißt so genaue Messungen kannst du damit gar nicht durchführen.
Ich empfehle timeGetTime()
http://msdn.microsoft.com/en-us/library ... S.85).aspx
Hat eine Auflösung von 1ms.
Nicht vergessen winmm.lib einzubinden!

EDIT:
Für maximale Genauigkeit würde ich QueryPerformanceCounter() verwenden (aber ich hatte mit timeGetTime() in den letzten 5 Jahren nie ein Problem)
Xethoras
Beiträge: 36
Registriert: 05.03.2008, 21:56

Re: Jeder sechste Frame 0 ms?

Beitrag von Xethoras »

Danke! (klappt)
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Jeder sechste Frame 0 ms?

Beitrag von Aramis »

Hi,
Der Timer hat nur eine Auflösung von ca. 16ms
Der Timer hat afaik auf den meisten Systemen eine Auflösung von 10ms. Der Schuldige ist möglicherweise auch der Windows Task Scheduler, der Rechenzeit in einem Takt von etwa 16ms vergibt, oder eben nicht.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Jeder sechste Frame 0 ms?

Beitrag von kimmi »

Sollte euch das auch noch nicht reichen:

http://msdn.microsoft.com/en-us/library ... S.85).aspx

Gruß Kimmi
Antworten