ich hatte gerade eine Anwendung bei der aus einem
ca. 100.000 integer Werte umfassendes Array
ca. 30.000 mal jeweils eine kurze Sequenz (1-2 Elemente) ausgeschnitten
werden musste.
Dabei ist mir leider unangenehm aufgefallen das "array_slice" gut
80x langsamer als eine "while() kopie[] = array[index]" ist.
Bei sehr grossen Arrays und sehr kleinen Ausschnitten und
vielen Wiederholungen kann diese Funktion auch mal
mehrere hundertmal langsamer sein!
Das ist bekannt, und meiner Ansicht nach auch logisch. Ich habe zwar von PHP keine Ahnung, aber in Perl gilt das auf jeden Fall.
Ich finde das recht erstaunlich und kann mir das kaum erklären,
ausser mit sehr ungeschicktem CopyOnWrite.
Wenn du aus einem Array 1..1000 das 1. Element mit slice rausschneidest, müssen alle nachfolgenden Indices umgeschrieben werden.
Dieses Umschreiben ist also schon fast so anstrengend wie Kopie in einen anderen Array.
Falls man slice überhaupt anwendet, empfiehlt es sich, den Array von hinten aufzuslicen, mit der Begründung, dass slicen den Array prinzipiell verkürzt.
mfg Beat
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische