GC-Ruckler durch Object.values() in pickJob und tickVillager #34
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
pickJob()wird ~jede Sekunde pro Nisse aufgerufen (idle scan timer) und erzeugt dabei massenhaft kurzlebige Array-Objekte durchObject.values(). Der schlimmste Fall ist der Forester-Block: für jedes Zone-Tile werden 4×Object.values()aufresources,buildings,cropsundtreeSeedlingsaufgerufen. Bei einer Zone mit 20 Tiles = 80 Array-Allokationen propickJob-Aufruf → JavaScript GC pausiert → sichtbare Ruckler im ~1-Sekunden-Takt.Zusätzlich:
tickVillager()erstellt jedes Frame ein neuesicons-Objekt.Fix
pickJob: alleObject.values()-Aufrufe einmal am Anfang der Methode, Variablen wiederverwendentickVillager:icons-Record als Modul-Konstante außerhalb der Methodeupdate(): Villager-Array einmal pro Frame holen, nicht pertickVillager