2025 年基准测试:JavaScript (Node.js) 对阵竞争对手——谁更快?
开发者社区传统上分为两大阵营:一些人认为 Node.js 是一种缓慢的“玩具”语言,而另一些人则将其视为后端的行业标准。为了打破这些迷思,PythonLib 团队在 2025 年初进行了一系列测试。参赛选手包括:Node.js 22、Go 1.23、Rust 1.80、Python 3.13 和 Java 21 (GraalVM)。
测试在一台配备 AMD EPYC 9654(96 核)、256 GB DDR5 和 NVMe SSD 的服务器上进行。使用了三种场景:
- HTTP 服务器(10 万次 keep-alive 请求,JSON 响应)
- 计算(生成 1000 万个质数)
- 数据库操作(在 PostgreSQL 中执行 10 万次 SELECT + INSERT)
结果:谁领先?
在 HTTP 服务器场景中,Node.js 达到了 98,000 req/s,仅次于 Rust(126,000)和 Go(112,000)。Java 和 Python 以 85,000 和 32,000 位列最后。Node.js 的秘诀在于其异步事件循环和快速的 V8 引擎。
在计算测试中,情况发生了变化:Rust(1.2 秒)和 Go(1.8 秒)击败了 Node.js(4.5 秒)。Python 耗时 12.3 秒。然而,Node.js 在 I/O 操作上扳回一城:文件和网络操作比 Go 快 15%。
为什么 Node.js 并不“慢”?
许多人批评 JavaScript 的单线程特性,但在 2025 年,Worker Threads 和集群化技术允许充分利用所有 CPU 核心。在 PostgreSQL 测试中,Node.js(使用 pg-pool 驱动)处理了 89,000 次操作/秒——几乎与 Go(93,000)持平。使用 asyncpg 的 Python 仅达到 41,000。
- Node.js 的主要王牌——npm 生态系统和开发速度。Rust 和 Go 更快,但用它们编写微服务所需的时间要长 2-3 倍。
- Node.js 的弱点在哪? 繁重的 CPU 密集型任务最好通过 FFI 或 WebAssembly 交给 Rust 处理。
- 2025 年的趋势——混合架构:Node.js 用于 API 和 BFF,Rust 用于关键计算。
基准测试总结
如果您需要快速原型或高负载 I/O——Node.js 仍然是最佳选择。对于低延迟的金融系统,请选择 Rust。Go 是速度与简单性之间的黄金分割点。而 Python 仍然适用于机器学习后端,但不适合生产环境负载。
完整的测试数据和源代码可在我们的 GitHub 仓库中获取。请关注 PythonLib 的更新——我们将继续测试新版本的语言和库。