mirror of https://github.com/tiangolo/fastapi.git
🌐 Add Russian translation for `docs/ru/docs/benchmarks.md` (#9271)
* del docs/ru/docs/contributing.md
* ru translate for */docs/ru/docs/project-generation.md
* docs/ru/docs/benchmarks.md
* 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks
* Delete project-generation.md
* Update benchmarks.md
* Update benchmarks.md
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
3eac0a4a87
commit
221b22200a
|
|
@ -0,0 +1,37 @@
|
||||||
|
# Замеры производительности
|
||||||
|
|
||||||
|
Независимые тесты производительности приложений от TechEmpower показывают, что **FastAPI** под управлением Uvicorn <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">один из самых быстрых Python-фреймворков</a> и уступает только Starlette и Uvicorn (которые используются в FastAPI). (*)
|
||||||
|
|
||||||
|
Но при просмотре и сравнении замеров производительности следует иметь в виду нижеописанное.
|
||||||
|
|
||||||
|
## Замеры производительности и скорости
|
||||||
|
|
||||||
|
В подобных тестах часто можно увидеть, что инструменты разного типа сравнивают друг с другом, как аналогичные.
|
||||||
|
|
||||||
|
В частности, сравнивают вместе Uvicorn, Starlette и FastAPI (среди многих других инструментов).
|
||||||
|
|
||||||
|
Чем проще проблема, которую решает инструмент, тем выше его производительность. И большинство тестов не проверяют дополнительные функции, предоставляемые инструментом.
|
||||||
|
|
||||||
|
Иерархия инструментов имеет следующий вид:
|
||||||
|
|
||||||
|
* **Uvicorn**: ASGI-сервер
|
||||||
|
* **Starlette** (использует Uvicorn): веб-микрофреймворк
|
||||||
|
* **FastAPI** (использует Starlette): API-микрофреймворк с дополнительными функциями для создания API, с валидацией данных и т.д.
|
||||||
|
|
||||||
|
* **Uvicorn**:
|
||||||
|
* Будет иметь наилучшую производительность, так как не имеет большого количества дополнительного кода, кроме самого сервера.
|
||||||
|
* Вы не будете писать приложение на Uvicorn напрямую. Это означало бы, что Ваш код должен включать как минимум весь
|
||||||
|
код, предоставляемый Starlette (или **FastAPI**). И если Вы так сделаете, то в конечном итоге Ваше приложение будет иметь те же накладные расходы, что и при использовании фреймворка, минимизирующего код Вашего приложения и Ваши ошибки.
|
||||||
|
* Uvicorn подлежит сравнению с Daphne, Hypercorn, uWSGI и другими веб-серверами.
|
||||||
|
|
||||||
|
* **Starlette**:
|
||||||
|
* Будет уступать Uvicorn по производительности. Фактически Starlette управляется Uvicorn и из-за выполнения большего количества кода он не может быть быстрее, чем Uvicorn.
|
||||||
|
* Зато он предоставляет Вам инструменты для создания простых веб-приложений с обработкой маршрутов URL и т.д.
|
||||||
|
* Starlette следует сравнивать с Sanic, Flask, Django и другими веб-фреймворками (или микрофреймворками).
|
||||||
|
|
||||||
|
* **FastAPI**:
|
||||||
|
* Так же как Starlette использует Uvicorn и не может быть быстрее него, **FastAPI** использует Starlette, то есть он не может быть быстрее Starlette.
|
||||||
|
* FastAPI предоставляет больше возможностей поверх Starlette, которые наверняка Вам понадобятся при создании API, такие как проверка данных и сериализация. В довесок Вы ещё и получаете автоматическую документацию (автоматическая документация даже не увеличивает накладные расходы при работе приложения, так как она создается при запуске).
|
||||||
|
* Если Вы не используете FastAPI, а используете Starlette напрямую (или другой инструмент вроде Sanic, Flask, Responder и т.д.), Вам пришлось бы самостоятельно реализовать валидацию и сериализацию данных. То есть, в итоге, Ваше приложение имело бы такие же накладные расходы, как если бы оно было создано с использованием FastAPI. И во многих случаях валидация и сериализация данных представляют собой самый большой объём кода, написанного в приложениях.
|
||||||
|
* Таким образом, используя FastAPI Вы потратите меньше времени на разработку, уменьшите количество ошибок, строк кода и, вероятно, получите ту же производительность (или лучше), как и если бы не использовали его (поскольку Вам пришлось бы реализовать все его возможности в своем коде).
|
||||||
|
* FastAPI должно сравнивать с фреймворками веб-приложений (или наборами инструментов), которые обеспечивают валидацию и сериализацию данных, а также предоставляют автоматическую документацию, такими как Flask-apispec, NestJS, Molten и им подобные.
|
||||||
|
|
@ -74,6 +74,8 @@ nav:
|
||||||
- deployment/versions.md
|
- deployment/versions.md
|
||||||
- history-design-future.md
|
- history-design-future.md
|
||||||
- external-links.md
|
- external-links.md
|
||||||
|
- benchmarks.md
|
||||||
|
- help-fastapi.md
|
||||||
- contributing.md
|
- contributing.md
|
||||||
markdown_extensions:
|
markdown_extensions:
|
||||||
- toc:
|
- toc:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue