Выбирая шаблонизатор для нового PHP-фреймворка Comet, я решил сравнить все популярные в PHP-коммьюнити движки. Вот такой список получился: Smarty : https://github.com/smarty-php/smarty Plates : https://github.com/thephpleague/plates Mustache : https://github.com/bobthecow/mustache.php Twig : https://github.com/twigphp/Twig Blade : https://github.com/jenssegers/blade BladeOne : https://github.com/EFTEC/BladeOne Latte : https://github.com/nette/latte Так выглядит шаблон на Twig: HTML: <html><head></head><body> {% for message in data %} <p>{{ message.code }} : {{ message.message }}</p> {% endfor %} </body></html> А это Blade: HTML: <html><head></head><body> @foreach ($data as $message) <p>{{ $message->code }} : {{ $message->message }}</p> @endforeach </body></html> Тесты прогонялись в контейнере Ubuntu 20.04 / PHP 7.4 / Comet 0.6 на виртуалке с 4 ядрами Ryzen 3600 и 4G памяти: wrk --connections=500 --threads=2 --duration=10s http://comet:8080/php Получился такой расклад, каждый график отражает среднее количество успешно отработанных за одну секунду запросов:
Выглядит довольно неожиданно. Можно посмотреть на весь код? Интересно насколько велико влияние всего что кроме шаблонизатора на конечный результат.
да, да... непонятна методика подсчета? что за запросы в секунду? Мне кажется шаблонизаторы другими качествами обладают. Например скоростью отрисовки определенного шаблона, причем для разных шаблонов возможно по разному и скорость будет (например шаблон с foreach на 100 элементов, шаблон с 10 условиями, смешанный шаблон с условиями и циклами, еще что-то) Результат насчет победы чистого php неудивителен, ведь все шаблонизаторы написаны именно на php и являются надстройкой - поэтому вряд ли их скорость может превышать скорость самого php, но насчет скорости среди шаблонизаторов - довольно странно
Текущие тесты раскритиковали за простоту, планирую добавить наследование шаблонов, фильтры и запостить на GitHub уже более сложные версии, разница по цифрам должна быть больше. Также сильно влияет архитектура самого Comet - он работает как веб-сервер с предварительной загрузкой всех классов в память. Традиционные PHP-FPM приложения будут и медленнее работать в целом и негативно влиять на более тяжелые и сложные шаблонизаторы.