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.
> 

Reply via email to