Какая веб-платформа быстрее?
Существует множество серверных веб-фреймворков для разных языков программирования. У каждого из них есть свои преимущества и недостатки. И ответить на вопрос «Какой фреймворк лучше?» — непростая задача.
Но мы можем взглянуть на эту тему с разных сторон. А производительность — это простая метрика (но только одна из многих), которую можно измерить и которая дает ответ на вопрос «какая структура быстрее?»
Нашел интересный проект, цель которого, попытаться измерить производительность различных веб-стеков, когда они выходят из коробки, без добавления кода.
Полученные результаты
Тестирование проводилось с помощью инструмента ApacheBench
, выполняющего 10 тыс. запросов с уровнем параллелизма 10 .
ab -n 10000 -c 10 http://127.0.0.1:port
Таблица того, что получилось:
Framework | Web Server | Затарачено | В секунду | На запрос | Самый длинный |
---|---|---|---|---|---|
Express | Node.js/http | 5.7s | 1744.5 | 5.7 ms | 184 ms |
Flask | waitress | 9.0s | 1109.6 | 9.0 ms | 130 ms |
Sinatra | Puma 5.4 | 16.4s | 608.8 | 16.4 ms | 239 ms |
Django | WSGIServer | 21.9s | 455.7 | 21.9 ms | 62 ms |
Rails | Puma 5.4 | 138.4s | 72.2 | 138.4 ms | 1171 ms |
Laravel | nginx | 378.5s | 26.4 | 378.5 ms | 1042 ms |
Вы можете проверить это сами
Чтобы выполнить тесты самостоятельно, вам необходимо запустить проект:
https://github.com/alchaplinsky/wfpc
с помощью Docker, поэтому убедитесь, что приложение Docker установлено на вашем компьютере.
git clone https://github.com/alchaplinsky/wfpc.git
cd wfpc
docker compose up
Провести тесты:
ab -n 10000 -c 10 http://127.0.0.1:port
Попробовал, работает. Надеюсь, это было полезным.
Из этого списка с Flask в основном работал. Возможно в Docker стоит поместить ещё и другие?
А вот тут (на этом сайте), надо переделать, таблицу.
Собственно в панели администрации мы заменили таблицу дивами, думаю, — не верно. ИМХО, лучше описать таблицу, тогда её можно использовать и в тексте (сейчас стилей нет) и упростить
admin.css
, может быть убрать этот файл.И вообще, не надо заменять теги html, которые есть.
Если таблица есть, то пусть она и останется, мы просто опишем её один раз и забудем. Необходимо переделать сие дело. А пока, пару строк добавил, чтобы не в куче было.
P.S. Laravel опять обидели демоны такие. Ух… И хвалят и ругают, и намекают, показывают и скрывают данные. Вот тут на счет успеха Laravel уж точно спорить не будут. )
Так лучше, выделить строки ещё.