Re: namespace improvements to be committed very soon - final review
| From: | Johannes Schlüter | Date: | Wed, 12 Dec 2007 13:05:13 +0000 |
| Subject: | Re: namespace improvements to be committed very soon - final review | ||
| References: | 1 2 3 | Groups: | php.internals php.internals |
| Request: | Send a blank email to internals+get-33970@lists.php.net to get a copy of this message | ||
On Tue, 2007-12-11 at 22:33 -0600, Gregory Beaver wrote:
> Any brackets adds another set of shift/reduce to the parser, regardless
> of how the syntax of the language is defined.
That's not all with that syntax.
<?php
{
class foo { }
}
?>
Leads to a delayed declaration which is done at run-time, not at
compile-time - this might have bigger performance issues than just the
shift/reduce in the parser - especially with opcode caches.
$ php53 -dvld.active=1 -dvld.execute=0 -r '{ class foo { }}'
Branch analysis from position: 0
Return found
filename: Command line code
function name: (null)
number of ops: 5
compiled vars: none
line # op fetch ext return
operands
-------------------------------------------------------------------------------
1 0 NOP
1 EXT_STMT
2 ZEND_DECLARE_CLASS null
'%00fooCommand+line+code0x998387c', 'foo'
3 RETURN
null
4* ZEND_HANDLE_EXCEPTION
Class foo: [no user functions]
vs.
$ php53 -dvld.active=1 -dvld.execute=0 -r 'class foo { }'Branch analysis
from position: 0
Return found
filename: Command line code
function name: (null)
number of ops: 4
compiled vars: none
line # op fetch ext return
operands
-------------------------------------------------------------------------------
1 0 EXT_STMT
1 NOP
2 RETURN
null
3* ZEND_HANDLE_EXCEPTION
johannes