Repolode
tinylibs

tinylibs/tinybench

一个简单、轻量、无依赖的 JavaScript 基准测试库,可在多种 JavaScript 运行时中使用。

Star
2,385
Fork
60
未关闭 Issue
14
最近提交
4小时前

这是什么?

Tinybench 是一个用于衡量 JavaScript 函数性能的小型库。通过实例化 Bench 类并添加具名任务,即可运行并获得延迟和吞吐量统计,包括平均值、中位数、标准差、误差范围和百分位数等。它基于 Web API 实现,计时使用 process.hrtime 或 performance.now,可在多种 JavaScript 运行时中运行。

任务函数可以是同步或异步的,异步函数会被自动识别。库支持按任务或跨任务的并发模式,并以兼容 Event 的方式派发 cycle、warning 等事件。配置项涵盖计时器选择、可选的计时开销校正、样本保留以及基于 AbortSignal 的取消。结果以数据形式返回而非直接打印,bench.table() 可生成适用于 console.table() 的输出。

该包没有任何依赖,通过 npm 发布。

核心功能

  • 01对延迟和吞吐量进行统计分析,包括百分位数和误差范围。
  • 02同时支持同步与异步任务,并自动识别异步函数。
  • 03提供并发模式,可并行执行任务迭代或多个任务。
  • 04以兼容 EventTarget 的方式派发 cycle 和计时器饱和警告事件。
  • 05可选择时间戳提供者,并支持计时开销校正。
  • 06在 bench 和 task 两个层级支持 AbortSignal 中止。

适用场景

  • 比较同一功能不同 JavaScript 实现的性能差异。
  • 测量异步操作的耗时,例如 I/O 相关代码路径。
  • 在测试套件或 CI 任务中以编程方式读取基准结果。
  • 在 Node.js、Bun 等不同 JavaScript 运行时之间进行微基准测试。

快速上手

  1. 1

    使用 npm 将 tinybench 安装为开发依赖

    npm install -D tinybench
  2. 2

    在 JavaScript 或 TypeScript 文件中导入 Bench,添加任务并调用 run()

使用前须知

  • 对于接近计时器精度的工作,README 建议使用 overriddenDuration,因为计时开销可能使结果产生偏差。
  • 默认不输出任何结果,需要自行提取并打印统计数据。

标签

常见问题

tinybench 是什么?
一个简单、轻量、无依赖的 JavaScript 基准测试库,可在多种 JavaScript 运行时中使用。 Tinybench 是一个用于衡量 JavaScript 函数性能的小型库。通过实例化 Bench 类并添加具名任务,即可运行并获得延迟和吞吐量统计,包括平均值、中位数、标准差、误差范围和百分位数等。它基于 Web API 实现,计时使用 process.hrtime 或 performance.now,可在多种 JavaScript 运行时中运行。
tinybench 可以免费使用吗?用的什么许可证?
tinybench 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
tinybench 还在维护吗?
活跃维护中。tinybench 最近一次提交是在 2026年10月22日。
tinybench 适合用来做什么?
比较同一功能不同 JavaScript 实现的性能差异。 测量异步操作的耗时,例如 I/O 相关代码路径。 在测试套件或 CI 任务中以编程方式读取基准结果。 在 Node.js、Bun 等不同 JavaScript 运行时之间进行微基准测试。
tinybench 怎么安装和运行?
使用 npm 将 tinybench 安装为开发依赖: npm install -D tinybench 在 JavaScript 或 TypeScript 文件中导入 Bench,添加任务并调用 run()
在哪里获取 tinybench?
源代码和安装说明在 GitHub 上:https://github.com/tinylibs/tinybench

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目