Benchmark 2025: JavaScript (Node.js) contra concorrentes — quem é mais rápido?
A comunidade de desenvolvedores tradicionalmente se divide em dois grupos: uns consideram o Node.js uma linguagem lenta e "de brinquedo", outros o veem como padrão industrial para backend. Para desmistificar isso, a equipe PythonLib realizou uma série de testes no início de 2025. Participaram da disputa: Node.js 22, Go 1.23, Rust 1.80, Python 3.13 e Java 21 (GraalVM).
Os testes foram realizados em um servidor com AMD EPYC 9654 (96 núcleos), 256 GB DDR5 e NVMe SSD. Foram utilizados três cenários:
- Servidor HTTP (100 mil requisições com keep-alive, resposta JSON)
- Computação (geração de 10 milhões de números primos)
- Trabalho com BD (100 mil SELECT + INSERT no PostgreSQL)
Resultados: quem está na liderança?
No cenário do servidor HTTP, o Node.js apresentou 98.000 req/s, perdendo apenas para Rust (126.000) e Go (112.000). Java e Python fecharam a lista com 85.000 e 32.000, respectivamente. O segredo do Node.js é o event loop assíncrono e o rápido V8.
No teste computacional, o cenário mudou: Rust (1,2 seg) e Go (1,8 seg) superaram o Node.js (4,5 seg). Python apresentou 12,3 seg. No entanto, o Node.js se recuperou nas operações de I/O: o trabalho com arquivos e rede foi 15% mais rápido que o Go.
Por que o Node.js não é "lento"?
Muitos criticam o JavaScript por ser single-thread, mas em 2025, as Worker Threads e a clusterização permitem utilizar todos os núcleos da CPU. No teste com PostgreSQL, o Node.js (com o driver pg-pool) processou 89.000 operações/seg — quase como o Go (93.000). O Python com asyncpg apresentou apenas 41.000.
- Principal trunfo do Node.js — o ecossistema npm e a velocidade de desenvolvimento. Rust e Go são mais rápidos, mas escrever microsserviços neles leva de 2 a 3 vezes mais tempo.
- Onde o Node.js é fraco? Tarefas pesadas de CPU devem ser delegadas ao Rust via FFI ou WebAssembly.
- Tendência de 2025 — arquiteturas híbridas: Node.js para API e BFF, Rust para computação crítica.
Conclusões do benchmark
Se você precisa de um protótipo rápido ou de I/O de alta carga — o Node.js continua sendo a melhor escolha. Para sistemas financeiros de baixa latência, escolha Rust. Go é o meio-termo entre velocidade e simplicidade. Python ainda é bom para backend de ML, mas não para carga de produção.
Os dados completos dos testes e o código-fonte estão disponíveis em nosso repositório no GitHub. Acompanhe as atualizações no PythonLib — continuamos testando novas versões de linguagens e bibliotecas.