/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 分析器中打开。
Markdown 输出
使用--cpu-prof-md 来生成 markdown 格式的 CPU 分析报告,这种格式便于 grep,且适合大型语言模型(LLM)分析:
terminal
--cpu-prof 和 --cpu-prof-md 来同时生成两种格式:
terminal
BUN_OPTIONS 来触发分析:
terminal
选项
terminal
| 标志 | 说明 |
|---|---|
--cpu-prof | 生成 .cpuprofile JSON 文件(Chrome DevTools 格式) |
--cpu-prof-md | 生成 markdown 格式的 CPU 分析报告 |
--cpu-prof-name <filename> | 设置输出文件名 |
--cpu-prof-dir <dir> | 设置输出目录 |
堆分析
退出时生成堆快照以分析内存使用并发现内存泄漏。terminal
.heapsnapshot 文件,可以在 Chrome DevTools(Memory 标签页 → 加载)中加载。
Markdown 输出
使用--heap-prof-md 来生成 CLI 友好的 markdown 堆分析报告:
terminal
如果同时指定了
--heap-prof 和 --heap-prof-md,则以 markdown 格式为准。选项
terminal
| 标志 | 说明 |
|---|---|
--heap-prof | 退出时生成 V8 .heapsnapshot 文件 |
--heap-prof-md | 退出时生成 markdown 格式的堆分析报告 |
--heap-prof-name <filename> | 设置输出文件名 |
--heap-prof-dir <dir> | 设置输出目录 |