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.
O benchmark testa servidores web implementados nas seguintes tecnologias:
- Node.js (Express)
- Bun (Express)
- Python (FastAPI)
- Rust (Actix-web)
/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).
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)
Antes de executar o benchmark, instale as dependências de cada projeto:
Instale as bibliotecas necessárias para o script bechmark.py:
pip install aiohttp psutilcd javascript
npm install
cd ..cd javascript-bun
bun install
cd ..cd python
python3 -m venv venv
source venv/bin/activate # Ou venv\Scripts\activate no Windows
pip install -r requirements.txt
cd ..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 ..Para iniciar o benchmark, execute o script Python na raiz do projeto:
python3 bechmark.py- Compila o projeto Rust em modo release.
- Inicia os servidores de todas as tecnologias em portas diferentes.
- Executa uma carga de requisições concorrentes (padrão: 100.000 requisições, 1.000 concorrentes).
- 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)
- Gera relatórios CSV individuais (
nodejs_results.csv,bun_results.csv, etc.). - Exibe uma tabela comparativa final no terminal.
- Encerra os processos dos servidores automaticamente.
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