On 04/05/2016 12:04 PM, Derick Rethans wrote:
On Tue, 5 Apr 2016, Dmitry Stogov wrote:

I propose a micro optimization for RETURN statement.

Currently "return $x" increments reference counter of $x, then in
zend_leave_helper() we perform zval_ptr_dtor() on the same $x.

The patch sets the original value of $x to null in first place, so
zval_ptr_dtor() is not going to be called.

https://gist.github.com/dstogov/36f68b206242a39691ac539c2fc85d40

the performance impact is invisible (0.1% less instruction retired on
Wordpress).

It breaks sapi/phpdbg/tests/breakpoints_005.phpt, but this is probably
not a big deal.

BTW: this change may affect debuggers in some other way.
I'd like to know why this breaks before saying something. It'd be a PITA
if this micro optimisation wouldn't actually do a lot performance wise,
but makes some debugging not possible.
Actually, the patch has a bug.
It doesn't take into account that "return $x;" might be used in global scope.
Setting $x to NULL in this case isn't right, of course.

Introducing another check would probably negate the effect of micro-optimization.

So, ignore this for now, and sorry for noise.

Thanks. Dmitry.



cheers,
Derick


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

Reply via email to