Очередные сравнения php-фреймворков и ORM

06 Nov 2017

Регулярно возникают разговоры/переговоры/обсуждения с организаторами веб-проектов. Начало - традиционно скучно: “Надо сделать бэкенд на 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 уступил лидерство трем другим фреймворкам. На самом деле, обогнали его статические фреймворки. Вряд ли их вообще стоило включать в сравнение, это совсем другое поле.

Размещено with :