用途:当用户要求对 GPUI 代码做基准测试、复现 UI 卡顿或掉帧、评估性能修复、使用 #[gpui::bench]、解读 BenchReport,或审查基准是否贴近生产时使用。首要目标是 UI 响应性,吞吐量次之。
主要能力:支持同步计算 benchmark(bench_iter)、异步任务到完成(bench_task)、每次迭代独立准备的批量任务(bench_batched_task)、逐帧渲染与呈现(bench_renderer),以及无头渲染与帧数据(BenchReport 可含 dirty-to-draw、draw/present 间隔、每帧失效数、前景任务/动作/输入分发时长、p50/p90/p95/p99 及最大值、帧预算超支等)。#[gpui::bench] 通过 BenchAppContext 与生产式线程调度器创建 Criterion 基准,支持 fps、inputs、input_name、group、sample_size 等选项,API 仍在演进。
必要用法与规则:必须使用生产构造器、存储、执行器、渲染与同步;禁止启用任何 crate 的 test-support(直接或间接);使用 canonical 的 bench-support 特性,不能包含 test-support。检查特性图:cargo tree -p <benchmark-package> -e normal,build,dev,features,并用 cargo tree -p <benchmark-package> -e features -i gpui 等反向树定位泄漏。代理运行的每次基准或 profile 调用必须有最长五分钟硬超时(timeout_ms <= 300000),先跑 smoke/quick,再跑正式测量;测量基准不可并发运行。
适用场景:复现慢计算、长前台轮询、输入延迟、掉帧、滚动卡顿、GPU 绘制开销或真卡死;对比基线与候选提交时保持基准代码一致,使用相同优化配置、特性、Rust flags 与锁文件,并报告原始数值与百分比变化。可用 xctrace 模板 zed-bench 做归因分析,RUSTFLAGS="-C link-arg=-Wl,-no_deduplicate -C codegen-units=1" 构建仅用于符号归属,不可用于计时。
限制:无头渲染器平台上 present 会丢弃场景,不测量真实 GPU 提交,结果中须说明该限制;帧预算超支只是合成的错过截止代理,不能称为真实显示器掉帧;不得编造任何计时、帧、百分位或吞吐结果;平台支持与当前 BenchReport 具体字段取决于所固定版本,资料未提供逐项确认。