On Thu, 2012-07-12 at 13:43 +0200, Jille Timmermans wrote:
> Hello,
> 
> array_shift() currently reindexes the array after shifting one element. 
> The reindexing has quite some impact on it's performance. I would like 
> to suggest an extra parameter to array_shift() which can be used to 
> prevent reindexing.
> 
>  From a few quick (and sloppy!) tests I get these results:
>    `reset($array); list($key, $value) = each($array); 
> unset($array[$key]);` is ~50-150 times faster than array_shift().
>    Calling array_reverse() and using array_pop() is ~2000-5000 times faster.
> 
> If you agree this would be an useful addition I will create a patch.

I haven't checked this, but is the difference only due to the re-hashing
or also due to the fact that that array_shift() is taking the array by
reference and therefore making a copy during the call if other
cow-references (refcount>1, isref=0) exist?

johanne



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to