Hallo Nico R.,
Ich meine kürzlich irgendwo gelesen zu haben, dass push() ungünstig ist, sofern man beim Anlegen des Arrays nicht die Länge definiert, weil dann Speicher angezapft werden muss
Das ist immer so, wenn man Arrays dynamisch aufbaut. Wenn Du VORHER weißt, wieviele Werte rein müssen, kannst Du das mit Array(4711) direkt angeben. Wenn Du mit einem leeren Array startest, dann ist es egal, ob Du der Reihe nach an arr[0] bis arr[4710] zuweist oder einen push nach dem anderen machst. Sag ich mal so aus der Hüfte geschossen, ich müsste es erstmal messen.
"Angezapft" ist vielleicht auch nicht ganz passend, Speicher anzapfen musst Du immer um ein Array anzulegen. Aber wenn Du die Länge vorher nicht weißt, kann JavaScript nur raten, und es rät natürlich erstmal zurückhaltend. Wird die erratene Länge überschritten, muss der Array-Speicher erweitert werden, was dann neu anlegen, umkopieren und alten Speicher freigeben bedeutet. Das kostet etwas Zeit und ist eine Belastung für den Heap, bis der Garbage Collector wieder aufräumt.
In der Praxis ist das dann ein Problem, wenn die Arrays sehr groß werden. Bei 10 oder 20 Einträgen ist es ziemlich wurscht bzw. nur bei extrem engen Zeittoleranzen relevant - aber dann ist JavaScript die falsche Sprache, dann besser WebAssembly (was ein Monster für sich ist) oder gar nicht im Browser, sondern lokal und mit einer GC-freien und statisch allocierenden Sprache. Beispielsweise C++.
Rolf
sumpsi - posui - obstruxi