基准测试——性能基线及回归检测
何时使用
- 在 PR 前后测量性能影响
- 为项目设定性能基线
- 用户反馈“感觉变慢了”时
- 上线前——确保满足性能目标
- 将当前技术栈与替代方案进行比较
工作原理
模式 1:页面性能
通过浏览器 MCP 测量真实的浏览器指标:
1. 导航到每个目标 URL
2. 测量核心 Web 指标:
- LCP(最大内容绘制)——目标 < 2.5s
- CLS(累积布局偏移)——目标 < 0.1
- INP(与下一次绘制的交互)——目标 < 200ms
- FCP(首次内容绘制)——目标 < 1.8s
- TTFB(首字节时间)——目标 < 800ms
3. 测量资源大小:
- 页面总大小(目标 < 1MB)
- JS 包大小(目标 < 200KB gzipped)
- CSS 大小
- 图片大小
- 第三方脚本大小
4. 统计网络请求数
5. 检查渲染阻塞资源
模式 2:API 性能
对 API 端点进行基准测试:
1. 每个端点调用 100 次
2. 测量:p50、p95、p99 延迟
3. 跟踪:响应大小、状态码
4. 负载测试:10 个并发请求
5. 与 SLA 目标进行比较
模式 3:构建性能
测量开发反馈循环:
1. 冷启动构建时间
2. 热重载时间(HMR)
3. 测试套件运行时长
4. TypeScript 检查时间
5. 代码检查时间
6. Docker 构建时间
模式 4:前后对比
在变更前后运行以测量影响:
/benchmark baseline # 保存当前指标
# ... 进行更改 ...
/benchmark compare # 与基线对比
输出:
| 指标 | 之前 | 之后 | 变化 | 判定 |
|--------|--------|-------|-------|---------|
| LCP | 1.2s | 1.4s | +200ms | 警告:注意 |
| 包大小 | 180KB | 175KB | -5KB | ✓ 更优 |
| 构建 | 12s | 14s | +2s | 警告:注意 |
输出
将基线存储为 JSON 文件,位于 .ecc/benchmarks/ 目录下。这些文件由 Git 跟踪,以便团队共享基线。
集成
- CI:在每个 PR 上运行
/benchmark compare - 与
/canary-watch配合,用于部署后监控 - 与
/browser-qa配合,用于完整的发布前检查清单