У меня есть приложение symfony2, которое отображает около 6000 объектов базы данных.
Я оптимизировал запросы ORM (propel), и запросы к базе данных теперь очень быстрые. Остается контроллер Symfony и движок рендеринга шаблонов.
Есть ли способ ускорить рендеринг (например, переход на php-шаблоны?) Могу ли я получить более подробную информацию о профилировании, чем из профилировщика symfony?
Здесь выдержка из данных профилировщика.
Изменить: я профилировал свой код с помощью xDebug и обнаружил, что генерация объектов очень дорога. Создание тысяч объектов PHP из строк базы данных в PropelObjectFormater->getAllObjectsFromRow
занимает большую часть времени.
На изображении показана ветка, которая занимает 95% времени вычислений, что составляет ~ 2,8 секунды. Поиск базы данных занимает ~ 0,5 секунды, рендеринг - 1 секунду, а форматирование занимает больше всего времени ~ 1,5 секунды.
Я не уверен, какое влияние оказывает длина файла, содержащего класс PHP, но Propel генерирует много кода (у моего самого сложного базового класса объекта есть почти 10 тыс. Строк кода), поэтому это может замедлить создание объекта.
Я думаю, что использование форматера массива (таким образом, минуя шаг создания объекта) было бы решением, но это несколько портило цель ORM.