On 9/23/07, Stanislav Malyshev <[EMAIL PROTECTED]> wrote: > > What is a compiled variable? > > How does it differ from a non-compiled-variable? > > When engine encounters variable like $a what it usually does is it looks > up current symbol table for an entry named 'a', and then takes zval* > sitting there. However, since during the same scope the entry for $a > will be the same (though not a value sitting there!), once found in can > be stored so future calls to $a will not require looking up in the hash > table. That's what CVs do. The reason, of course, is performance :)
OK, so its a bit of caching. So it sounds like it stores a pointer into the symbol table, so that if $a is redefined it will still be correct. What happens if the symbol table must be rehashed? Does it still work, or does it look it up again? Is there a single CV for each $a in a scope, or is there one per bytecode operand? In other words, in a function which uses $a a lot, does it look it up for each bytecode which uses $a, or only once for that function? Thanks for the quick response, Paul -- Paul Biggar [EMAIL PROTECTED] -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php