AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?
Thema durchsuchen
Ansicht
Themen-Optionen

Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

Ein Thema von Astobix · begonnen am 25. Nov 2013 · letzter Beitrag vom 26. Nov 2013
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

  Alt 25. Nov 2013, 16:54
Das stimmt, nur hat man wie gesagt nicht immer eine Welt bei der man sich an Zeiten oder Abstand orientieren kann. Das mit FPS ist ein kleiner Trick den ich mal ausprobiert habe und der eigentlich gut klappt.
Hast du da mal ein Beispiel?

Eigentlich geht es bei Geschwindigkeit immer um Strecke pro Zeiteinheit.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

  Alt 25. Nov 2013, 17:39
Hatte ich. Ich hab mal ein kleines Spiel für zwischendurch programmiert, bzw. bin immer noch dabei (mit langen Pausen dazwischen). Etwas belangloses was man im Büro in der Mittagspause spielen kann. Das spezielle an dem Programm war, dass da plötzlich paar tausend Objekte auf dem Bildschirm rumschwirren konnten (theoretisch). Das höchste bei einem Test waren 15.000 Bitmaps. Das ergab 5 FPS. D. h. in 1/5 Sekunde wurden 15.000 Bitmaps in die Zielbitmap kopiert.

Nicht dass das normal war, aber es konnte passieren. Das Programm lief bei 5 FPS somit in Zeitlupe ab, so dass man plötzlich keine Probleme hatte die seine Abschüsse zu machen. Also habe ich das so umprogrammiert wie ich es oben geschrieben habe.

Funktioniert hat es, nur war ich damit trotzdem nicht glücklich. Also habe ich das Programm komplett neu geschrieben und dieses mal richtig optimiert, so dass ich jetzt 225.000 Objekte brauche um auf 5 FPS zu kommen (ich hab es tatsächlich gemessen).

Auf was ich hinaus will: es hat funktioniert, nur habe ich den Code nicht mehr. In der neuen Version habe ich auf Bitmaps verzichtet und die Objekte gezeichnet. Das geht schneller.

Aber was ich geschrieben habe, funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

  Alt 25. Nov 2013, 17:58
Ok, evtl. löse ich die Probleme lieber auf direkte Art
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

  Alt 25. Nov 2013, 20:42
Das war einfacher als es sich anhört und hätte ich das nicht neu gemacht wäre das eine gute Idee gewesen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

  Alt 25. Nov 2013, 21:38
Das war einfacher als es sich anhört und hätte ich das nicht neu gemacht wäre das eine gute Idee gewesen.
Das weiß ich, weil es in meinen Augen durch die Brust ins Auge ist
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

  Alt 25. Nov 2013, 22:40
Wieso? Weil nach dieser Idee das Programm sich der Auslastung anpasst?

Betrachten wir die Natur. Was passiert wenn der Mensch nicht genug Nahrung bekommt? Ok, er nimmt ab, aber was passiert vorher? Der Körper stellt sich drauf ein (liest man oft) und nutzt die vorhandene Nahrung effizienter aus. Hört sich hoch interessanter an, fast so, als ob der Körper aus 1 Joule 2 machen könnte. Geht natürlich nicht, aber wie geht sonst? Ganz einfach, der Körper wird träge. So verbrennt er weniger Kalorien. Der Körper passt sich den Gegebenheiten an, also durch die Brust ins Auge?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Programm verbraucht zuviel Prozessorleistung - Wie kann ich Lag verhindern?

  Alt 25. Nov 2013, 23:12
Ich verstehe es aber auch noch nicht so ganz.

Ich kenne es eigentlich auch entweder nur so, dass es einfach langsamer wird wenn die Frames nicht mehr schnell genug berechnet werden können (eher ungewöhnlich, kommt aber durchaus vor) - Oder Dinge wie Benutzereingaben, Physik, Wegfindung usw laufen vom Grafikrendering getrennt. Wenn ein Bild nun 60, 70 ms dauert, meinetwegen. Aber deswegen kann bsp. die Netzwerkkommunikation oder KI doch nicht immer auf die Grafik warten.

Was aber natürlich vorkommt (leider zu selten) ist eine Anpassung des Detailgrads wie verschiede LOD-Stufen, Sichtweite oder auch gröber arbeitende KI wenn die FPS in den Keller gehen.


Wäre es, im konkreten Spaceshooter-Beispiel in Delphi denn tragbar, das Bitmap-Pinseln in einen Thread auszulagern während der VCL-Hauptthread sich 60 mal in der Sekunde das zuletzt gerenderte Bitmap anschaut und evtl auf das Formular pinselt? Oder vielleicht auch nur für tolle Grafikeffekte - Explosions-Sprites müssen ja nicht mit der gleichen Geschwindigkeit animiert und über das fertige Bild gelegt werden wie die fliegenden Raumschiffe und der Spieler...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz