← ClaudeAtlas

forge-perflisted

Use when measuring performance baselines, benchmarking latency/throughput, profiling memory leaks, or running performance optimization loops.
gldu/dev-forge · ★ 1 · AI & Automation · score 62
Install: claude install-skill gldu/dev-forge
# forge-perf — 性能基准与压测优化 ## Goal 测量系统性能基准,识别 QPS/p95/p99 延迟瓶颈与内存泄漏,并通过测量驱动的迭代循环优化核心路径。 ## 触发条件 - **何时触发**: - 有明确的性能指标需求(用户给定目标:延迟 / 吞吐 / 打包体积)。 - 线上卡顿、请求超时、CPU/内存飙高,需要定位瓶颈并压测。 - 容量规划:评估当前系统上限,为扩容或限流提供依据。 - 依赖升级前后对比:框架 / 中间件 / 关键库版本变更后的回归压测。 - **何时不该触发**: - **没有基线的「凭感觉优化」**:无法量化测量就禁止开工,先补压测工具与基线。 - **随手优化**:非性能任务的开发中顺手改一段循环、顺手加个缓存 → 不启动本 skill,按原任务走,收益顺手记录即可。 - 用户只有「想要更快的代码」的模糊诉求、给不出具体指标 → 先向用户要可测目标,否则回到上一条。 ## Workflow ### 1. 建立性能基准 (Baseline Measurement) 1. 在未修改代码前,运行基准测试并记录初始指标: - 吞吐量 (QPS / RPS) - 延迟分布 (p50 / p95 / p99) - CPU 与 内存 峰值占用 - 前端打包体积 / 首屏加载 (LCP / FID) 2. Baseline 采集后,立即与用户确认**完成标准(目标设定)**: - 必须写成可测数字(如 `p95 < 100ms`、`QPS ≥ 1000`、`LCP < 2.5s`),禁止「尽量快一点」这类空话。 - 未确认目标之前**不进入优化循环**(对齐 R5.5:性能判断必须基于可量化指标)。 - 记录目标、Baseline 采集时间与代码版本,作为后续对比与「退出条件」的依据。 ### 2. 瓶颈分析与诊断 (Profiling) 1. 定位性能瓶颈的根因: - **数据库层**:全表扫描、未建索引、N+1 查询。 - **计算与 IO**:大循环、同步阻塞 IO、未使用的过大依赖。 - **前端层**:重复渲染、大图未压缩、阻塞主线程的长任务。 ### 3. 递归优化与对比 (Benchmark Iteration Loop) 1. 提出 2~3 种优化方案(如增加缓存、异步并行化、批量处理、索引优化)。 2. 逐一应用方案并重复运行基准测试。 3. **保留条件**:仅保留产生显著性能提升且 100% 跑通全量单元测试的方案。 4. 单轮收益低于退出阈值 → 停止迭代,走「退出条件」。 ### 4. 输出性能对比报告 输出 Benchmark 对比表: | 指标 | 优化前 (Baseline) | 优化后 (Optimized) | 提升幅度 | |---|---|---|---| | p95 延迟 | 450ms | 45ms | ⚡ 90% | | QPS | 120 req/s | 1100 req/s | ⚡ 9.1x | ## 退出条件 - 单轮优化收益 **< 5%**(或与���户约定的阈值)→ **停止迭代**,输出报告说明收益与放弃的方案,禁止无休止微调。 - 收益显著但全量测试不过 → **丢弃该方案**,回滚到上一版本,禁止携带不过测的优化。 - 完成标准已达成 → 输出报告并收尾。 - 达到退出条件后仍想继续 → 必须回到「目标设定」重新与用户确认新目标,不得自动