-# Ð\97амеÑ\80Ñ\8b пÑ\80оизводиÑ\82елÑ\8cноÑ\81Ñ\82и
+# Ð\91енÑ\87маÑ\80ки
-Независимые тесты производительности приложений от 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). (*)
+Независимые бенчмарки (тесты производительности) от 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).
-Ð\9dо пÑ\80и пÑ\80оÑ\81моÑ\82Ñ\80е и Ñ\81Ñ\80авнении замеÑ\80ов пÑ\80оизводиÑ\82елÑ\8cноÑ\81Ñ\82и Ñ\81ледÑ\83еÑ\82 имеÑ\82Ñ\8c в видÑ\83 нижеопиÑ\81анное.
+Ð\9dо пÑ\80и пÑ\80оÑ\81моÑ\82Ñ\80е бенÑ\87маÑ\80ков и Ñ\81Ñ\80авнений Ñ\81ледÑ\83еÑ\82 Ñ\83Ñ\87иÑ\82Ñ\8bваÑ\82Ñ\8c Ñ\81ледÑ\83Ñ\8eÑ\89ее.
-## Ð\97амеÑ\80Ñ\8b пÑ\80оизводиÑ\82елÑ\8cноÑ\81Ñ\82и и Ñ\81коÑ\80оÑ\81Ñ\82и
+## Ð\91енÑ\87маÑ\80ки и Ñ\81коÑ\80оÑ\81Ñ\82Ñ\8c
-Ð\92 подобнÑ\8bÑ\85 Ñ\82еÑ\81Ñ\82аÑ\85 Ñ\87аÑ\81Ñ\82о можно Ñ\83видеÑ\82Ñ\8c, Ñ\87Ñ\82о инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82Ñ\8b Ñ\80азного Ñ\82ипа Ñ\81Ñ\80авниваÑ\8eÑ\82 дÑ\80Ñ\83г Ñ\81 дÑ\80Ñ\83гом, как аналогиÑ\87ные.
+Ð\9aогда вÑ\8b пÑ\80оÑ\81маÑ\82Ñ\80иваеÑ\82е бенÑ\87маÑ\80ки, Ñ\87аÑ\81Ñ\82о можно Ñ\83видеÑ\82Ñ\8c, как Ñ\81Ñ\80авниваÑ\8eÑ\82Ñ\81Ñ\8f неÑ\81колÑ\8cко инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82ов Ñ\80азнÑ\8bÑ\85 Ñ\82ипов как Ñ\8dквиваленÑ\82ные.
-В частности, сравнивают вместе Uvicorn, Starlette и FastAPI (среди многих других инструментов).
+Ð\92 Ñ\87аÑ\81Ñ\82ноÑ\81Ñ\82и, Ñ\87аÑ\81Ñ\82о Ñ\81Ñ\80авниваÑ\8eÑ\82 вмеÑ\81Ñ\82е Uvicorn, Starlette и FastAPI (Ñ\81Ñ\80еди многиÑ\85 дÑ\80Ñ\83гиÑ\85 инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82ов).
-Чем пÑ\80оÑ\89е пÑ\80облема, коÑ\82оÑ\80Ñ\83Ñ\8e Ñ\80еÑ\88аеÑ\82 инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82, Ñ\82ем вÑ\8bÑ\88е его пÑ\80оизводиÑ\82елÑ\8cноÑ\81Ñ\82Ñ\8c. Ð\98 болÑ\8cÑ\88инÑ\81Ñ\82во Ñ\82еÑ\81Ñ\82ов не пÑ\80овеÑ\80Ñ\8fют дополнительные функции, предоставляемые инструментом.
+Чем пÑ\80оÑ\89е пÑ\80облема, коÑ\82оÑ\80Ñ\83Ñ\8e Ñ\80еÑ\88аеÑ\82 инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82, Ñ\82ем лÑ\83Ñ\87Ñ\88е бÑ\83деÑ\82 его пÑ\80оизводиÑ\82елÑ\8cноÑ\81Ñ\82Ñ\8c. Ð\98 болÑ\8cÑ\88инÑ\81Ñ\82во бенÑ\87маÑ\80ков не Ñ\82еÑ\81Ñ\82иÑ\80Ñ\83ют дополнительные функции, предоставляемые инструментом.
-Ð\98еÑ\80аÑ\80Ñ\85иÑ\8f инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82ов имееÑ\82 Ñ\81ледÑ\83Ñ\8eÑ\89ий вид:
+Ð\98еÑ\80аÑ\80Ñ\85иÑ\8f вÑ\8bглÑ\8fдиÑ\82 Ñ\81ледÑ\83Ñ\8eÑ\89им обÑ\80азом:
* **Uvicorn**: ASGI-сервер
- * **Starlette** (использует Uvicorn): веб-микрофреймворк
- * **FastAPI** (использует Starlette): API-микрофреймворк с дополнительными функциями для создания API, с валидацией данных и т.д.
+ * **Starlette**: (использует Uvicorn) веб-микрофреймворк
+ * **FastAPI**: (использует Starlette) API-микрофреймворк с несколькими дополнительными возможностями для создания API, включая валидацию данных и т.д.
* **Uvicorn**:
- * Будет иметь наилучшую производительность, так как не имеет большого количества дополнительного кода, кроме самого сервера.
- * Вы не будете писать приложение на Uvicorn напрямую. Это означало бы, что Ваш код должен включать как минимум весь
- код, предоставляемый Starlette (или **FastAPI**). И если Вы так сделаете, то в конечном итоге Ваше приложение будет иметь те же накладные расходы, что и при использовании фреймворка, минимизирующего код Вашего приложения и Ваши ошибки.
- * Uvicorn подлежит сравнению с Daphne, Hypercorn, uWSGI и другими веб-серверами.
+ * Будет иметь наилучшую производительность, так как в нем нет большого количества дополнительного кода, кроме самого сервера.
+ * Вы не будете писать приложение непосредственно на Uvicorn. Это означало бы, что ваш код должен включать как минимум весь код, предоставляемый Starlette (или **FastAPI**). И если бы вы это сделали, ваше конечное приложение имело бы те же накладные расходы, как если бы вы использовали фреймворк, и минимизировало бы ваш код и ошибки.
+ * Если вы сравниваете Uvicorn, сравнивайте его с Daphne, Hypercorn, uWSGI и другими серверными приложениями.
* **Starlette**:
- * Будет уступать Uvicorn по производительности. Фактически Starlette управляется Uvicorn и из-за выполнения большего количества кода он не может быть быстрее, чем Uvicorn.
- * Ð\97аÑ\82о он пÑ\80едоÑ\81Ñ\82авлÑ\8fеÑ\82 Ð\92ам инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82Ñ\8b длÑ\8f Ñ\81озданиÑ\8f пÑ\80оÑ\81Ñ\82Ñ\8bÑ\85 веб-пÑ\80иложений Ñ\81 обÑ\80абоÑ\82кой маÑ\80Ñ\88Ñ\80Ñ\83Ñ\82ов URL и т.д.
- * Starlette следует сравнивать с Sanic, Flask, Django и другими веб-фреймворками (или микрофреймворками).
+ * Будет иметь следующую по производительности позицию после Uvicorn. Фактически, Starlette использует Uvicorn для выполнения. Таким образом, он может быть "медленнее" Uvicorn из-за выполнения большего количества кода.
+ * Ð\9dо он пÑ\80едоÑ\81Ñ\82авлÑ\8fеÑ\82 вам инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82Ñ\8b длÑ\8f Ñ\81озданиÑ\8f пÑ\80оÑ\81Ñ\82Ñ\8bÑ\85 веб-пÑ\80иложений Ñ\81 маÑ\80Ñ\88Ñ\80Ñ\83Ñ\82изаÑ\86ией на оÑ\81нове пÑ\83Ñ\82ей и т.д.
+ * Если вы сравниваете Starlette, сравнивайте его с Sanic, Flask, Django и другими веб-фреймворками (или микрофреймворками).
* **FastAPI**:
- * Так же как Starlette использует Uvicorn и не может быть быстрее него, **FastAPI** использует Starlette, то есть он не может быть быстрее Starlette.
- * FastAPI предоставляет больше возможностей поверх Starlette, которые наверняка Вам понадобятся при создании API, такие как проверка данных и сериализация. В довесок Вы ещё и получаете автоматическую документацию (автоматическая документация даже не увеличивает накладные расходы при работе приложения, так как она создается при запуске).
- * Ð\95Ñ\81ли Ð\92Ñ\8b не иÑ\81полÑ\8cзÑ\83еÑ\82е FastAPI, а иÑ\81полÑ\8cзÑ\83еÑ\82е Starlette напÑ\80Ñ\8fмÑ\83Ñ\8e (или дÑ\80Ñ\83гой инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82 вÑ\80оде Sanic, Flask, Responder и Ñ\82.д.), Ð\92ам пÑ\80иÑ\88лоÑ\81Ñ\8c бÑ\8b Ñ\81амоÑ\81Ñ\82оÑ\8fÑ\82елÑ\8cно Ñ\80еализоваÑ\82Ñ\8c валидаÑ\86иÑ\8e и Ñ\81еÑ\80иализаÑ\86иÑ\8e даннÑ\8bÑ\85. То еÑ\81Ñ\82Ñ\8c, в иÑ\82оге, Ð\92аÑ\88е пÑ\80иложение имело бÑ\8b Ñ\82акие же накладнÑ\8bе Ñ\80аÑ\81Ñ\85одÑ\8b, как еÑ\81ли бÑ\8b оно бÑ\8bло Ñ\81оздано Ñ\81 иÑ\81полÑ\8cзованием FastAPI. Ð\98 во многиÑ\85 Ñ\81лÑ\83Ñ\87аÑ\8fÑ\85 валидаÑ\86иÑ\8f и Ñ\81еÑ\80иализаÑ\86иÑ\8f даннÑ\8bÑ\85 пÑ\80едÑ\81Ñ\82авлÑ\8fÑ\8eÑ\82 Ñ\81обой Ñ\81амÑ\8bй болÑ\8cÑ\88ой обÑ\8aÑ\91м кода, написанного в приложениях.
- * Таким образом, используя FastAPI Вы потратите меньше времени на разработку, уменьшите количество ошибок, строк кода и, вероятно, получите ту же производительность (или лучше), как и если бы не использовали его (поскольку Вам пришлось бы реализовать все его возможности в своем коде).
- * FastAPI должно сравнивать с фреймворками веб-приложений (или наборами инструментов), которые обеспечивают валидацию и сериализацию данных, а также предоставляют автоматическую документацию, такими как Flask-apispec, NestJS, Molten и им подобные.
+ * Так же, как Starlette использует Uvicorn и не может быть быстрее его, **FastAPI** использует Starlette, поэтому не может быть быстрее его.
+ * FastAPI предоставляет больше возможностей поверх Starlette. Возможности, которые вам почти всегда нужны при создании API, такие как валидация и сериализация данных. И при использовании FastAPI вы получаете автоматическую документацию бесплатно (автоматическая документация даже не добавляет накладные расходы на выполнение приложений, она создается при запуске).
+ * Ð\95Ñ\81ли бÑ\8b вÑ\8b не иÑ\81полÑ\8cзовали FastAPI и иÑ\81полÑ\8cзовали Starlette напÑ\80Ñ\8fмÑ\83Ñ\8e (или дÑ\80Ñ\83гой инÑ\81Ñ\82Ñ\80Ñ\83менÑ\82, Ñ\82акой как Sanic, Flask, Responder и Ñ\82.д.), вам пÑ\80иÑ\88лоÑ\81Ñ\8c бÑ\8b Ñ\80еализоваÑ\82Ñ\8c вÑ\81Ñ\8e валидаÑ\86иÑ\8e и Ñ\81еÑ\80иализаÑ\86иÑ\8e даннÑ\8bÑ\85 Ñ\81амоÑ\81Ñ\82оÑ\8fÑ\82елÑ\8cно. Таким обÑ\80азом, ваÑ\88е конеÑ\87ное пÑ\80иложение вÑ\81е Ñ\80авно имело бÑ\8b Ñ\82е же накладнÑ\8bе Ñ\80аÑ\81Ñ\85одÑ\8b, как еÑ\81ли бÑ\8b оно бÑ\8bло Ñ\81оздано Ñ\81 иÑ\81полÑ\8cзованием FastAPI. Ð\98 во многиÑ\85 Ñ\81лÑ\83Ñ\87аÑ\8fÑ\85 валидаÑ\86иÑ\8f даннÑ\8bÑ\85 и иÑ\85 Ñ\81еÑ\80иализаÑ\86иÑ\8f Ñ\81оÑ\81Ñ\82авлÑ\8fÑ\8eÑ\82 наиболÑ\8cÑ\88Ñ\83Ñ\8e Ñ\87аÑ\81Ñ\82Ñ\8c кода, написанного в приложениях.
+ * Таким образом, используя FastAPI, вы экономите время на разработку, снижаете вероятность ошибок, количество строк кода и, вероятно, получаете такую же производительность (или лучше), как если бы вы не использовали его (так как вам пришлось бы реализовать все в вашем коде).
+ * Если вы сравниваете FastAPI, сравнивайте его с фреймворками веб-приложений (или наборами инструментов), которые обеспечивают валидацию данных, сериализацию и документацию, такими как Flask-apispec, NestJS, Molten и другие. Фреймворки с интегрированной автоматической валидацией данных, сериализацией и документацией.