Re: Improved performance of array_maerge() and func_get_args()
| From: | Nikita Popov | Date: | Wed, 23 Oct 2013 13:52:55 +0000 |
| Subject: | Re: Improved performance of array_maerge() and func_get_args() | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-69804@lists.php.net to get a copy of this message | ||
On Wed, Oct 23, 2013 at 2:36 PM, Dmitry Stogov <dmitry@zend.com> wrote:
> Hi,
>
> I'm proposing two simple patches that eliminate a lot of useless zval
> copying.
> For example they remove only about 800 calls to zend_hash_copy() (25%) on
> each request to wordpress-3.6.0 home page and make it 2-4% faster.
>
> It's not a questions about master branch, but I think it is also safe to
> commit them into PHP-5.4 and PHP-5.5.
>
> Any objections?
>
> https://gist.github.com/dstogov/7117623
>
> https://gist.github.com/dstogov/7117649
>
> Thanks. Dmitry.
>
No objection, just quick note on func_get_args patch: You can use
SEPARATE_ARG_IF_REF there, so the code in the loop body is:
zval *arg = *(p-(arg_count-i));
SEPARATE_ARG_IF_REF(arg);
zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &arg, sizeof(zval
*), NULL);
Nikita