Codeausführung und Grafikrendering Benchmarken

Marius Heil

Erfahrenes Mitglied
Hi,

ich schreibe gerade in AS3 ein Spiel und ärgere mich ein wenig, dass es bereits in dem frühen Stadium 60% CPU Last verbraucht. Irgendwo muss ein Haken sein, da ich eigentlich nichts groß Prozessorlastiges drin habe.
Die Kollisions und Bewegungsberechnungen hab ich mal mit getTimer überwacht:
PHP:
idle += getTimer() - last;
			last = getTimer();
			calcPhysics();
			calculateMaterial(); //Man bruacht es nur einmal
			ckeckCollision();
			used += getTimer() - last;
			last = getTimer();
			this.x += xAcceleration;
			this.y += yAcceleration;
			
			trace("!"+idle+"!"+used);
Die Trace ausgabe sieht ziemlich gut aus, sehr großer idle wert und ein sich kaum erhöhender used-Wert. Gibt es andere Möglichkeiten die verschiedenen Codezeilen zu überwachen oder Codeausführung und Grafikrendering auseinanderzuhalten?
 
Naja - Möglichkeiten, um das zu trennen, gibt es. Man kann z.B. einmal nen EnterFrame-Event und einmal einen Timer nehmen, diese Kombination ist aber nicht so gut (wenn es zu Lags kommt wird wahrscheinlcih der Timer 2x für nur 1 Frame ausgeführt usw). 2 Timer gehen natürlich auch. Ich persönlich würde es nicht machen, sondern bei der guten alten Hauptschleife bleiben - vor allem aus dem genannten Problem bei Lags.

Dass du mit dem Timer-Ergebnis zufrieden bist ist klar. Die Berechnungen sollten ja in einem Frame passieren (und tun das bei 60% CPU-Leistung wohl auch) und haben nunmal eine Zeit von unter 1 Millisekunde. Das ist in der heutigen Zeit allerdings kein Maßstab mehr. Ich würde mal die Kollisionsabfragen und Berechnungen generell pro Frame zählen und per trace ausgeben lassen. In der Regel ist man am Besten damit beraten, die Anzahl der Berechnungen auf ein Mindestmaß zu reduzieren. Bei 90% der Fälle ist z.B. eine Kollisionsabfrage überflüssig.

Ohne Einblick in dein Projekt lässt sich glaub ich nicht mehr viel sagen :)
 

Neue Beiträge

Zurück