Files
fastapi/docs/pt/docs/benchmarks.md
Rafael de Oliveira Marques 540a83da65 🌐 Update Portuguese translations with LLM prompt (#14228)
* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* validated llm translation

* fix non-Annotated in llm-prompt

* rerun after a few changes in llm-prompt

* fix non-Annotated

* validated llm translation

* fix llm translation

* update outdated translations

* fix translation for operation IDs

* add header link

* add missing link

* fix line break

* fix diff

* fix llm translation

* fix 'Atualize' to 'Atualizar'

* update alternatives.md

* update async.md

* update fastapi-cli.md

* update features.md

* update help-fastapi.md

* update history-design-future.md

* update index.md

* update advanced/events.md

* update advanced/middleware.md

* update advanced/response-cookies.md

* update advanced/response-headers.md

* update advanced/templates.md

* update advanced/testing-websockets.md

* update advanced/using-request-directly.md

* update advanced/websockets.md

* update advanced/security/oauth2-scopes.md

* update deployment/cloud.md

* update deployment/manually.md

* update how-to/custom-request-and-route.md

* update how-to/migrate-from-pydantic-v1-to-pydantic-v2.md

* update tutorial/background-tasks.md

* update tutorial/first-steps.md

* update tutorial/handling-errors.md

* update tutorial/middleware.md

* update tutorial/request-files.md

* update tutorial/sql-databases.md

* update tutorial/static-files.md

* update tutorial/testing.md

* update tutorial/dependencies/dependencies-with-yield.md

* update advanced/advanced-dependencies.md

---------

Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
2025-11-12 17:23:57 +01:00

3.9 KiB

Benchmarks

Benchmarks independentes da TechEmpower mostram as aplicações FastAPI rodando com Uvicorn como um dos frameworks Python mais rápidos disponíveis, somente atrás dos próprios Starlette e Uvicorn (utilizados internamente pelo FastAPI).

Mas quando se checa benchmarks e comparações você deveria ter o seguinte em mente.

Benchmarks e velocidade

Ao verificar os benchmarks, é comum observar algumas ferramentas de diferentes tipos comparadas como equivalentes.

Especificamente, observa-se Uvicorn, Starlette e FastAPI comparados juntos (entre muitas outras ferramentas).

Quanto mais simples o problema resolvido pela ferramenta, melhor a performance que ela terá. E a maioria dos benchmarks não testam as características adicionais fornecidas pela ferramenta.

A hierarquia segue assim:

  • Uvicorn: um servidor ASGI

    • Starlette: (utiliza Uvicorn) um microframework web
      • FastAPI: (utiliza Starlette) um microframework de API com vários recursos adicionais para construção de APIs, com validação de dados, etc.
  • Uvicorn:

    • Terá a melhor performance, já que ele não tem muito código extra além do servidor em si.
    • Você não conseguiria escrever uma aplicação em Uvicorn diretamente. Isso significa que seu código deveria conter, mais ou menos, todo o código fornecido pelo Starlette (ou FastAPI). E se você fizesse isso, sua aplicação final poderia ter a mesma sobrecarga que utilizar um framework que minimiza o código e bugs da sua aplicação.
    • Se você quer fazer comparações com o Uvicorn, compare com Daphne, Hypercorn, uWSGI, etc. Servidores de Aplicação.
  • Starlette:

    • Terá a melhor performance, depois do Uvicorn. De fato, Starlette utiliza Uvicorn para rodar. Então, ele provavelmente será "mais lento" que Uvicorn por ter que executar mais código.
    • Mas ele fornece a você as ferramentas para construir aplicações web simples, com roteamento baseado em caminhos, etc.
    • Se você quer fazer comparações com o Starlette, compare com Sanic, Flask, Django, etc. Frameworks Web (ou microframeworks).
  • FastAPI:

    • Do mesmo modo que Starlette utiliza Uvicorn e não pode ser mais rápido que ele, FastAPI utiliza o Starlette, então não tem como ser mais rápido do que o Starlette.
    • FastAPI fornece mais recursos acima do Starlette. Recursos que você quase sempre precisará quando construir APIs, como validação de dados e serialização. E utilizando eles, você terá uma documentação automática de graça (a documentação automática nem sequer adiciona peso para rodar as aplicações, ela é gerada na inicialização).
    • Se você nunca utilizou FastAPI mas utilizou diretamente o Starlette (ou outra ferramenta, como Sanic, Flask, Responder, etc) você teria que implementar toda validação de dados e serialização por conta. Então, sua aplicação final poderia ainda ter a mesma sobrecarga como se fosse desenvolvida com FastAPI. Em muitos casos, a validação de dados e serialização é o maior pedaço de código escrito em aplicações.
    • Então, ao utilizar o FastAPI você estará economizando tempo de desenvolvimento, evitará bugs, linhas de código, e você provavelmente terá a mesma performance (ou melhor) do que não utilizá-lo (já que você teria que implementar tudo isso em seu código).
    • Se você quer fazer comparações com o FastAPI, compare com um framework (ou conjunto de ferramentas) para aplicações web que forneça validação de dados, serialização e documentação, como Flask-apispec, NestJS, Molten, etc. Frameworks com validação de dados automática, serialização e documentação integradas.