2015-09-16 3 views
2

Я скомпилировал расширение twig для моего PHP/IIS (5.6.11, nts, x86) и успешно активировал его: я вижу его в phpinfo().Twig: скомпилированная производительность расширения C

Но это абсолютно не влияет на производительность, ни в режиме разработки, ни на производстве, тогда как у меня есть коллекция сотен форм Symfony2 (которые используют Twig много).

Что такое прецедент или есть что-то еще?

+0

Загружает ли PHP Twig из расширения PHP из ваших файлов? Вы настроили это? (это наивные вопросы, я не знаю этого предмета) –

+0

Согласно http://twig.sensiolabs.org/doc/installation.html, «И теперь Twig автоматически скомпилирует ваши шаблоны, чтобы воспользоваться преимуществами C. Обратите внимание, что это расширение не заменяет PHP-код, но предоставляет только оптимизированную версию метода Twig_Template :: getAttribute(). " поэтому он должен быть автоматическим – Rolintocour

+0

Я также обнаружил, что метод getAttribute медленный, и я перегрузил шаблон из нескольких виджетов, чтобы избежать использования этого метода, и я жестко закодировал нужные мне атрибуты. Поэтому я думаю, что нужно увидеть разницу (например, для списка из 350 объектов, каждый объект, имеющий 3 входа => getAttributes, называется 1050 раз, поэтому я должен увидеть небольшое влияние). – Rolintocour

ответ

2

После включения расширения C вам необходимо очистить кеш-память Symfony, чтобы заставить Twig перекомпилировать все шаблоны. В противном случае оптимизированная версия не будет использоваться. Это единственное, что нужно для того, чтобы Twig использовал расширение.

Однако, если вы визуализируете формы Symfony, основное узкое место может быть расположено в системе форм, а не в доступе к атрибутам в Twig (тема формы Symfony использует очень мало доступа к атрибутам с системой Twig, она проходит почти все необходимые данные в качестве переменных в контексте).

Если вы столкнулись с проблемой производительности, правильным решением является профилирование вашего кода, чтобы узнать, где именно существуют узкие места, которые расскажут вам, где можно оптимизировать ситуацию. Один бесплатный инструмент для этого - Blackfire, сделанный SensioLabs, который очень прост в использовании (он не работает для серверов, работающих на Windows, хотя, возможно, вам не подходит, учитывая, что вы говорите, что используете IIS). Существуют и другие доступные альтернативы (например, XHProf).

+1

Обратите внимание, что в последних версиях Twig (начиная с версии 1.22.3) Twig учитывает доступность расширения C при вычислении ключа кэша для шаблона, поэтому кеш будет автоматически отменен при включении расширения C –

+1

. Обратите внимание, что Blackfire теперь работает и в Windows –

Смежные вопросы