(I'm not questioning that APC makes an enormous difference. That's painfully obvious from 100 miles away on our servers (: )
On Thu, May 24, 2012 at 11:23 AM, Tom Boutell <t...@punkave.com> wrote: > I've seen this statement before about the impact of caching the actual > compilation (or mere tokenization?) to bytecode being very small > compared to the impact of avoiding disk access. I am curious if there > are any measurements breaking this down. Read-only access to code in > files already buffered by the OS (not files read for the first time) > ought to be very fast. > > On Tue, May 22, 2012 at 11:00 AM, Richard Lynch <c...@l-i-e.com> wrote: >> On Wed, May 9, 2012 5:05 pm, Xin Tong wrote: >> >>> I am new to php runtime. i am doing some research on runtime >>> interpreter. can anyone please tell me where the interpreter of the >>> php runtime is ? which file ? and does the php runtime has a JIT >>> compiler ? >> >> I believe the interpreter is built out of bison/yacc files, so you >> could start with those to find out where they put it. >> >> The php runtime is a JIT parser/compiler to a bytecode, which is then >> run by the Zend Engine (see above). >> >> Actually, that last statement might imply the the zend directory would >> also be a good place to look. >> >> Finally, it should be noted that APC and other caching mechanisms save >> a great deal of time by not hitting the disk to load the script, but >> keeping it in RAM, if possible. >> >> As "gravy" on top of that, the bytecode is saved in cache instead of >> source, so it is not a JIT if one of those caches is in use. >> >> Psuedo code to describe the difference the APC (or other cache) makes: >> >> >> //save hitting the hard disk >> if ( $source_code = in_cache($path)){ >> } >> else{ >> //super-duper slow!!! >> $source_code = file_get_contents($path); >> } >> $bytecode = zend_parse($source_code); >> zend_execute($bytecode); >> >> //save hitting the hard disk >> //and a small bonus, cache the bytecode, not source: >> >> if ($bytecode = in_cache($path)){ >> //do nothing >> } >> else{ >> $source_code = file_get_contents($path); >> $bytecode = zend_parse($source_code); >> } >> zend_execute($bytecode); >> >> >> The savings from parsing is chump change compared to disk I/O. >> >> It's also trivial chump change to implement. >> >> Ever ounce counts :-) >> >> -- >> brain cancer update: >> http://richardlynch.blogspot.com/search/label/brain%20tumor >> Donate: >> https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FS9NLTNEEKWBE >> >> >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > > > -- > Tom Boutell > P'unk Avenue > 215 755 1330 > punkave.com > window.punkave.com -- Tom Boutell P'unk Avenue 215 755 1330 punkave.com window.punkave.com -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php