Skip to content

A comparative performance benchmark between different backend technologies, measuring response time, throughput (requests per second), and memory consumption when processing factorial calculations.

Notifications You must be signed in to change notification settings

thiagoaramizo/request-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Request Benchmark

Este projeto realiza um benchmark comparativo de desempenho entre diferentes tecnologias de backend, medindo o tempo de resposta, vazão (requests por segundo) e consumo de memória ao processar cálculos de fatorial.

Tecnologias Avaliadas

O benchmark testa servidores web implementados nas seguintes tecnologias:

  1. Node.js (Express)
  2. Bun (Express)
  3. Python (FastAPI)
  4. Rust (Actix-web)

Estrutura do Projeto

  • /javascript: Implementação do servidor Node.js + Express.
  • /javascript-bun: Implementação do servidor Bun + Express.
  • /python: Implementação do servidor Python + FastAPI.
  • /rust: Implementação do servidor Rust + Actix-web.
  • bechmark.py: Script principal de automação do benchmark (em Python).

Pré-requisitos

Certifique-se de ter as seguintes ferramentas instaladas em seu ambiente:

  • Python 3.10+ (para o script de benchmark e o servidor FastAPI)
  • Node.js (para o servidor Node.js)
  • Bun (para o servidor Bun)
  • Rust & Cargo (para o servidor Rust)

Instalação e Configuração

Antes de executar o benchmark, instale as dependências de cada projeto:

1. Dependências do Script de Benchmark

Instale as bibliotecas necessárias para o script bechmark.py:

pip install aiohttp psutil

2. JavaScript (Node.js)

cd javascript
npm install
cd ..

3. JavaScript (Bun)

cd javascript-bun
bun install
cd ..

4. Python (FastAPI)

cd python
python3 -m venv venv
source venv/bin/activate # Ou venv\Scripts\activate no Windows
pip install -r requirements.txt
cd ..

5. Rust (Actix)

O script de benchmark irá compilar o projeto Rust automaticamente em modo release, mas você pode garantir que o ambiente está pronto rodando:

cd rust
cargo check
cd ..

Executando o Benchmark

Para iniciar o benchmark, execute o script Python na raiz do projeto:

python3 bechmark.py

O que o script faz:

  1. Compila o projeto Rust em modo release.
  2. Inicia os servidores de todas as tecnologias em portas diferentes.
  3. Executa uma carga de requisições concorrentes (padrão: 100.000 requisições, 1.000 concorrentes).
  4. Calcula métricas como:
    • Tempo Total
    • Requisições por Segundo (Req/Sec)
    • Latência Média, Mínima e Máxima
    • Consumo Máximo de Memória (RSS)
  5. Gera relatórios CSV individuais (nodejs_results.csv, bun_results.csv, etc.).
  6. Exibe uma tabela comparativa final no terminal.
  7. Encerra os processos dos servidores automaticamente.

Exemplo de Resultado

Linguagem            | Tempo Total (s) | Req/Sec      | Média (s)    | Mínimo (s)   | Máximo (s)   | Sucesso  | Erro     | Memória Max (MB)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Node.js (Express)    | 0.0802          | 6237.61      | 0.0364       | 0.0063       | 0.0576       | 500      | 0        | 47.08           
Bun (Express)        | 0.0755          | 6618.31      | 0.0343       | 0.0078       | 0.0527       | 500      | 0        | 37.00           
Python (FastAPI)     | 0.1122          | 4456.91      | 0.0514       | 0.0334       | 0.0736       | 500      | 0        | 45.33           
Rust (Actix)         | 0.0903          | 5537.77      | 0.0429       | 0.0036       | 0.0765       | 500      | 0        | 4.73            

About

A comparative performance benchmark between different backend technologies, measuring response time, throughput (requests per second), and memory consumption when processing factorial calculations.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published