Während ich an einem Spielprojekt für Android arbeitete, suchte ich nach Informationen zur Leistungsoptimierung für Spielcode. Und ich habe erfahren, dass die Verwendung von Java- Sammlungen wie List, Arraylist usw. in Spielcodes nicht empfohlen wird, obwohl das Sammeln ein nützliches Werkzeug in der Java-Programmierung ist. Warum ist das so? Ich möchte technische Details wissen, wie viel Einfluss das Collection Framework auf Android-Systeme haben kann und warum? Jede Hilfe in dieser Hinsicht wird großartig sein.
10
Antworten:
Es geht hauptsächlich um Speicherzuweisung und Speicherbereinigung. Durch die Speicherzuweisung zur Laufzeit kann Ihr Garbage Collector den Papierkorb entfernen. Was Ihrer Leistung schadet. GC sollte so selten wie möglich auftreten.
Die meisten Java-Sammlungen:
A) Weisen Sie mehr Speicher zu, als sie benötigen.
B) Ordnen Sie Speicher zu, wenn Sie dies nicht möchten.
C) Weisen Sie jedem Iterator Speicher zu, wenn Sie eine Sammlung durchlaufen.
Um diese Dinge zu umgehen:
A) Ordnen Sie Sammlungen mit festen Größen zu. dh. Objektpools erstellen.
B) Ordnen Sie diese Pools bei Programminit.
C) Vermeiden Sie das for (Object obj: collection) für Auflistungstypen mit der Methode size () und .get (int index).
quelle