Hi Michael,

Thanks a lot for your email! I must confess to, for once, not checking the 
web first and looking other products. I hadn't come across any others and 
was just aware of the Zend offering, hence putting together the accelerator. 
Now things are suddenly more interesting :-)

I would be suprised if the accelerator didn't come bottom of the performance 
tables at the moment compared to the others to be honest. Seeing as I hadn't 
looked at a line of php-4.0.6/Zend code before last Monday, the first 
milestone was merely to get something that worked at all :-) 6 days later I 
reached the first version that ironed out all showstoppers that I'm aware 
of. Intellectual exercise? Of course, what else, but the reason was that I 
needed a cache. Had I looked at the others then... well I'd have probably 
still started anyway having seen Zend outstripping the others <g>

Looking at the performance stats from John Lim back in January, it seems 
likely that all non-Zend caches are missing a fundamental trick or two. What 
do you think? For example, and this may be poor one because apc,bw,bez might 
all be doing this in one way or another, but when restoring a compiled file 
it can be that only a fraction of the functions/methods, and even entire 
classes are ever used. Loading the never used functions and classes and 
restoring unused static vars initialisers would quite literally be a waste 
of time.

Another thing that comes to mind is that you probably want to ensure that 
the usual cleaning up of memory that Zend does actually *doesn't* happen 
quite as completely as it does by default. I actually ask myself - do I want 
to restore compiled code from shared memory? Do I event want to restore 
compiled code from web server memory? And the answer is ideally no to both. 
And of course I don't want to restore from files. Bottom line, I actually 
don't want to *restore anything* if it requires any memory copying. Ideally 
I'd like the same hashtables, same function pointers, same static_variables, 
etc. etc. that were used last time a page was loaded. Not *copies of* these 
things.

My ultimate goal, if I were making this a full time project, would be to 
'get' all the state I needed by a single lookup for the value of 
compiler/executor_globals using the i-number for the root source file in a 
devno specific structure. No copying of anything. Of course this might be 
unrealistic, but I'd want to know why, and focus not just how can I speed 
things up, but how can I eliminate what is slowing me down!

Another part of the engine that seems 'fair game' is the executor. One might 
perhaps reduce the size of CG(class_table) and CG(function_table) for 
example by switching between tables that contain just the likely or 
reachable items from certain points in the code. It's also possible to 
hijack what would normally be fatal errors, regard them as faults rather 
like a page fault, patch up what caused the error on the fly, such as a 
function lookup failure, and carry on as though nothing happened. Again, 
perhaps other cache developers are getting mileage from this, or perhaps 
there is no mileage in this, or perhaps there is and they are not?

And then there's a zend_op->C->nativecode.so optimiser that produces .so 
files of your scripts when there's nothing else better to be getting on with 
:-)

Nick

>From: Michael Kimsal <[EMAIL PROTECTED]>
>To: PHP Accelerator <[EMAIL PROTECTED]>
>CC: [EMAIL PROTECTED]
>Subject: Re: [PHP] Free PHP runtime Accelerator for Linux available
>Date: Tue, 21 Aug 2001 09:27:53 -0400
>
>
>Hello Nick,
>
>First off, thanks for your contribution.  We've not tested it as of yet,
>but it's
>always good to see more people getting involved at some level.  :)
>
>Second, have you compared the mechanism(s) you use against APC or bware?
>Have you considered perhaps helping with one of those projects instead of
>starting from scratch?  It sounds like this was primarily an
>intellectual exercise for you
>to begin with, so I can understand the DIY mindset.  However, if you've
>got many ideas
>for improving things further (PHP code optimization, reduced CPU time,
>etc) perhaps
>helping out with a more established project would benefit everyone more
>in the long run.
>
>Just some thoughts.  :)
>
>Thanks again
>
>
>Michael Kimsal
>http://www.tapinternet.com/php/
>PHP Training Courses
>734-480-9961
>
>
>
>--
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>To contact the list administrators, e-mail: [EMAIL PROTECTED]
>


_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to