/bench 目录中找到。
测量时间
为了精确测量时间,Bun 提供了两个运行时 API 函数:- Web 标准的
performance.now()函数 Bun.nanoseconds(),类似于performance.now(),但它返回应用程序启动以来的当前时间,单位为纳秒。你可以使用performance.timeOrigin将其转换为 Unix 时间戳。
基准测试工具
编写自己的基准测试时,选择合适的工具非常重要。- 对于微基准测试,一个很好的通用工具是
mitata。 - 对于负载测试,你必须使用至少与
Bun.serve()同样快速的 HTTP 基准测试工具,否则你的结果会受到影响。一些流行的基于 Node.js 的基准测试工具如autocannon速度不够。我们推荐以下工具之一: - 对于基准测试脚本或 CLI 命令,我们推荐
hyperfine。
测量内存使用
Bun 有两个堆。一个堆用于 JavaScript 运行时,另一个堆用于其他所有内容。JavaScript 堆统计
bun:jsc 模块暴露了一些用于测量内存使用的函数:
查看示例统计
查看示例统计
bun:jsc 模块生成堆快照,然后用 Safari 或 WebKit GTK 开发者工具查看。生成堆快照:
heap.json 文件:
- 打开开发者工具
- 点击「Timeline」(时间轴)
- 在左侧菜单点击「JavaScript Allocations」(JavaScript 分配)。可能需要点击铅笔图标才能显示所有时间轴
- 点击「Import」(导入),选择你的堆快照 JSON


网页调试器 也提供时间轴功能,允许你追踪并检查运行中的调试会话的内存使用情况。
本地堆统计
Bun 另外使用 mimalloc 管理其他堆。要报告非 JavaScript 内存使用的汇总信息,设置环境变量MIMALLOC_SHOW_STATS=1,退出时会打印统计信息。
terminal
CPU 性能分析
使用--cpu-prof 标志分析 JavaScript 执行性能,以识别性能瓶颈。
terminal
.cpuprofile 文件,你可以在 Chrome DevTools(性能标签页 → 加载配置文件)或 VS Code 的 CPU 分析器中打开。
选项
terminal
| 标志 | 说明 |
|---|---|
--cpu-prof | 启用性能分析 |
--cpu-prof-name <filename> | 设置输出文件名 |
--cpu-prof-dir <dir> | 设置输出目录 |