misstvielmisst: array_slice mit grossen Arrays

Beitrag lesen

Hallo,

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!

Ich finde das recht erstaunlich und kann mir das kaum erklären,
ausser mit sehr ungeschicktem CopyOnWrite.

Über den Daumen gepeilte Empfehlung:
if count(array) > count(ausschnitt) * 50 * durchläufe
then loop
else array_slice