perf-profile

$npx mdskill add pixel-cellar/Claude-Code-Game-Studios/perf-profile

当此技能被调用时:

SKILL.md
.github/skills/perf-profileView on GitHub ↗
---
name: perf-profile
description: "结构化的性能分析工作流。识别瓶颈、与性能预算对比测量,并生成带有优先级排序的优化建议。"
argument-hint: "[系统名称 或 'full']"
user-invocable: true
allowed-tools: Read, Glob, Grep, Bash
---

当此技能被调用时:

1. **确定范围**根据参数:
   - 如果是系统名称:专注于该特定系统的分析
   - 如果是 `full`:对所有系统进行全面分析

2. **读取性能预算** — 检查设计文档或 CLAUDE.md 中是否有现有性能目标:
   - 目标 FPS(例如 60fps = 16.67ms 帧预算)
   - 内存预算(总量和按系统)
   - 加载时间目标
   - Draw Call 预算
   - 网络带宽限制(如果是多人游戏)

3. **分析代码库**中的常见性能问题:

   **CPU 分析目标**:
   - `_process()` / `Update()` / `Tick()` 函数 — 列出所有并估算开销
   - 大集合上的嵌套循环
   - 热路径中的字符串操作
   - 每帧代码中的分配模式
   - 未优化的游戏实体搜索/排序
   - 每帧执行的昂贵物理查询(射线检测、重叠检测)

   **内存分析目标**:
   - 大型数据结构及其增长模式
   - 纹理/资源内存占用估算
   - 对象池 vs 实例化/销毁模式
   - 泄漏的引用(应该释放但未释放的对象)
   - 缓存大小和淘汰策略

   **渲染目标**(如适用):
   - Draw Call 估算
   - 重叠透明物体导致的过度绘制
   - 着色器 (Shader) 复杂度
   - 未优化的粒子系统
   - 缺失 LOD (Level of Detail) 或遮挡剔除 (Occlusion Culling)

   **I/O 目标**:
   - 存档/读档性能
   - 资源加载模式(同步 vs 异步)
   - 网络消息频率和大小

4. **生成性能分析报告**:

   ```markdown
   ## 性能分析:[系统或全面]
   生成日期:[日期]

   ### 性能预算
   | 指标 | 预算 | 估算当前值 | 状态 |
   |------|------|-----------|------|
   | 帧时间 | [16.67ms] | [估算值] | [正常/警告/超标] |
   | 内存 | [目标] | [估算值] | [正常/警告/超标] |
   | 加载时间 | [目标] | [估算值] | [正常/警告/超标] |
   | Draw Call | [目标] | [估算值] | [正常/警告/超标] |

   ### 发现的热点
   | # | 位置 | 问题 | 预估影响 | 修复工作量 |
   |---|------|------|---------|-----------|
   | 1 | [文件:行号] | [描述] | [高/中/低] | [小/中/大] |
   | 2 | [文件:行号] | [描述] | [高/中/低] | [小/中/大] |

   ### 优化建议(按优先级排序)
   1. **[标题]** — [优化描述]
      - 位置:[文件:行号]
      - 预期收益:[估算值]
      - 风险:[低/中/高]
      - 方案:[实现方式]

   ### 快速见效(每个不到 1 小时)
   - [简单优化 1]
   - [简单优化 2]

   ### 需要进一步调查
   - [需要实际运行时分析来确定影响的领域]
   ```

5. **输出报告**并附带摘要:前 3 个热点、相对于预算的估算余量,以及建议的下一步行动。

### 规则
- 不要先测量就优化 — 对性能的直觉是不可靠的
- 建议必须包含预估影响 — "让它更快"不具有可操作性
- 在目标硬件上进行分析,而不仅仅是开发机器
- 区分 CPU 瓶颈、GPU 瓶颈和 I/O 瓶颈
- 考虑最坏情况(最大实体数、最低配置硬件、最差网络条件)
- 静态分析(本技能)识别候选;运行时分析确认
More from pixel-cellar/Claude-Code-Game-Studios