summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2003-02-22 10:54:26 +0000
committerAndrey Hristov <andrey@php.net>2003-02-22 10:54:26 +0000
commit94040a28ce4a90d00da051dbb1968d5e029ac396 (patch)
tree5049ba27c9126d280c6afea9796e474e6b77eee3 /ext/standard/array.c
parent0133377fba8caeb2830016c2659ddead36509b78 (diff)
downloadphp-git-94040a28ce4a90d00da051dbb1968d5e029ac396.tar.gz
rehash only in case something is changed.
#lowers the execution time in half on my machine on array with 1000 elements #with nonscalar keys. Maybe it can be optimized further.
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 32edd74c1f..cf4f1889cf 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1866,7 +1866,9 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end)
p = p->pListNext;
}
Z_ARRVAL_PP(stack)->nNextFreeElement = k;
- zend_hash_rehash(Z_ARRVAL_PP(stack));
+ if (k) {
+ zend_hash_rehash(Z_ARRVAL_PP(stack));
+ }
} else if (!key_len) {
Z_ARRVAL_PP(stack)->nNextFreeElement = Z_ARRVAL_PP(stack)->nNextFreeElement - 1;
}