Benchmark 2025: JavaScript (Node.js) vs Competitors — Who is Faster?
In 2025, the backend development ecosystem has become even more competitive. JavaScript (Node.js) holds its position thanks to its asynchronous model and huge community, but other languages are not standing still. We analyzed the latest benchmark results (TechEmpower Round 24, Techempower Web Framework Benchmarks, as well as independent community tests) and are ready to share key findings.
The tests were conducted on identical cloud servers (4 vCPU, 8GB RAM, SSD). Three key parameters were measured:
- Requests per second (RPS) — number of requests per second (pure JSON serializer and simple CRUD).
- Latency (p99) — latency in milliseconds under load.
- Memory footprint — RAM consumption in megabytes.
Results: Node.js vs Competitors
1. Pure JSON Serializer (Hello World + JSON response):
- Rust (Actix-web): ~1,200,000 RPS — absolute leader in speed.
- Go (Fiber): ~850,000 RPS — excellent indicator for production.
- Node.js (Fastify): ~620,000 RPS — a very respectable result, especially considering dynamic typing.
- Java (Spring Boot 3 + Virtual Threads): ~400,000 RPS — significantly improved thanks to virtual threads.
- Python (FastAPI + uvloop): ~120,000 RPS — traditionally the slowest, but 40% faster than in 2023.
2. CRUD with Database (PostgreSQL, 10,000 records):
- Rust (Actix-web + sqlx): ~280,000 RPS — minimal latency.
- Go (Fiber + pgx): ~230,000 RPS.
- Node.js (Fastify + Prisma): ~180,000 RPS — strong asynchronous I/O performance.
- Java (Spring Boot + R2DBC): ~150,000 RPS.
- Python (FastAPI + asyncpg): ~45,000 RPS.
Memory Consumption (JSON Benchmark, Average Value):
- Rust: ~12 MB — minimal usage.
- Go: ~18 MB.
- Node.js: ~35 MB — higher due to V8 and GC.
- Java: ~120 MB (with virtual threads — ~90 MB).
- Python: ~45 MB.
Conclusions for Developers in 2025
- Node.js remains the best choice for I/O-intensive applications (chat servers, API gateways, BFF). Development speed and the rich NPM ecosystem outweigh the 2-3x RPS loss to Rust/Go.
- Rust and Go are optimal for high-load microservices where every millisecond and memory savings are critical.
- Python has accelerated, but is still 5 times slower than Node.js in pure