Ich habe mal einen Benchmark gemacht, um die verschiedenen Varianten des Kopierens zu vergleichen.
Das Test-Skript erstellt zunächst einen Ursprungs-Array mit 1.000 Elementen, jedes Element ein zufälliger 20-Zeichen-String.
Getestet habe ich mit den Perl-Versionen 5.22.0, 5.22.4, 5.24.1, 5.24.2, 5.26.1 und bei allen ist das Ergebnis ähnlich (leichte Varianzen in den Zahlen, aber immer gleiche Rangfolge). Ältere Versionen als 5.22.0 habe ich hier nicht installiert, daher keine Tests dafür.
Hier das Ergebnis exemplarisch für 5.26.1:
perl-5.26.1
==========
Rate copy_c_loop copy_c_loop_push copy_foreach copy_foreach_push copy_direct
copy_c_loop 6515/s -- -4% -24% -38% -64%
copy_c_loop_push 6761/s 4% -- -21% -35% -63%
copy_foreach 8532/s 31% 26% -- -18% -53%
copy_foreach_push 10438/s 60% 54% 22% -- -42%
copy_direct 18101/s 178% 168% 112% 73% --
Das schnellste Kopieren ist die direkte Kopie, gefolgt von der foreach-Schleife, in der die Elemente mit push() ins neue Array übertragen werden. Die C-for-Schleife schneidet sogar am schlechtesten ab. Hätte ich so nicht erwartet, muss ich zugeben.
more (14.0kb)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!