2025年基准测试:JavaScript (Node.js) 与竞争对手 – 谁更快?
2025年,后端开发生态系统竞争更加激烈。JavaScript (Node.js) 凭借其异步模型和庞大的社区保持着优势,但其他语言也并未止步。我们分析了最新的基准测试结果(TechEmpower Round 24、Techempower Web Framework Benchmarks 以及社区独立测试),并在此分享关键结论。
测试在相同的云服务器上进行(4 vCPU、8GB RAM、SSD)。测量了三个关键参数:
- 每秒请求数 (RPS) — 每秒处理的请求数量(纯 JSON 序列化器和简单 CRUD)。
- 延迟 (p99) — 负载下的延迟(毫秒)。
- 内存占用 — 内存消耗(兆字节)。
结果:Node.js vs 竞争对手
1. 纯 JSON 序列化器(Hello World + JSON 响应):
- Rust (Actix-web): ~1,200,000 RPS — 速度方面的绝对领先者。
- Go (Fiber): ~850,000 RPS — 生产环境下的优秀指标。
- Node.js (Fastify): ~620,000 RPS — 非常出色的结果,尤其考虑到其动态类型特性。
- Java (Spring Boot 3 + Virtual Threads): ~400,000 RPS — 借助虚拟线程大幅提升。
- Python (FastAPI + uvloop): ~120,000 RPS — 传统上最慢,但比2023年快了40%。
2. 数据库 CRUD 操作(PostgreSQL,10,000 条记录):
- Rust (Actix-web + sqlx): ~280,000 RPS — 延迟最低。
- Go (Fiber + pgx): ~230,000 RPS。
- Node.js (Fastify + Prisma): ~180,000 RPS — 强大的异步 I/O 处理能力。
- Java (Spring Boot + R2DBC): ~150,000 RPS。
- Python (FastAPI + asyncpg): ~45,000 RPS。
内存消耗(JSON 基准测试,平均值):
- Rust: ~12 MB — 消耗最低。
- Go: ~18 MB。
- Node.js: ~35 MB — 由于 V8 和 GC 导致消耗较大。
- Java: ~120 MB(使用虚拟线程时约为 ~90 MB)。
- Python: ~45 MB。
2025年对开发者的建议
- Node.js 仍然是 I/O 密集型应用(聊天服务器、API 网关、BFF)的最佳选择。开发速度和丰富的 NPM 生态系统足以弥补其在 RPS 上落后 Rust/Go 2-3 倍的差距。
- Rust 和 Go 最适合高负载微服务,在这些场景下,每一毫秒和内存节省都至关重要。
- Python 有所加速,但在纯