CPU 性能剖析分析器
从 V8 和 DevTools 性能文件中定位性能瓶颈。
技能主要读取并分析本地性能文件,未要求凭据、网络服务或高权限;但小文件步骤会直接覆盖原始 profile/trace,未要求用户确认、备份或回滚,也未说明性能数据可能包含敏感代码路径,因此扣分。
格式识别、数据结构和分析流程较连贯,且包含超大文件处理思路;但没有针对关键路径的技能专属测试,解析代码对精确 JSON 格式有隐含假设,异常输入、缺失字段和解析失败的反馈不足,静态评估按上限限制扣分。
明确覆盖 cpuprofile、Chrome trace、CPU、布局、渲染、GC、输入延迟和多进程场景,触发条件较清楚;但未充分声明不适用范围、输入变体、输出契约或中文/本地网络环境适配,因此扣分。
文档结构清晰,采用分部分和渐进式步骤,包含格式、示例、限制及大型文件说明;但缺少技能专属版本、变更记录、维护责任、更新路径、安装说明和常见故障排查,仓库级 MIT 与 Microsoft 信息不能补足这些缺口。
提供了可直接改写为 Node.js 分析脚本的流程、指标和报告结构,核心分析任务具有明显实用价值;但技能本身不提供现成命令、可验证输出或样例结果,部分代码仍需用户自行整合和校正,边际收益与结果完整性证据有限。
SKILL.md 是可审计的一手材料,仓库也提供一般性 CI 和测试基础设施;但所给 CI 与该技能关键路径无直接覆盖,未见技能专属测试、真实执行结果或第三方复核,因此只能给予有限静态证据分。
- 小文件重格式化示例会直接写回输入文件;使用前应复制文件并要求用户确认。
- 超大文件解析示例依赖严格的 JSON 键格式,可能无法处理空白、转义字符串或格式变体。
- 未提供技能专属测试、可执行入口或示例结果;应将输出视为近似分析,并人工核验时间线、采样和 trace 关联。
- 性能 profile 和 trace 可能包含文件路径、函数名、用户行为或业务数据;共享前应脱敏。
它能做什么 & 适用场景
该技能专用于分析 V8 采样分析器生成的 .cpuprofile 文件,以及 Chrome/Electron DevTools 生成的 Trace-*.json 文件。它可重建调用栈和时间线,计算函数自耗时与总耗时,并比较不同代码路径。对于 DevTools trace,它还可分析长任务、布局与绘制、用户计时标记、垃圾回收、输入延迟以及 Browser、Renderer 和 GPU 进程。它属于 microsoft/vscode 仓库中的独立技能,仓库采用 MIT 许可证。
读取并解析 .cpuprofile 或 Trace-*.json 文件;根据文件大小选择 JSON.parse 或基于 Buffer 的分段解析;为 CPU profile 建立节点和父子关系、从 timeDeltas 重建时间戳并遍历采样调用栈;在 trace 中识别 Renderer 的 CrRendererMain 线程、用户计时标记、超过 50 毫秒的长任务、较慢的 FunctionCall、布局和绘制事件、GC 事件及输入事件;必要时从 ProfileChunk 重建嵌入式 CPU profile;通过 Node.js 脚本生成时间线、持续时间、函数耗时、关键调用栈和进程分解等分析结果。
- VS Code 开发者拿到 .cpuprofile 文件,需要找出消耗 CPU 时间最多的函数。
- 工程师比较同一份 profile 中的旧实现和新实现,定位两条代码路径的成本差异。
- 性能调查人员分析 Trace-*.json 中的长任务、布局抖动、绘制开销或渲染瓶颈。
- 开发者需要根据 code/willResolveTextFileEditorModel 和 code/didResolveTextFileEditorModel 等用户计时标记测量阶段耗时。
- 需要了解 VS Code Renderer、Browser 和 GPU 进程在一次性能记录中分别执行了哪些工作。
优缺点一览
- 同时覆盖 V8 CPU profile 和 Chrome/Electron DevTools trace 两种格式。
- 分析范围从调用栈和函数耗时扩展到长任务、用户计时、布局绘制、GC、输入延迟和多进程行为。
- 明确区分 self time、total time、wall-clock duration 和 thread duration,有助于解释 CPU 成本与线程等待。
- 为超大文件提供基于 Buffer 的解析策略,并建议过滤到相关进程和线程以降低噪声。
- SKILL.md 主要提供分析流程和示例脚本,不包含独立可执行的分析工具或测试套件。
- 需要本地文件读取、写入和 Node.js 运行环境;代理还需要能够执行分析脚本。
- 采样分析并不记录每个函数,函数名可能缺失或因打包、压缩而混淆,结果应视为近似和模式分析。
- 源材料未说明在除 VS Code 相关场景之外的应用程序或平台上的验证情况。
如何安装
该仓库包含 61 个技能;本技能位于 .github/skills/cpu-profile-analysis/SKILL.md。提供的 README 未记录独立安装命令或将该文件复制到其他客户端的步骤,因此应按所用 Agent Skills 客户端的技能加载方式使用该目录。仓库源代码采用 MIT 许可证。
如何使用
将 .cpuprofile 或 Trace-*.json 文件提供给支持该技能的代理,并提出具体问题,例如:“分析这个 Trace-*.json,找出 Renderer 主线程中超过 50ms 的长任务、最耗时的函数调用和布局事件。” 对大于约 400MB 的文件,应使用 Buffer 分段解析,并用 node --max-old-space-size=16384 运行分析脚本;这些分析命令和脚本由 SKILL.md 给出。