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