基准测试
基准测试套件是 Zero 目标的回归信号:小产物、快速构建、可预测输出和低开销。
在本地运行:
pnpm run bench报告写入:
.zero/bench/latest.json趋势产物写入:
.zero/bench/trends/latest.json
.zero/bench/trends/summary.md测试用例
当前用例包括:
hello:最小化输出add:算术运算和辅助函数structs:类型构造和直接字段访问params:多个类型化参数和嵌套调用buffers:固定数组、span、copy/fill 和字节相等性判断parser:类解析器的 token 元数据和直接谓词检查codec:std.codec循环、varint 长度和 CRC-32parse:扫描器风格的数字解析slices、arena、fallibility、branches:内存视图、固定缓冲区分配风格、显式可失败分支和分支密集型循环module-package、rescue:包图开销和局部 rescue 降低fs-resource、mem-copy-fill、zero-hash:针对文件资源元数据、内存辅助函数和确定性字节载荷处理的 Zero 专项用例
这些用例的 Zero 源码位于 benchmarks/zero 目录下。不支持直接可执行运行器的宿主目标会将该用例报告为 skipped 并附上原因,而非导致整个基准测试运行失败。
指标
buildMs:编译器命令的挂钟时间runMs:多次重复可执行运行的中位挂钟时间runMinMs:多次重复可执行运行的最小挂钟时间runRuns:每次运行的原始挂钟计时artifactBytes:输出可执行文件大小compressedArtifactBytes:gzip 压缩后的可执行文件大小peakRssBytes:最大常驻内存集大小(可用时)expectedStdout和outputMatches:用于捕获偏差的语义检查
声明与限制
请谨慎使用这些数据:
- 构建时间由
buildMs表示 - 产物大小由
artifactBytes表示 - 压缩大小由
compressedArtifactBytes表示 - 运行时间由各用例的运行指标表示
不要将单次本地运行视为权威的性能声明。进程启动、宿主机负载和缓存状态都会影响结果。
选项
更改重复次数:
ZERO_BENCH_RUNS=<n> pnpm run bench显式运行沙箱后端:
ZERO_BENCH_MODE=sandbox pnpm run bench沙箱模式会准备一个隔离环境,适用于 CI。本地模式是默认的公开工作流。