自 Node.js 一统 JavaScript 后端运行时十余年以来,其基于 V8+libuv 的架构长期存在启动缓慢、IO 分层开销大、内存占用偏高的固有短板。
2024 年 4 月正式发布的 Bun 1.1 作为 v1.0 稳定版后的首个重大迭代,以「极致性能+全链路工具一体化」为核心定位,重构了文件系统、HTTP 服务、模块加载、包管理器四大核心模块。
官方同步配套完整标准化性能基准测试套件,成为业界对比 JS 运行时性能的核心标尺。
hyperfine、bombardier 无偏压负载工具
autocannon 自身性能瓶颈带来的失真
区分冷启动(无缓存、无预加载)与热运行(常驻进程、缓存命中)两套测试集,分别对应脚本工具、线上服务两种业务形态。
每个用例至少循环执行 10 次,输出均值、标准差、最大/最小值,过滤操作系统调度、磁盘 IO 抖动带来的单次极值。
不只统计耗时,同步采集 CPU 使用率、RSS 内存、系统调用次数、文件读写次数四类硬件资源指标。
空 TS/JS 文件、CLI 工具、短脚本执行耗时
原生 Bun HTTP、Express 兼容层 Hello World QPS、延迟分位值
递归目录读取、批量文件读写、大文本流式处理
全新项目冷安装、缓存增量安装、lock 文件解析速度
Jest 语法测试套件、TS 项目测试执行耗时
百万连接广播、单连接高频率消息吞吐
JavaScriptCore 引擎,原生面向移动端轻量化设计Zig 编写io_uring / IOCP同等 Jest 测试套件,Bun 内置测试运行器速度为 Jest 的 6 倍
单进程万连接高频消息推送,吞吐是 Node.js ws 库的 7 倍
所有基准测试的性能差距,本质来自 Bun 与 Node.js 完全不同的底层设计取舍,也是基准测试体系需要重点观测的底层变量。
JSC 轻量化 VS V8 重型引擎
面向浏览器桌面端,启动时需初始化堆、内置缓存、字节码编译器,冷启动开销巨大
原生为移动设备低内存场景设计,初始化路径极简,内存基线占用仅 Node 的 19%
Zig 替代 C++,消除内存管理开销
多层抽象带来大量中间内存拷贝、回调跳转开销
兼顾手动内存控制与编译期安全校验,直接绑定操作系统原生 IO 接口(io_uring),跳过 libuv 调度层
从网络 TCP 缓冲区到 JS 层字符串
Buffer 与字符串频繁转换产生内存复制
全程复用内存块,HTTP、文件读写、WebSocket 共享一套内存池,大幅降低 GC 停顿对延迟的干扰
消除多进程损耗
npm、esbuild、Jest、node 多个独立进程,进程创建、IPC 通讯均产生损耗
全部工具内置单二进制文件,无额外进程上下文切换开销
基准测试为理想空载环境数据,企业落地时需认清性能衰减边界,避免过度乐观评估。
纯数学运算、JSON 超大序列化等 CPU 密集任务中,V8 的 JIT 优化能力更强,Bun 领先幅度缩小至 10%~30%,不再具备数量级优势。该场景基准测试需单独补充长时运行 CPU 压测集。
当项目大量依赖原生 C++ 插件(如数据库驱动、图像处理库),Bun 需通过兼容层桥接,基准测试中吞吐会下降 30%~50%。原生适配 Bun 的第三方库才能完整释放性能。
Bun 1.1 基准测试最优环境为 Linux(io_uring 完整支持),Windows 下 ES Module 加载速度仅比 Node 快 4 倍,IO 性能差距缩小,官方后续版本持续迭代 Windows IOCP 适配。
空载基准测试内存表现优异,但 7×24 小时线上压测中,Bun JSC GC 回收策略与 V8 存在差异,部分复杂业务会出现内存缓慢上涨,需配套监控内存 RSS 指标长期基准观测。
企业做前后端运行时技术选型时,可复刻 Bun 官方基准测试套件,导入自身业务真实代码(而非 Hello World),量化评估迁移收益。
开发团队可将 Bun 基准脚本纳入 CI 流水线,每次升级 Bun 次要版本自动执行全套基准,监控 HTTP QPS、启动耗时、内存指标是否出现性能退化。
基于 Bun 基准测试提供的 performance.now()、系统调用埋点能力,定位业务代码中文件串行读取、同步阻塞、频繁字符串拷贝等性能瓶颈。
Bun 1.1 性能基准测试不只是一组简单的测速数据,而是一套标准化、覆盖 JS 全开发链路的运行时性能评估体系。
从冷启动、高并发 HTTP、文件 IO 到工程化工具链,基准数据直观印证了 Zig + JSC + 零拷贝 IO 架构相比传统 Node.js 的革命性性能提升,为轻量后端、前端工程化、实时通讯场景提供了更低资源成本的技术方案。
同时必须明确:基准测试是理想空载环境下的理论上限,落地生产需结合自身业务负载、第三方依赖、操作系统环境做完整复测,客观看待性能优势与兼容性约束。
随着 Bun 持续迭代完善原生生态,其基准测试标准也将逐步成为 JavaScript 运行时性能评测的行业通用规范。