/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.generateHeapSnapshot() 获取堆快照,然后使用 Safari 或 WebKit GTK 开发者工具查看。生成堆快照:
heap.json 文件:
- 打开开发者工具
- 点击”Timeline”
- 点击左侧菜单中的”JavaScript Allocations”。可能需要点击铅笔图标显示所有时间线才能看到
- 点击”Import”并选择你的堆快照 JSON


Web 调试器的时间线也会跟踪正在调试会话的内存使用情况。
原生堆统计
Bun 对另一个堆使用 mimalloc。要打印非 JavaScript 内存使用摘要,调用Bun.unsafe.mimallocDump()。
CPU 性能分析
使用--cpu-prof 标志分析 JavaScript 执行以识别性能瓶颈。
terminal
--cpu-prof 会写入一个 .cpuprofile 文件,你可以在 Chrome DevTools(Performance 标签 → Load profile)或 VS Code 的 CPU 分析器中打开。
Markdown 输出
使用--cpu-prof-md 生成 markdown 格式的 CPU 分析文件,便于 grep 和 LLM 分析:
terminal
--cpu-prof 和 --cpu-prof-md 可一次生成两种格式:
terminal
BUN_OPTIONS 环境变量传递该标志:
terminal
选项
terminal
堆分析
在退出时生成堆快照以分析内存使用并查找内存泄漏。terminal
--heap-prof 会写入一个 V8 .heapsnapshot 文件,你可以在 Chrome DevTools(Memory 标签 → Load)中加载。
Markdown 输出
使用--heap-prof-md 生成 markdown 格式的堆分析文件,适用于 CLI 分析:
terminal
如果同时指定了
--heap-prof 和 --heap-prof-md,则使用 markdown 格式。选项
terminal