Ich arbeite an einem Projekt mit Zend Framework 1.11, Doctrine 2, einigen Symfony 2-Komponenten und anderen Tools und Bibliotheken.
Ich versuche, die Leistung mit Xdebug und Webgrind zu optimieren.
Ich habe bereits einige Engpässe wie das Parsen von Ini-Konfigurationen usw. gefunden und diese zwischengespeichert.
Jetzt stelle ich fest, dass die automatische Ladung der kostspieligste Teil meiner Anwendung ist:
Opl\Autoloader\ApcLoader->loadClass 274 31.36 43.86
Zend_Loader_PluginLoader->load 150 4.80 12.29
Zend_Loader_Autoloader->getClassAutoloaders 278 1.42 1.91
Zend_Controller_Router_Route_Regex->_getMappedValues 291 1.29 1.35
Doctrine\ORM\UnitOfWork->createEntity 85 1.24 3.18
Wie Sie sehen können, verwende ich nicht die Standard Zend_Loader_Autoloader
Ich benutze Opl
was, soweit ich weiß, schneller ist als das, benutze ich die classMapLoader
mit einem APC-Cache, aber es ist immer noch ein bisschen langsamer als der Rest der Anwendung.
Wie könnte ich das optimieren?
Ich habe etwa 250 Klassen geladen, und es sieht so aus, dass nur ~40 langsam sind, andere zeigen 0,00 als "Total call cost" an, aber andere steigen von 0,08 auf 0,57 bei dem erforderlichen Anruf.
Übrigens, seit ich den Opl-Autoloader verwende, sieht es so aus, als ob APC in meiner Produktionsumgebung nur die Dateien im Opcode-Cache speichert, die "manuell erforderlich" sind, und nicht diejenigen, die vom Autoloader aufgerufen werden.