Вопрос

Я рассматриваю Smarty как решение для создания шаблонов веб-приложений, и теперь меня беспокоит его производительность по сравнению с простым PHP.

На сайте Smarty говорится, что должно быть то же самое, однако я не смог найти никого, кто проводил бы настоящий сравнительный анализ, чтобы доказать правильность или ошибочность этого утверждения.

Кто-нибудь проводил сравнение Smarty и простого PHP?Или может быть попадались какие-то ресурсы по таким тестам?

Спасибо

Это было полезно?

Решение

Поскольку в конечном итоге Smarty компилирует и кэширует файлы шаблонов в собственный PHP-код, теоретической разницы в производительности действительно нет.Конечно, всегда будет некоторая потеря производительности из-за куска Smarty-кода, который необходимо каждый раз интерпретировать.

Другие советы

Возможно, вы также захотите воспользоваться новой библиотекой шаблонов, похожей на Smarty, под названием Двау

Только что нашел этот очень простой тест - вероятно, не очень значимый.

вот еще одно решение для шаблонов XSLT, вот мои тесты для одной из страниц, которые я конвертировал (это простая страница):

// with smarty (baseline)
    0.014 seconds

// with xsl/xslt-clientside
    0.008 seconds
    42% decrease in server stress

// with xsl/xslt-serverside
// this process would only be done if the users browser doesn't support client-side XSLT
    0.016 seconds
    14% increase in server stress

Это не для всех, но если вас больше всего волнует производительность :)

Кроме того, вы разрешаете клиенту кэшировать ваш шаблон.

вот пример того, что я делаю (это один из моих сайтов): http://pixao.com

и вот еще один пример на более крупном сайте: http://worldofwarcraft.com

до сих пор мне еще не приходилось сталкиваться с какими-либо препятствиями

Здесь тест движка шаблонов, который тестирует PHP против Smarty и многих других движков шаблонов. http://www.raintpl.com/PHP-Template-Engines-Speed-Test/

  • Для присвоения Twig - это быстрее, он составляю шаблон HTML для классов, поэтому он также быстрее выполняет больше, чем PHP включает!ИМХО тяжело (много файлов) и сложно, но очень быстро!

  • Для более быстрого цикла необходимо включить PHP, а вскоре после этого появится Rain, который очень прост, небольшой (1 файл) и быстрый.

Smarty генерирует код PHP для всех своих файлов шаблонов при их первом использовании, при условии, что он настроен правильно, и использует их, когда это возможно, вместо повторного анализа шаблонов.

Я использовал его некоторое время, и он был достаточно быстрым, но в конце концов я заменил его на простые файлы PHP, потому что это было немного ограничивающе (слишком много PHP4-измов).

Сам Smarty представляет собой довольно большую библиотеку...Если вы собираетесь использовать Smarty, я предлагаю вам использовать APC для кэширования скомпилированной версии.Это компенсирует довольно большой размер библиотеки Smarty...

Это зависит от того, как вы используете Smarty, потому что поток ваших страниц может изменять

Классический простой поток PHP:

  • Выход
  • Обработка данных $_REQUEST
  • Выход
  • Обработка запросов к базе данных
  • Выход
  • Обработка данных $_REQUEST
  • Выход
  • ...

Классический алгоритм Smarty:

  • Обработка всех данных $_REQUEST
  • Обработка всех запросов к базе данных
  • Вывести все

Если для этой страницы простой PHP потребовал 1,0 секунды, то страница Smarty также занимает 1,0 секунды.НО, если предположить, что вся обработка базы данных и $_request занимает 0,7 секунды.Обычный PHP начинает вывод напрямую, а версия Smarty начинает вывод через 0,7 секунды.Благодаря этому браузер может начать загрузку таблиц стилей и изображений быстрее.Отсутствие вывода также означает, что кнопка «Стоп» не действует.

Однако в Smarty вы можете вызывать функции и методы из шаблона.Задержка медленной части туда, где необходимы данные.

Есть капля-замена Smarty под названием Template Lite что намного легче по отношению к размеру файла библиотеки.Тем не менее, я использовал оригинальный Smarty в некоторых ситуациях с чрезвычайно высокой нагрузкой без необходимости замены этой библиотеки.

Судя по моему собственному опыту и неофициальным тестам, Smarty сам по себе не приводит к значительному снижению производительности.Однако, когда вы начинаете писать собственные плагины, дела идут под откос.

Шаблон Smarty компилируется и кэшируется как PHP, но собственный плагин всегда загружается и выполняется во время выполнения и всегда медленнее, чем запуск того же кода в обычном старом PHP-файле.Вы не заметите этого слишком сильно с помощью специального плагина форматирования строк, но вы обязательно увидите это при выполнении запросов к базе данных в плагине.

В целом, я очень рекомендую Smarty.Удаление отображения из PHP сделало наш код намного более читабельным и удобным в сопровождении.Вам просто нужно быть осторожным с тем, что вы добавляете в плагины.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top