/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」(JavaScript 分配)。可能需要点击铅笔图标才能显示所有时间轴
- 点击「Import」(导入),选择你的堆快照 JSON


Web 调试器的时间轴还会跟踪正在运行的调试会话的内存使用情况。
本地堆统计
Bun 使用 mimalloc 管理另一个堆。要打印非 JavaScript 内存使用情况的摘要,请调用Bun.unsafe.mimallocDump()。
CPU 性能分析
使用--cpu-prof 标志分析 JavaScript 执行性能,以识别性能瓶颈。
terminal
--cpu-prof 会写入一个 .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
堆分析
退出时生成堆快照以分析内存使用并发现内存泄漏。terminal
--heap-prof 写入一个 V8 .heapsnapshot 文件,你可以在 Chrome DevTools 中加载该文件(“Memory”标签页 → “Load”)。
Markdown 输出
使用--heap-prof-md 来生成 CLI 友好的 Markdown 堆分析报告:
terminal
如果同时指定了
--heap-prof 和 --heap-prof-md,则以 Markdown 格式为准。选项
terminal