Оптимизация производительности

Я работаю над проектом с Zend Framework 1.11, Doctrine 2, некоторыми компонентами Symfony 2 и другими инструментами и библиотеками.

Я пытаюсь оптимизировать производительность с помощью Xdebug и Webgrind.

Я уже нашел некоторые узкие места, такие как парсинг Ini config и т.д.. и кэшировал их.

Теперь я понял, что автозагрузка - самая затратная часть моего приложения:

    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 как "Total call cost", но другие увеличиваются от 0,08 до 0,57 на вызове require.

Кстати, после использования автозагрузчика Opl, похоже, что на моем производственном окружении APC кэширует только те файлы, которые "требуются вручную", а не те, которые вызываются автозагрузчиком.

6
задан hakre 19 December 2011 в 11:07
поделиться