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

Регулярно возникают разговоры/переговоры/обсуждения с организаторами веб-проектов. Начало — традиционно скучно: «Надо сделать бэкенд на Laravel/PostgreSQL». Я неизменно перевожу разговор на архитектурные рельсы. Почему Laravel? Почему Postgres? Нет, я не против. Надо — сделаю. Хоть на Laravel, хоть на CodeIgniter, хоть на Yii, хоть на еще чем. Но объясните мне — почему? Традиционный ответ звучит так: «потому что Laravel — это скорость разработки, гибкий и понятный синтаксис, максимальная производительность». Откуда они это берут?

Сравнения php-фреймворков

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *