Итак очередная часть моего тестирования фреймворков. Разобрался с созданием простого приложения на #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
@semasping Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
semasping, on1x
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!
@semasping Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@semasping Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп