Profiling bei einem Computerspiel

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sephiroth
User
Beiträge: 28
Registriert: Freitag 3. November 2006, 00:12

Hallo zusammen,

ich schreibe gerade ein kleines Jump and Run Spiel mitHilfe von Python und Pygame.
Da das alles allerdings ziemlich hardwarehungrig (wie ich finde) wollte ich meinen bisherigen Code mal durch einen Profiler jagen um die Flaschenhälse ausfindig zu machen.

Allerdings stellt sich für mich die Frage wie ich beim "profilen" am besten vorgehe.
Ist es richtig, das ich immer bessere Ergebnisse bekomme, je länger ich spiele? So rutscht das ganze Zeugs was nur beim Programmstart 1x durchgeführt werden muss in der "Gewichtung" weiter nach hinten und ich bekomme genauere durchschnittswerte bei den Zeitangaben.
Oder hab ich da einen grundsätzlichen Denkfehler?

Wie geht man am besten vor beim "profilen" von Programmen die nicht einfach von oben nach unten durchlaufen?

Hier mein erster Versuch mit dem "profile"-modul und gprof2dot:
(ca. 10 Sekunden Spielzeit)
Link zum profiling graph
Was ich daraus schließe ist, das das rendern am meisten Zeit verbraucht, insbesondere die "renderMapLayer" Methode.

Gruß
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

Sephiroth hat geschrieben:Wie geht man am besten vor beim "profilen" von Programmen die nicht einfach von oben nach unten durchlaufen?
Es gibt die Möglichkeit die einzelnen Methoden / Funktionen auf die Laufzeiten zu testen. Da aber sicher auf die Methoden die nur 1mal gebraucht werden vielleicht nicht so drauf achten, eher auf die Methoden die ständig aufgerufen werden.
Oder wenn du bemerkst das deine CPU load sprunghaft steigt wenn du etwas spezielles im Spiel machst, evtl dort suchen.

Lauter der Grafik, braucht das einlesen der Map recht viel CPU Leistung.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Ist es richtig, das ich immer bessere Ergebnisse bekomme, je länger ich spiele? So rutscht das ganze Zeugs was nur beim Programmstart 1x durchgeführt werden muss in der "Gewichtung" weiter nach hinten und ich bekomme genauere durchschnittswerte bei den Zeitangaben.
So würd ichs angehen. Schau dir dann die Sachen an die am meisten Zeit brauchen und am häufigsten aufgerufen werden.
Optimiere dann so das du dir keinen Weg verbaust (->ignoriere "superschlaue" Sachen) . Leider ist es nun mal so das es nichts bringt wenn das Spiel 200% schneller läuft aber nach 3 Jahren erst zu 12% fertig ist :)

lg
Antworten