Skip to Content
文档utoo性能基准

性能基准

本文说明 utoo 包管理器基准测试中的不同指标、测试口径和如何解读结果。完整数据与历史记录见 GitHub issue #3250 。

表中的耗时越低越好。不同平台、镜像源、网络拓扑和文件系统会影响绝对耗时,因此不同环境的结果不应直接混合做统计比较。

指标说明

指标中文名称测试前状态主要衡量
p0完全冷启动无 lockfile、无 manifest 缓存、无 tarball/package store、无 node_modules首次安装时的依赖解析、网络请求、下载、解压和写入成本
p3仅 lock 冷启动lockfile 已存在,但 tarball/package store 和 node_modules 被移除已锁定依赖图后,在无包缓存时恢复依赖的能力
p4热缓存安装lockfile 和 tarball/package store 已存在,仅移除 node_modules命中全局包缓存后,重建项目依赖目录的能力

不要使用“无 lockfile 但 manifest 缓存是热的”作为对比场景。Bun 会在短时间内保留较新的 manifest 且不重新校验,这个状态会让 Bun 获得不符合真实冷启动语义的额外优势。

2026-08-27

registry.npmjs.org · GitHub Actions

  • Harness branch/commit:codex/pm-bench-pnpm12 / 2204fd0f4
  • 项目:ant-design
  • 镜像源:https://registry.npmjs.org
  • 工作流:GitHub Actions #33039114486 
  • 版本:utoo 基于 2204fd0f4 构建、Bun 1.4.0、pnpm 10.34.5、pnpm 12.0.0、aube 1.29.1
  • 采样:p0 / p3 各 1 次正式采样,p4 5 轮交错采样;p0 / p3 仅作为 smoke 方向性证据

Linux (ubuntu-latest)

场景utooBunpnpm 10pnpm 12aube
完全冷启动 (p0)7.87s9.62s29.56s10.14s16.13s
仅 lock 冷启动 (p3)9.66s10.40s18.32s10.58s—
热缓存安装 (p4)2.35s ± 0.04s3.65s ± 0.34s6.14s ± 0.07s3.39s ± 0.24s—

macOS (macos-latest, Apple Silicon)

场景utooBunpnpm 10pnpm 12aube
完全冷启动 (p0)20.46s23.42s57.19s30.32s51.44s
仅 lock 冷启动 (p3)15.80s25.31s60.12s31.55s—
热缓存安装 (p4)4.76s ± 0.20s6.43s ± 0.42s24.69s ± 3.67s21.89s ± 2.63s—

这轮 smoke 中,utoo 在 Linux 和 macOS 的三个用户可见安装场景里均最快。aube 完成了 p0,但其 seed 步骤没有生成预期的 aube-lock.yaml,因此 harness 拒绝了 p3 / p4 单元,没有记录无锁或陈旧状态的耗时。

registry.npmmirror.com · Linux China

  • Harness branch/commit:codex/pm-bench-pnpm12 / 2204fd0f4
  • 项目:ant-design at e8fbc23658a323812864d56d53b5d25b73784dd1
  • 环境:Linux China x86_64,96 logical CPUs、16 GiB RAM、Node.js 22.18.0
  • 镜像源:https://registry.npmmirror.com
  • 网络:直连;代理环境变量未设置,benchmark 命令显式指定 npmmirror
  • 版本:utoo 基于 2204fd0f4 构建、Bun 1.3.14、pnpm 10.34.5、pnpm 12.0.0、aube 1.29.1
  • 采样:p0 / p3 各 3 轮交错采样,p4 5 轮交错采样
场景utooBunpnpm 10pnpm 12aube
完全冷启动 (p0)12.04s ± 1.25s19.63s ± 1.32s33.88s ± 0.64s18.50s ± 6.22s26.47s ± 7.65s
仅 lock 冷启动 (p3)22.28s ± 12.71s31.75s ± 15.11s40.70s ± 11.64s31.67s ± 10.09s—
热缓存安装 (p4)1.22s ± 0.07s4.58s ± 0.32s9.86s ± 0.48s2.60s ± 0.09s—

解读:

  • p0:utoo 的均值最快;pnpm 12 的均值比 utoo 慢约 54%,但两者波动都应结合原始样本解读。
  • p3:utoo 的均值最快,pnpm 12 慢约 42%;该阶段方差较高,只适合作为方向性结论。
  • p4:utoo 为 1.22s,pnpm 12 为 2.60s;两组方差都较小,是本轮最稳定的领先信号。
  • aube 的 p3 / p4 因没有生成预期 lockfile 被拒绝,不参与排名。

测试口径

阶段化 harness 会为每个包管理器使用独立 store,恢复各自 lockfile,禁用生命周期脚本,并在不同轮次中交替包管理器执行顺序,减少网络波动和执行顺序对结果的影响。

测试还会记录网络流量,用于拒绝意外变冷的 warm 单元。例如 p4 应该主要复用已有 lockfile 和 tarball/package store;如果仍出现明显下载流量,就不能作为有效热缓存结果。

旧的 pm-bench-all 结果不应作为 utoo 与 Bun 的性能对比引用。该脚本的 warm 准备步骤会删除生成的 lockfile,但保留全局缓存,实际测量的是“热 manifest 缓存下的重新解析”,不符合这里的 p4 定义。

Last updated on