Hello everyone,
Please consider these two statements:
substr($string, 0, $length);
array_slice($array, 0, $length, true);
Currently, with substr(), if $offset is zero and $length is smaller or equal to
the original string length we just increase the reference count of the original
string and return it via RETURN_STR_COPY.
In that case we completely save the allocation of a new string.
Now, array_slice() could be optimized similarly, but currently (unless the
resulting array is expected to be empty) we always create a new array no matter
if we actually have to.
The same mechanism as used with substr() could be applied to array_slice(),
given that $offset is zero and of course only if $preserve_keys is true.
A patch would look like this:
if (length <= num_in && offset == 0 && preserve_keys) {
/* Copy the original array */
ZVAL_COPY(return_value, input);
return;
}
I'd appreciate if someone could commit this. Thanks.
Cheers,
Benjamin
--
Bejamin Coutu
[email protected]
ZeyOS, Inc.
http://www.zeyos.com
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php