За последние 24 часа нас посетили 21568 программистов и 1029 роботов. Сейчас ищут 797 программистов ...

Самый быстрый шаблонизатор для PHP

Тема в разделе "PHP для новичков", создана пользователем gotzmann, 1 июн 2020.

  1. gotzmann

    gotzmann Новичок

    С нами с:
    1 июн 2020
    Сообщения:
    2
    Симпатии:
    0
    Выбирая шаблонизатор для нового 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:
    1.     {% for message in data %}
    2.         <p>{{ message.code }} : {{ message.message }}</p>
    3.     {% endfor %}
    4. </body></html>
    А это Blade:

    HTML:
    1.     @foreach ($data as $message)
    2.         <p>{{ $message->code }} : {{ $message->message }}</p>
    3.     @endforeach
    4. </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

    Получился такой расклад, каждый график отражает среднее количество успешно отработанных за одну секунду запросов:

    [​IMG]
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Выглядит довольно неожиданно. Можно посмотреть на весь код? Интересно насколько велико влияние всего что кроме шаблонизатора на конечный результат.
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    да, да... непонятна методика подсчета? что за запросы в секунду? Мне кажется шаблонизаторы другими качествами обладают.
    Например скоростью отрисовки определенного шаблона, причем для разных шаблонов возможно по разному и скорость будет
    (например шаблон с foreach на 100 элементов, шаблон с 10 условиями, смешанный шаблон с условиями и циклами, еще что-то)

    Результат насчет победы чистого php неудивителен, ведь все шаблонизаторы написаны именно на php и являются надстройкой - поэтому вряд ли их скорость может превышать скорость самого php, но насчет скорости среди шаблонизаторов - довольно странно
     
  4. gotzmann

    gotzmann Новичок

    С нами с:
    1 июн 2020
    Сообщения:
    2
    Симпатии:
    0
    Текущие тесты раскритиковали за простоту, планирую добавить наследование шаблонов, фильтры и запостить на GitHub уже более сложные версии, разница по цифрам должна быть больше.

    Также сильно влияет архитектура самого Comet - он работает как веб-сервер с предварительной загрузкой всех классов в память. Традиционные PHP-FPM приложения будут и медленнее работать в целом и негативно влиять на более тяжелые и сложные шаблонизаторы.
     
  5. ElisDN

    ElisDN Активный пользователь

    С нами с:
    13 фев 2018
    Сообщения:
    605
    Симпатии:
    130
    Надеюсь, что тестировали в продакшен-режиме со включенным кешированием.