On 04.05.2016 at 18:11, Andrea Faulds wrote:

> Since FAST_ZPP was implemented, many functions in built-in PHP
> extensions look like this:
>
> […]
>
> That is, they have /two/ sets of parameter processing code: one using
> the old API, and one using the new API, with conditional compilation.
> This is necessary because it is still possible to turn off FAST_ZPP by
> changing the value of the macro.
> 
> However, should that be the case? The FAST_ZPP RFC was approved and PHP
> 7.0 was released containing it enabled by default, so it's no longer
> just an experimental performance enhancement. 

It seems to me that the FAST_ZPP macro is not (only) to disable an
experimental feature, but rather to be able to reduce the size of the
built binaries.  I've just checked a `./configure --disable-all`:

  with FAST_ZPP:    16,651,912
  without FAST_ZPP: 16,276,152

That's a difference of 375,760 bytes, but only 2% increase.

> Furthermore, I have no
> reason to believe that the option to turn off FAST_ZPP is actually used
> in practice, though feel free to prove me wrong!

Perhaps that is so, because FAST_ZPP can't be turned of via ./configure.

> Requiring all usages of FAST_ZPP to be accompanied by a
> zend_parse_parameters() fallback creates code bloat. It also creates
> hidden, potentially build-breaking bugs, because the code is rarely
> built with FAST_ZPP disabled. It's like the old TSRMLS_CC situation.
> 
> Furthermore, for those who would prefer the FAST_ZPP API, it is
> inconvenient that they cannot use it exclusively and must also use
> zend_parse_parameters(), doubling the effort.

Valid points.

> So, I would like to ask: would there be any objections to going through
> and removing all unnecessary zend_parse_parameters fallbacks, and making
> it impossible to disable FAST_ZPP? This would make the two APIs equally
> valid.

All in all, I think that the benefits of using only one of the parameter
parsing APIs per function outweigh the drawbacks, so I'm +1 on the
removal of the FAST_ZPP macro.

-- 
Christoph M. Becker


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to