我正在使用 Zend Framework 1.11、Doctrine 2、一些 Symfony 2 组件和其他工具和库来开发一个项目。
我正在尝试使用 Xdebug & Webgrind 优化性能。
我已经发现了一些瓶颈,比如解析 Ini 配置等。并将其缓存起来。
现在,我才意识到自动加载是我的应用程序中最昂贵的部分:
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
正如您所看到的,我没有使用默认值Zend_Loader_Autoloader
,我正在使用Opl
它,据我所知,它比它更快,我正在使用classMapLoader
APC 缓存,但与应用程序的其余部分相比它仍然有点慢。
我该如何优化呢?
我已经加载了大约 250 个类,看起来只有 ~40 个很慢,其他显示 0,00 为“总调用成本”,但其他在 require 调用中从 0,08 增加到 0,57。
顺便说一句,由于使用了 Opl 自动加载器,看起来在我的生产环境 APC 上只有操作码缓存“手动需要”的文件,而不是自动加载器调用的文件。