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 -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php