Сравнение производительности 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
Перепечатка только с разрешения автора
Наверх