Re: Improved performance of array_maerge() and func_get_args()
| From: | Patrick ALLAERT | Date: | Wed, 23 Oct 2013 18:10:17 +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-69812@lists.php.net to get a copy of this message | ||
2013/10/23 Dmitry Stogov <dmitry@zend.com>:
> 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.
That sounds really good.
Note that in many performance investigations I made, array_merge() was
often one of the cause of some unnecessary overhead, however, most of
the times this function was used was in fact to merge arrays that were
in fact *hashes* (dictionary, map,...) and not really *arrays*. In
those cases, the performance fix is simply to use "$y + $x" instead of
"array_merge($x, $y).
Are all those array_merge() of wordpress really made to merge *arrays*
rather than *hashes*?
Is the gain constant for all cases of array_merge(), with numeric
indices vs string ones?
Patrick