Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
Delphi 12 Athens
|
AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?
26. Nov 2013, 10:39
Ich würde nicht davon ausgehen, daß ein TTimer genau läuft.
Diese Messages sind quasi niedrig Priorisiert.
Ist das Programm/System ausgelastet, dann sind die Timer es, welche praktisch als erstes keine Messages mehr rausgeben.
Außerdem werden sie nur via PostMessage in die MessageQueue eingereiht, als selbst wenn sie pünktlich rausgehen, werden sie nicht sofort abgearbeitet.
Dauert die Abarbeitung länger, dann werden neue Messages nicht rausgegeben, solange noch Eine in der Queue steckt, was dann für fehlende Zeit sorgt, wenn man die Spielgeschwindigkeit an den Takt der Messages hängt. Und auf langsameren rechnern, welche die einzelnen Messages nicht schnellgenug verarbeiten, wird es dann, wie schon mitbekommen, auch noch langsamer.
Wenn man den zeitlichen Ablauf wirklich an einen zeit-synchronen Zähler (Uhrzeit oder Counter ala GetTickCount oder schnellerere MultiMediaTimer) hängt und die Wegstrecke nicht von der Verarbeitungsgeschwindigkeit, sondern von der Uhrzeit abhängig macht, dann ist es egal, ob der Rechner 500 oder nur 2 FPS schafft ... die Wegstrecke ist dann praktisch gleich. (vorausgesetzt die Wegstrecke ist entsprechend vorhersehbar, bzw. nachberechenbar)
So könnte man dann über Pausen zwischen den Verarbeitungen auch die CPU-Auslastung steuern, bzw. die überlastete CPU regelt das von selber runter, ohne daß es in einer Zeitlupe endet.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
|