Найти в Дзене
Серьезный психолог

Сравнил популярные PHP фреймворки

Сегодня в одном из чатов разгорелся спор, о том можно ли использовать фреймворк Symfony для микросервисов. Ну я сказал нет.

Я сказал это потому, что мне кажется микросервисы, это маленькие программы, выполняющие одну функцию и они должны делать это как можно быстрее.

Мои данные конечно немного устарели, и вот даже на сайте Symfony говорят, что его можно использовать в двух режимах, полноценном для сайта, и модульном для микросервисов.

Я был уверен, что фреймворки вносят небольшой overhead в работу приложения, и чем этого overhead меньше, тем быстрее работает приложение, тем больше запросов в секунду приложение примет, в общем все будут счастливее.

Я сделал условное Hello Word приложение, чтобы просто отработал Router и показал простой текст.

$number = random_int(0, 100);
echo '<html><body>Lucky number: '.$number.'</body></html>';

вот такой код, показывает случайное число от 0 до 100. Все просто, ничего лишнего.

Тестирование проводил через утилиту

ab -c 50 -n 1000 -f TLS1.2 -H "Accept-Encoding: gzip,deflate" http://site.ru/hello/lucky

И результаты получились такими:

Clear PHP: 5269.29 [#/sec] (mean) x7.7
FatFreeFramework: 2835.15 [#/sec] (mean) x4.1
Slim: 1500.98 [#/sec] (mean) x2.2
Symfony: 1246.42 [#/sec] (mean) x1.8
Symfony --full: 685.56 [#/sec] (mean) x1
Laravel: 255.47 [#/sec] (mean) x0.37

Тут первый столбик, это название фреймворка, второй столбик количество запросов в секунду, третий столбик это скорость относительно фреймворка Symfony в режиме -full т.е. полноценный режим для сайта.

И да, если зарыться, чем больше возможностей фреймворка мы будем использовать, тем медленнее он будет работать, но тем быстрее мы будем писать код, и соответственно в чистом PHP тем сложнее нам будет писать код. В каждом конкретном случае, нужно смотреть что для нас имеет приоритет. Скорость приложения, количество серверов, т.е. бюджет на оборудование, скорость разработки, уровень разработчиков и т.п.