Performance. Ist nicht so einfach

Antworten
Benutzeravatar
Averlion
Administrator
Beiträge: 526
Registriert: 07.01.10, 22:40
Kontaktdaten:

Performance. Ist nicht so einfach

Beitrag von Averlion »

Okay ich habe an diesem Wochenende neben ein paar Kleinigkeiten am meisten an der Performance zu arbeiten. Ich habe einen Bug Report bekommen von einem Spieler der mit erheblichen Einschränkungen zu kämpfen hat und bei dem die Auslastung der CPU auf 100% steigt wenn Final Cumeda läuft. Es hat etwas gedauert bis ich herausgefunden habe an was es eigentlich liegt.

Grundsätzlich lässt sich sagen es liegt an den Flotten und an den Animationen von diesen.
Ich benutze für die Animationen JQuery und der Intervall liegt bei 13ms. Das ist aber erheblich zu viel für die Flotten und belastet bei älteren Computern erheblich die CPU.

Ich habe jetzt erstmal dieses Intervall auf 50ms gesetzt. Aber auch das ist für die Flotten zu viel. Dort würden, mit Ausnahme der Sonde, auch 500ms reichen. Leider lässt sich dieser Wert nur Global setzen und damit wären eben alle Animationen betroffen. Also auch das Panel links oder das zurück schnappen wenn man außerhalb der Karte ist oder man sich zu einem Schiff bewegt.

Ich habe versucht diesen Wert individuell vor den aufrufen der Animation für die Speziellen Fälle zu setzen. Also Frachter und Angriffe auf 500 und Sonde auf 50 aber leider gibt es da ein weiteres Problem. Der Timer wird gesetzt wenn eine Animation startet und wieder entfernt wenn diese fertig ist. Das führt dazu das wenn eine Flotte bereits mit 500 unterwegs ist der Timer darauf eingestellt ist. Sollte jetzt eine Sonde gestartet werden fliegt diese auch mit 500. Das gleiche gilt auch andersrum. Einmal ist der Timer gesetzt und der bleibt bis alle Animationen fertig sind.
Das ist für mich jetzt ein Problem aber eigentlich steckt da auch eine gute Idee dahinter.
Wenn jetzt für jede Animation ein Timer laufen würde wäre es noch schlimmer. Dann müssten eben für alle Flotten ein einzelner Timer laufen.

So, was mach ich jetzt? Ehrlich gesagt bin ich im Moment ratlos wie ich beides unter einen Hut bringe. Vielleicht ist es schon besser wenn ich zwei habe die dann bei bedarf Parallel laufen. Also einen mit 500 und einen mit 50.

Ich werde das weiterhin untersuchen aber es kann etwas dauern bis ich dafür die perfekte Lösung gefunden habe.
FOLLOW US ON
BildBild
Antworten