I've auto-generated a list of Framework *core* files that prematurely load their Exception classes and put it on the Wiki: http://framework.zend.com/wiki/display/ZFDEV/Lazy-loading+Exceptions
The list is quite long (176 files!) so I didn't start putting it into
JIRA - perhaps there's a more efficient way than doing that manually...
I do see some of my own files in the list - so I know I'm going to work
on fixing my stuff. Others should do the same I guess.
Shahar.
On Thu, 2007-12-13 at 15:35 -0500, Darby Felton wrote:
> Shahar Evron wrote:
> > A while back ago there was an attempt to eliminate the loading of unused
> > Exception files / classes by different ZF components. I don't know what
> > happened with that discussion, but I think we should do something about
> > it.
> >
> > I've made some profiling of relatively simple ZF-based app (doesn't load
> > too many components - mostly the MVC, DB, Config, Registry etc. stuff)
> > and I've found some 10 calls to require_once to load an Exception class
> > without having a single exception thrown (that I know of - unless some
> > ZF code threw an exception and some other ZF component caught it).
> >
> > 10 redundant include files have quite an impact on performance,
> > especially in places where you have no opcode cache installed.
> >
> > A while back ago I changed Zend_Http_Client to require_once it's
> > exception classes only when about to throw an exception, something like:
> >
> > <?php
> > if ($error_happened) {
> > require_once 'Zend/Http/Client/Exception.php';
> > throw new Zend_Http_Client_Exception('Good news, everyone!');
> > }
> > ?>
> >
> > Now this might seem a bit cumbersome - but when considering the fact
> > that it's 1 line of code that never gets executed vs. always loading at
> > least one aditional file (not to mention cases where you load
> > Zend/Http/Client/Adapter/Exception.php which loads
> > Zend/Http/Client/Exception.php which loads Zend/Http/Exception.php which
> > loads Zend/Exception.php - you get the point) I think it's worth it.
> >
> > If nobody has a nicer solution to this overweight problem, I suggest all
> > component maintainers will start doing the same (this is not my idea and
> > I know some already do so).
> >
> > If you want, I can try to come up with a list of places that need to be
> > fixed.
>
> Yes, please, such a list would be very helpful. Would you mind adding
> this as list to a new JIRA issue? I'm pretty sure that in the case of
> Exception class derivatives, it is decidedly best practice to lazy-load
> the class files just before throwing an exception. They are exceptions,
> after all, and should only be needed and loaded in exceptional situations.
>
> Thanks, Shahar!
>
> Best regards,
> Darby
>
> >
> > Better suggestions are most welcome!
> >
> > Thanks,
> >
> > Shahar.
> >
--
Shahar Evron [EMAIL PROTECTED]
Technical Consultant
Zend Technologies
Mobile: +972 54 30 99 446
Office: +972 3 75 39 500 ext. 9546
signature.asc
Description: This is a digitally signed message part
