Ardzoweb solutions

Сравнение производительности PHP-фреймворков

К списку статей Сравнение производительности PHP-фреймворков

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

Как проводилось тестирование

Использовался один и тот же компьютер и ПО: Apache 2.4, PHP 5.6.16 (7.2 для некоторых фреймворков).
Фреймворк устанавливался текущий/последний (дата тестирования 05.10.2018). Если разработчик фреймворка предполагал установку через composer, то версия выбиралась автоматически; если через архив, скачивался новейший архив с официального сайта.
Для тестирования использовалась заставочная стартовая страница фреймворка - обычно это простая HTML-страница, не вызывающая нагрузку. Если это было невозможно, создавалась простая (пустая) страница.
Подключение к БД не использовалось, в ином случае это указано отдельно.
Время выполнения скрипта измерялось через PHP-функцию microtime(), и рассчитывалась разница значений. Делалось многократное измерение времени, значение усреднялось.
Максимальный объем памяти, выделяемый скрипту определялся через PHP-функцию memory_get_peak_usage().
Размер фреймворка рассчитывался как размер распакованных файлов сразу после установки.

Результаты

Фреймворки отсортированы по алфавиту, но вы можете сортировать их в любом порядке, кликнув по заголовку столбца.

# Название Время, мс Память, МБ Размер, МБ Версия Дополнения, условия
CakePHP 190 8.25 20 -
CodeIgniter 30 1.37 4.8 3.2.0
CodeIgniter 50 2.29 4.8 3.2.0 С подключением к БД
Fat-Free 20 1.29 0.6 3.6.4
FuelPHP 100 3.88 9.5 1.8.1
Laravel 280 8.88 28 5.4.30 Выборка из БД практически не влияет.
Laravel 180 7.65 30 5.7.0 PHP 7
Lumen 50 2.85 23 - PHP 7, т.к. это требование фреймворка.
Nette 120 5.04 2 2.4
Nette 150 7.28 2 2.4 С подключением к БД
PHPixie 310 3.01 3.5 3.7.1
SBS "Web-Pro" 35 1.21 0.9 6.12.4
Silex 70 2.67 3.5 - Чистая установка
Silex 130 4.09 23 - Установка типа Skeleton
Slim 40 1.69 0.6 -
Symfony 240 8.98 34 3.4.17
Symfony 400 12.21 68 4.1.6 Установка Web skeleton. PHP 7, т.к. он требуется данной версии.
Symfony 90 3.05 8 4.1.6 Установка Micro skeleton. PHP 7, т.к. он требуется данной версии.
YII 200 6.46 65 2.0.14
Zend 440 5.97 6 - Вариант MVC Skeleton Application.

Выводы

Выводы неутешительны. Скорость работы и размеры некоторых фреймворков составляют довольно внушительные значения. Неудивительно, что последнее время многие сайты стали "тяжелыми", и владельцев сайтов часто беспокоит вопрос скорости загрузки, нагрузки на хостинг и т.п. Ведь если уже пустой сайт весит десятки мегабайт и работает медленно, то что ожидать тогда, когда он обрастёт скриптами и заполнится данными!

Нужно понимать, что кроме прочего влияние могут оказывать ещё и шаблонизаторы, которые здесь не проявили себя - это может быть дополнительное снижение скорости. Есть и другие нагрузочные элементы. Здесь же было показано начальное поведение "пустых" движков.

Стремление к быстрой разработке, корпоративные правила, а иногда и просто лень склоняют разработчиков к использованию "тяжелых" движков, где уже многое включено, мало что нужно дописывать и додумывать. Тем не менее, часто можно найти лучшую альтернативу, пусть даже в таком случае понадобится затратить больше усилий на разработку.

© 2018 Richter
Перепечатка только с разрешения автора
Наверх