Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
semasping
7 лет назад

Тестирование PHP фреймворков. Часть 5. Laravel.

Итак очередная часть моего тестирования фреймворков. Разобрался с созданием простого приложения на #laravel. Структура приложения описана в части 2 . А для чего и почему я делаю эти приложения часть 1 и тут (еще и подробности обо мне).

Немного о фреймворке:

Официальный сайт: https://laravel.com/

Очень большое сообщество. Быстро развиваеться как сообщещество так и фреймворк. Огромное количество различных сервисов. И еще больше количество готовых пакетов на всякие случаи жизни.

Сайт на русском : https://laravel.ru/
Руководство по быстрому старту на русском: https://laravel.ru/docs/v5/quickstart

Для написания приложения использовал их официальную документацию и laracats по 5.4 - смотрятся очень легко и много просмотрел на второй скорости параллельно делая то что рассказывают.

В отдельной статье вкратце опишу процесс создания нужного мне функционала.

Создание простого сайта на Laravel.

Результаты тестов

Отдельный прогон только laravel.

|framework          |requests per second|relative|peak memory|relative|
|-------------------|------------------:|-------:|----------:|-------:|
|laravel-index      |               9.56|     inf|       6.17|     1.0|
|laravel-authors    |               7.23|     inf|       7.38|     1.2|
|laravel-categories |               6.44|     inf|       7.56|     1.2|
|laravel-posts      |               0.00|     nan|      17.73|     2.9|

Мы видим что время генерации начальной почти пустой страницы(laravel-index) не особо отличается от времени генерации других страниц. За секунду успевало сгенерироваться ~6-10 страниц. А вот генерация самой большой и сложной страницы - выборки всей 1000 постов с именами авторов и названиями типа поста и списком категорий - не уложилась в секунду.

Графики

Выполнено запросов в секунду.

Выполнено запросов в секунду.


Потребление памяти

Потребление памяти.


Время генерации страницы

Время генерации страницы.

Тут видно что генерация страницы laravel-posts выполнялась более 6 секунд.


Количество подключаемых файлов.

Количество подключаемых файлов.


Позже подключу сервис https://blackfire.io/ для профилирования запросов внутри и выяснения где какие происходят задержки.

|framework          |requests per second|relative|peak memory|relative|
|-------------------|------------------:|-------:|----------:|-------:|
|phalcon-index      |             309.99|     inf|       0.44|     1.0|
|phalcon-authors    |              31.18|     inf|       0.56|     1.3|
|phalcon-categories |              16.80|     inf|       0.57|     1.3|
|laravel-index      |               9.91|     inf|       6.17|    14.1|
|laravel-categories |               8.32|     inf|       7.56|    17.3|
|laravel-authors    |               8.26|     inf|       7.38|    16.9|
|phalcon-posts      |               0.07|     inf|       3.00|     6.9|
|laravel-posts      |               0.00|     nan|      17.65|    40.4|

Phalcon работает шустрее хотя времени генерации страниц так же увеличилось, но как я предположил в прошлой статье, в случае с phalcon это похоже на сложности с mysql. Позже мы это тоже выясним.
В большей степени мне интересно время генерации страницы с постами.

Phalcon-posts ~ 2.3s
Laravel-posts ~5.8s

С одной стороны разница всего в 2 раза. Много это или мало? Смотря для какого проекта. Для высоконагруженного проекта с миллионами посетителей в день это очень много. Но в таких проектах всегда используют кеширование данных. В дальнейшем я так же проведу тесты с подключенным кешированием. А так же опишу процесс его подключения.

Кроме этого для больших запросов нужна оптимизация настроек базы данных. Да и ее обновление на более новую версию не помешало бы:)
Но с этим у меня сложнее. Серверная часть пока не моя сильная сторона. Но все еще впереди.

Если есть какие-то не точности в моих изысканиях - прошу в комментарии.

Так же очень интересно посмотреть на результаты еще двух не менее известных фреймворков: Yii и Symfony.


В ближайших планах:

  • реализация тестового приложения и проведение тестов на Symfony
  • реализация тестового приложения и проведение тестов на Yii
  • Подключение кеширования для всех фреймворков
  • Подключение https://blackfire.io/
  • Разобраться с Docker и завернуть все это в него. Чтобы была возможность быстро развернуть на более мощном сервере для сравнения.

Весь код выложен на github: https://github.com/semasping/php_frameworks_for_tests

Спасибо за внимание и вашу поддержку. Так же можете поддержать меня в steemit: https://steemit.com/@semasping

15
0.354 GOLOS
На Golos с February 2017
Комментарии (4)
Сортировать по:
Сначала старые