andrey Sat Feb 22 08:55:12 2003 EDT Modified files: /php4/ext/standard array.c Log: additional speedup for array_shift(). No need to rehash if the removed element's key is not scalar and elements with scalar keys are already well numbered (sequentially from 0) for some reason. This is the case if the leading elements have no scalar indexes. Index: php4/ext/standard/array.c diff -u php4/ext/standard/array.c:1.221 php4/ext/standard/array.c:1.222 --- php4/ext/standard/array.c:1.221 Sat Feb 22 05:54:26 2003 +++ php4/ext/standard/array.c Sat Feb 22 08:55:11 2003 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.221 2003/02/22 10:54:26 andrey Exp $ */ +/* $Id: array.c,v 1.222 2003/02/22 13:55:11 andrey Exp $ */ #include "php.h" #include "php_ini.h" @@ -1858,15 +1858,21 @@ /* If we did a shift... re-index like it did before */ if (!off_the_end) { int k = 0; + int should_rehash = 0; Bucket *p = Z_ARRVAL_PP(stack)->pListHead; while (p != NULL) { if (p->nKeyLength == 0) { - p->h = k++; + if (p->h != k) { + p->h = k++; + should_rehash = 1; + } else { + k++; + } } p = p->pListNext; } Z_ARRVAL_PP(stack)->nNextFreeElement = k; - if (k) { + if (should_rehash) { zend_hash_rehash(Z_ARRVAL_PP(stack)); } } else if (!key_len) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php