Регулярно возникают разговоры/переговоры/обсуждения с организаторами веб-проектов. Начало — традиционно скучно: «Надо сделать бэкенд на Laravel/PostgreSQL». Я неизменно перевожу разговор на архитектурные рельсы. Почему Laravel? Почему Postgres? Нет, я не против. Надо — сделаю. Хоть на Laravel, хоть на CodeIgniter, хоть на Yii, хоть на еще чем. Но объясните мне — почему? Традиционный ответ звучит так: «потому что Laravel — это скорость разработки, гибкий и понятный синтаксис, максимальная производительность». Откуда они это берут?
Сравнения php-фреймворков
Если нужна скорость разработки, надо делать не на php
, а на RoR
. Простота — CodeIgniter
(да и по производительности он Laravel
обгоняет). Функциональность — Yii
. Максимальная производительность и минимальное потребление ресурсов — Phalcon
. Я в таких случаях даю ссылки на свой блог. Там, правда, последние бенчмарки были от 2015 года. И да, технологии не стоят на месте, надо следить за изменениями. Вот тесты от февраля 2017 года.
Что изменилось? Symfony
и Zend framework
обошли Laravel. Впрочем, все трое в хвосте рейтинга. Общий вывод прост — хотите производительность по обрабатываемым запросам в 15 раз (!) меньше (сто вместо более полутора тысяч запросов в секунду) — делайте свой бэкенд на Laravel
. Хотите — я вам сделаю за соответствующую оплату, мне не жалко. Как говорится, кто заказывает музыку… Но я все же задам свой традиционный вопрос — «Почему?»
На традиционное тоже замечание, что приведенные бенчмарки — это тесты «Hello World» — столь же банальный ответ. А что лучше отражает именно производительность чистых запросов, не замутненную другой функциональностью? Для других характеристик нужны другие тесты, а этот показывает именно скорость обработки запросов. И это — самое первое и самое главное, что характеризует работу именно бэкенда. Во многих случаях правильный выбор фреймворка может помочь не только снизить затраты на VDS/сервер
, но и избежать необходимости масштабирования.
Администраторам стоит обратить внимание на небольшой тюнинг ядра в тексте теста.
P.S.1 Можно заметить, что Lumen
(микро-фреймворк на базе Laravel
) отстает от Фалкона не в 15, а всего в 4 раза (ха!), обгоняя Yii
. Но ведь и у Phalcon
есть конфигурация микро-фреймворка. Полагаю, и на этом поле сравнение будет еще ярче.
P.S.2 Стоит еще напомнить сравнение ORM
, в котором фалконовский ORM
обгоняет Eloquent
(ORM
от Laravel
) почти в 5 раз.
P.S.3 Однажды встретился совсем экстремальный вариант ответа на вопрос, с которого я начал. Мне пришлось спросить — а почему вы вообще не используете никакой фреймворк, почему чистый php
? Ответ — «потому что чистый php быстрее». Не вспоминая даже о всей функциональности фреймворков, которую в этом случае придется изображать руками (и это вряд ли выйдет быстрее и лучше), в случае Phalcon
это просто неверно. Перенос части кода из php
в C
, разумеется, делает его быстрее.
P.S.4 Может показаться, что Phalcon уступил лидерство трем другим фреймворкам. На самом деле, обогнали его статические фреймворки. Вряд ли их вообще стоило включать в сравнение, это совсем другое поле.