Re: [RFC] Fix "foreach" behavior
| From: | Rasmus Lerdorf | Date: | Sat, 31 Jan 2015 08:18:10 +0000 |
| Subject: | Re: [RFC] Fix "foreach" behavior | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-81472@lists.php.net to get a copy of this message | ||
On 01/30/2015 09:10 PM, Dmitry Stogov wrote:
> Hi,
>
> Nikita got an idea about stopping changing of array/object internal
> pointers even in forech by reference.
> I've added an additional RFC section:
>
>
> https://wiki.php.net/rfc/php7_foreach#additional_behavoir_change
>
> Trivial implementation on top of the main patch:
>
> https://gist.github.com/dstogov/63b269207ba0aed8b776
>
> and an additional proposed voting question.
>
> Also, the implementation now must be almost complete.
I built your branch and applied Nikita's patch as well and ran it
through my benchmark box here. Before -> After numbers in requests/sec:
Drupal8-b4 182 -> 184
Wordpress-4.1 661 -> 675
phpbb-3.1.2 1071 -> 1084
Mediawiki-1.24.1 304 -> 306
Opencart-2.0.1.1 458 -> 459
WardrobeCMS-1.2.0 993 -> 999
Geeklog-2.1.0 823 -> 825
Traq-3.5.2 1869 -> 1902
So about a 1% boost across the board except for Opencart, but it spends
most of its time creating sessions on disk and writing to MySQL.
No obvious visible things broke in any of these. Overall, even without
the performance boost, I think making the edge-case foreach behaviour
consistent and predictable is a good thing on its own.
-Rasmus
Attachment: [application/pgp-signature] OpenPGP digital signature signature.asc
Attachment: [application/pgp-signature] OpenPGP digital signature signature.asc