Thanks for benchmarks. This time I didn't see so good results myself :) I actually, started this work with performance in mind, but after understanding all existing incosistencies, think that consistency is more important.
Thanks. Dmitry. On Jan 31, 2015 11:18 AM, "Rasmus Lerdorf" <ras...@lerdorf.com> wrote: > 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 > >