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.
Better suggestions are most welcome!
Thanks,
Shahar.
--
Shahar.
signature.asc
Description: This is a digitally signed message part
