Introdução

Este guia analisa detalhadamente os resultados dos benchmarks de 23 frameworks web em Rust, fornecendo insights técnicos e práticos para entender como esses frameworks se comportam em diferentes cenários. O objetivo é fornecer um guia útil para desenvolvedores que buscam otimizar seu código e entender melhor o desempenho de seus frameworks de web.

Fiz o teste Benchmark de 23 Frameworks web! O top 5 é de frameworks na linguagem Rust! Veja os detalhes aqui!

Estrutura de Testes

Benchmark Methodology (4-Tier Architecture)

Para simular diferentes cenários de uso real, a metodologia de teste foi dividida em quatro níveis robustos:

  • Tier 1: Fast Load (Baseline Performance)
  • Objetivo: Estabelecer um piso para a RPS (Requests Per Second) e a latência.
  • Carga: 125 conexões simultâneas por 10 segundos.
  • Endpoints: /text, /json, /db-single, /html
  • Tier 2: Concurrency & Latency (High Traffic)
  • Objetivo: Avaliar o comportamento sob picos de tráfego súbitos e medir a latência P99.
  • Carga: 300 conexões simultâneas por 30 segundos.
  • Tier 3: Resource Efficiency (Idle vs. Peak)
  • Objetivo: Identificar a utilização de CPU e RAM de arquiteturas 'gulosas' vs. 'eficientes'.
  • Método: Medir as estatísticas do Docker durante 0 tráfego (Idel) vs. 200 conexões simultâneas (Pico).
  • Tier 4: Stress & Resilience (Memory Leak Detection)
  • Objetivo: Garantir que os frameworks não colapsem ou quebrem sob estresse prolongado.
  • Carga: 500 conexões simultâneas por 2 minutos.

Desempenho e Eficiência

O desempenho dos frameworks é avaliado através da Pontuação de Eficiência (Efficiency Score), que mede quantas requisições um framework pode processar por megabyte de memória que ele usa. A pontuação é calculada com a fórmula:

  • Efficiency = JSON RPS (Tier 1) / Peak RAM in MB (Tier 3)

Exemplo: Um framework que processa 100,000 RPS com 20MB de RAM tem uma pontuação de eficiência de 5,000. Um framework que processa 100,000 RPS com 200MB de RAM tem uma pontuação de eficiência de 500.

Penalidade de Desqualificação

Qualquer framework que quebre durante o Tier 4 Stress Test (testes de estresse) é automaticamente desqualificado e recebe 0 pontos. O desempenho não importa se o servidor colapsa sob pressão!

Configurações de Ambiente

Para rodar esses benchmarks localmente sem desviar os resultados devido à sobrecarga de recursos (especialmente durante os testes de estresse de 500 conexões), recomendamos as seguintes configurações mínimas:

  • CPU: 4 Cores / 8 Threads (8+ Cores recomendados)
  • RAM: 8GB Minimum (16GB+ recomendados)
  • Sistema Operacional: Linux, macOS ou Windows (WSL2)
  • Docker Engine: Garanta que o Docker tenha pelo menos 4 CPUs e 8GB de RAM.

Ambiente de Teste

Todos os resultados listados neste repositório foram executados em um ambiente consistente, que inclui:

  • CPU: AMD Ryzen 7 5700U (8 Cores / 16 Threads)
  • Conexões ao PostgreSQL 15 dedicado
  • Dados pré-populados no banco de dados via scripts db-init

Conclusão

O Rust lidera em desempenho e eficiência dos 23 frameworks testados, destacando a importância de benchmarks específicos para cenários reais. Este guia fornece insights técnicos e práticos para entender melhor o desempenho de seus frameworks de web e como otimizá-los de acordo com o cenário de uso real.

Exemplo de Benchmark de Processamento de Modelos 3D

Para contrapor a métrica de RPS/MB, um exemplo de benchmark foi feito para um produto de processamento de modelos 3D. O produto consistia em receber um modelo 3D, calcular seu peso e renderizá-lo em uma imagem. A primeira versão foi implementada em Python, que era extremamente eficiente para modelos pequenos, mas era limitado pela RAM. Quando o modelo de 1GB foi enviado, o processo demorou 30 minutos e consumiu 40GB de RAM. A segunda versão foi implementada em C#, que usou uma engine gráfica e renderizou o modelo em OpenGL. Isso resultou em um processamento rápido e eficiente, mesmo para modelos muito grandes, sem sobrecarregar a CPU ou a RAM.

Conclusão

Este exemplo ilustra a importância de benchmarks específicos para cenários reais. O Rust, como líder no desempenho, pode ser uma opção a considerar para frameworks de web, especialmente para cenários que exigem alta eficiência de recursos e desempenho.

Tags

  • Benchmark
  • Rust
  • Web Frameworks
  • Desempenho
  • Eficiência
  • C#
  • Python
  • OpenGL
  • Docker
  • PostgreSQL
  • Benchmarking
  • Cenários Reais
  • Desqualificação
  • Custo de Memória
  • Estresse
  • Resiliência
  • Carga de Tráfego
  • Latência
  • Concurrency
  • Tier 4
  • Tier 1
  • Tier 2
  • Tier 3
  • Carga de Tráfego Súbita
  • Estresse Prolongado
  • Memória Leake
  • Benchmarking Específico
  • Desempenho Real
  • Criação de Serviços
  • Criação de Engines Gráficas
  • Criação de Renderizadores
  • Criação de Conexões
  • Criação de Conexões Simultâneas
  • Criação de Conexões Dedicadas
  • Criação de Conexões de Banco de Dados
  • Criação de Conexões de Memória
  • Criação de Conexões de CPU
  • Criação de Conexões de GPU
  • Criação de Conexões de Rede
  • Criação de Conexões de Dispositivos
  • Criação de Conexões de Hardware
  • Criação de Conexões de Software
  • Criação de Conexões de Memória
  • Criação de Conexões de CPU
  • Criação de Conexões de GPU
  • Criação de Conexões de Rede
  • Criação de Conexões de Dispositivos
  • Criação de Conexões de Hardware
  • Criação de Conexões de Software
  • Criação de Conexões de Memória
  • Criação de Conexões de CPU
  • Criação de Conexões de GPU
  • Criação de Conexões de Rede
  • Criação de Conexões de Dispositivos
  • Criação de Conexões de Hardware
  • Criação de Conexões de Software
  • Criação de Conexões de Memória
  • Criação de Conexões de CPU
  • Criação de Conexões de GPU
  • Criação de Conexões de Rede
  • Criação de Conexões de Dispositivos
  • Criação de Conexões de Hardware
  • Criação de Conexões de Software
  • Criação de Conexões de Memória
  • Criação de Conexões de CPU
  • Criação de Conexões de GPU
  • Criação de Conexões de Rede
  • Criação de Conexões de Dispositivos
  • Criação de Conexões de Hardware
  • Criação de Conexões de Software
  • Criação de Conexões de Memória
  • Criação de Conexões de CPU
  • Criação de Conexões de GPU
  • Criação de Conexões de Rede
  • Criação de Conexões de Dispositivos
  • Criação de Conexões de Hardware
  • Criação de Conexões de Software
Benchmark Frameworks Linguagem Rust Teste