BENCHMARK REPORT v1.1 · 2024.04

Bun 1.1
性能基准
全解析

从底层架构、实测指标到工程落地价值——一份覆盖冷启动、HTTP、IO、包管理、测试、WebSocket 六大场景的标准化基准测试体系。

COLD START
0×
启动速度提升
HTTP QPS
0×
原生吞吐对比
FILE IO
0×
递归目录读取
PKG INSTALL
0×
冷安装速度
hyperfine · bombardier /bench cold-start vs hot-run 10 rounds min CPU · RSS · syscalls · IO ops io_uring / IOCP JavaScriptCore + Zig zero-copy IO hyperfine · bombardier /bench cold-start vs hot-run 10 rounds min CPU · RSS · syscalls · IO ops io_uring / IOCP JavaScriptCore + Zig zero-copy IO
01 / INTRODUCTION

为什么 Bun 1.1 的基准测试
具备行业参考意义

自 Node.js 一统 JavaScript 后端运行时十余年以来,其基于 V8+libuv 的架构长期存在启动缓慢、IO 分层开销大、内存占用偏高的固有短板。

2024 年 4 月正式发布的 Bun 1.1 作为 v1.0 稳定版后的首个重大迭代,以「极致性能+全链路工具一体化」为核心定位,重构了文件系统、HTTP 服务、模块加载、包管理器四大核心模块。

官方同步配套完整标准化性能基准测试套件,成为业界对比 JS 运行时性能的核心标尺。

BUN 官方仓库 /bench
  • → 覆盖 6 大生产级场景:冷启动、HTTP、文件 IO、依赖安装、单测、WebSocket
  • → 统一使用 hyperfine、bombardier 无偏压负载工具
  • → 规避 autocannon 自身性能瓶颈带来的失真
  • → 数据具备横向对比 Node.js、Deno 的严谨性与可复现性
02 / FRAMEWORK

基准测试体系:
测试框架与标准化方法论

PRINCIPLE 01

冷热负载分离

区分冷启动(无缓存、无预加载)与热运行(常驻进程、缓存命中)两套测试集,分别对应脚本工具、线上服务两种业务形态。

PRINCIPLE 02

多轮统计降噪

每个用例至少循环执行 10 次,输出均值、标准差、最大/最小值,过滤操作系统调度、磁盘 IO 抖动带来的单次极值。

PRINCIPLE 03

全栈指标采集

不只统计耗时,同步采集 CPU 使用率、RSS 内存、系统调用次数、文件读写次数四类硬件资源指标。

六大标准化基准测试场景

01
COLD START

脚本冷启动基准

空 TS/JS 文件、CLI 工具、短脚本执行耗时

vs Node.js LTS · Deno
02
HTTP SERVE

HTTP 服务吞吐基准

原生 Bun HTTP、Express 兼容层 Hello World QPS、延迟分位值

vs Express · Deno.serve
03
FILE IO

文件系统 IO 基准

递归目录读取、批量文件读写、大文本流式处理

vs Node.js fs
04
PKG INSTALL

包管理器安装基准

全新项目冷安装、缓存增量安装、lock 文件解析速度

vs npm · pnpm · yarn
05
UNIT TEST

单元测试运行基准

Jest 语法测试套件、TS 项目测试执行耗时

vs Jest · vitest
06
WEBSOCKET

WebSocket 通讯基准

百万连接广播、单连接高频率消息吞吐

vs ws · Deno WS
03 / METRICS

核心实测数据
与横向对比

3.1

冷启动性能 · 脚本工具场景碾压级优势

空脚本冷启动耗时对比
Bun 1.1 WINNER
1.4ms
Node.js 22.5.1 50ms
带 TS 转译的短脚本(100 行业务代码)
7ms
Bun 1.1
112ms
Node.js
底层逻辑
  • ▸采用 JavaScriptCore 引擎,原生面向移动端轻量化设计
  • ▸无 V8 复杂初始化流程
  • ▸运行时由 Zig 编写
  • ▸直接调用 io_uring / IOCP
  • ▸跳过 libuv 抽象层减少系统调用
3.2

HTTP 服务基准 · 高并发吞吐提升 3 倍以上

原生 HTTP Hello World · QPS 对比
Bun 1.1 原生 3.6×
35,541 req/s
P99 延迟: 7ms
Node.js 原生 http 9,866 req/s
P99 延迟: 18ms
Express 兼容层(Bun 1.1.22 vs Node.js Express)
22,972
Bun Express req/s
~10,000
Node Express req/s
+50%
较 1.1.21 提升
优化点 1
请求/响应缓冲区复用
优化点 2
内存零拷贝
优化点 3
TCP 连接池常驻
优化点 4
头部解析向量化
3.3

文件系统 IO · 递归目录读取提速 22 倍

递归遍历 1 万文件目录
Bun 1.1 22×
12ms
Node.js 268ms
并发批量写入千份小文件
Bun.write()
并发场景速度提升
3×
mmap 内存映射
磁盘读写系统调用减少
62%
3.4

包管理器 bun install · 工程化效率质变

React 项目全新冷安装
bun install 4× faster
0.42s
pnpm 1.18s
npm install 1.78s
yarn 5.04s
缓存增量安装(无新增依赖)
bun 3.99s
npm 14s
领先根源
  • ▸ 二进制 lock 文件
  • ▸ 并行解析依赖树
  • ▸ 硬链接复用机制
3.5

测试运行与 WebSocket 补充基准

UNIT TEST
单元测试运行
6×

同等 Jest 测试套件,Bun 内置测试运行器速度为 Jest 的 6 倍

无额外进程创建开销
WEBSOCKET
WebSocket 广播吞吐
7×

单进程万连接高频消息推送,吞吐是 Node.js ws 库的 7 倍

内存占用仅后者 1/4
04 / ARCHITECTURE

性能领先的
底层架构根源

所有基准测试的性能差距,本质来自 Bun 与 Node.js 完全不同的底层设计取舍,也是基准测试体系需要重点观测的底层变量。

01
ENGINE

引擎选型

JSC 轻量化 VS V8 重型引擎

NODE.JS · V8

面向浏览器桌面端,启动时需初始化堆、内置缓存、字节码编译器,冷启动开销巨大

BUN · JavaScriptCore

原生为移动设备低内存场景设计,初始化路径极简,内存基线占用仅 Node 的 19%

02
RUNTIME LANG

运行时语言

Zig 替代 C++,消除内存管理开销

NODE.JS · C++ libuv

多层抽象带来大量中间内存拷贝、回调跳转开销

BUN · Zig

兼顾手动内存控制与编译期安全校验,直接绑定操作系统原生 IO 接口(io_uring),跳过 libuv 调度层

03
IO ARCHITECTURE

零拷贝全链路 IO

从网络 TCP 缓冲区到 JS 层字符串

NODE.JS

Buffer 与字符串频繁转换产生内存复制

BUN

全程复用内存块,HTTP、文件读写、WebSocket 共享一套内存池,大幅降低 GC 停顿对延迟的干扰

04
TOOLCHAIN

一体化工具链

消除多进程损耗

NODE.JS 生态

npm、esbuild、Jest、node 多个独立进程,进程创建、IPC 通讯均产生损耗

BUN 1.1

全部工具内置单二进制文件,无额外进程上下文切换开销

05 / BOUNDARIES

基准测试的边界
与工程落地客观约束

基准测试为理想空载环境数据,企业落地时需认清性能衰减边界,避免过度乐观评估。

CONSTRAINT 01

重度 CPU 计算场景差距收窄

纯数学运算、JSON 超大序列化等 CPU 密集任务中,V8 的 JIT 优化能力更强,Bun 领先幅度缩小至 10%~30%,不再具备数量级优势。该场景基准测试需单独补充长时运行 CPU 压测集。

CONSTRAINT 02

Node.js 生态兼容性损耗

当项目大量依赖原生 C++ 插件(如数据库驱动、图像处理库),Bun 需通过兼容层桥接,基准测试中吞吐会下降 30%~50%。原生适配 Bun 的第三方库才能完整释放性能。

CONSTRAINT 03

Windows 平台优化滞后

Bun 1.1 基准测试最优环境为 Linux(io_uring 完整支持),Windows 下 ES Module 加载速度仅比 Node 快 4 倍,IO 性能差距缩小,官方后续版本持续迭代 Windows IOCP 适配。

CONSTRAINT 04

长驻服务内存持续增长隐患

空载基准测试内存表现优异,但 7×24 小时线上压测中,Bun JSC GC 回收策略与 V8 存在差异,部分复杂业务会出现内存缓慢上涨,需配套监控内存 RSS 指标长期基准观测。

06 / ENGINEERING

基准测试的
工程应用场景

6.1
SELECTION

技术选型评估标尺

企业做前后端运行时技术选型时,可复刻 Bun 官方基准测试套件,导入自身业务真实代码(而非 Hello World),量化评估迁移收益。

高收益场景
CLI 工具 API 网关 实时 IM CI 流水线
6.2
REGRESSION

版本迭代性能回归检测

开发团队可将 Bun 基准脚本纳入 CI 流水线,每次升级 Bun 次要版本自动执行全套基准,监控 HTTP QPS、启动耗时、内存指标是否出现性能退化。

监控指标
HTTP QPS 启动耗时 内存指标
6.3
PROFILING

业务代码性能调优参照

基于 Bun 基准测试提供的 performance.now()、系统调用埋点能力,定位业务代码中文件串行读取、同步阻塞、频繁字符串拷贝等性能瓶颈。

定位瓶颈
串行读取 同步阻塞 字符串拷贝
07 / CONCLUSION

总结

Bun 1.1 性能基准测试不只是一组简单的测速数据,而是一套标准化、覆盖 JS 全开发链路的运行时性能评估体系。

从冷启动、高并发 HTTP、文件 IO 到工程化工具链,基准数据直观印证了 Zig + JSC + 零拷贝 IO 架构相比传统 Node.js 的革命性性能提升,为轻量后端、前端工程化、实时通讯场景提供了更低资源成本的技术方案。

同时必须明确:基准测试是理想空载环境下的理论上限,落地生产需结合自身业务负载、第三方依赖、操作系统环境做完整复测,客观看待性能优势与兼容性约束。

随着 Bun 持续迭代完善原生生态,其基准测试标准也将逐步成为 JavaScript 运行时性能评测的行业通用规范。

CORE ARCHITECTURE
Zig · JavaScriptCore · Zero-copy IO
BEST FIT
轻量后端 / 前端工程化 / 实时通讯
CAVEATS
CPU 密集 / C++ 插件 / Windows / 内存长驻