关于 ln-31-performance-optimizer
专注于实测瓶颈和可比基准的性能优化技能。它引导开发者进行分析与隔离实验,只有在改进约定指标且不违反约束时才保留变更。
主要功能
- 01可复现的性能基线
- 02端到端瓶颈分析
- 03排序后的优化假设
- 04隔离式保留或丢弃实验
- 05正确性与回归检查
- 06基于证据的结果报告
适用场景
- 01调查可复现的延迟问题
- 02将候选变更与基线对比
- 03追踪资源或查询开销
- 04判断优化是否达到目标
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-31-performance-optimizer安装后在 Claude Code 中输入/ln-31-performance-optimizer确认已加载。
详细介绍
性能优化器
目标: 只优化经过测量的问题。保持正确性,隔离实验,且仅在可比证据表明改动改善了约定指标且没有造成不可接受的回退时,才保留该改动。
执行约定: 按顺序排列的复选框即为完成定义。内部将每项标记为 PENDING(待处理)、PROVEN(有具体证据证明)、CLEARED(有证据表明其条件不存在)或 UNPROVEN(存在证据缺口);阅读、委派或工具故障都不构成证明。每完成一个部分后,重新核对各项。返回前,解决所有 PENDING 项,仅统计 PROVEN 和 CLEARED 项;对每个证据缺口,应用此技能的判定和审批规则。
保留用户意图、范围和现有授权。继续已获授权的工作;仅针对尚未解决且影响重大的选择或必要的外部审批提出询问。根据实际风险调整检查深度,不得悄然跳过检查。保持依赖关系和安全顺序;其他情况下,为每项义务选择适当的验证方法。
工具路由
| 需求 | 首选工具 | 使用时机 | 后备方案 |
|---|---|---|---|
| 仓库状态和安全编辑边界 | Git 状态、差异、分支或工作树检查,以及仓库说明 | 在分析性能或编辑前始终执行 | 如果无法安全隔离用户改动,则停止 |
| 基线和最终指标 | 现有基准测试、负载测试、可复现命令或类生产环境回放 | 指标和工作负载能够反映已报告的问题时 | 创建能复现该行为的最小本地基准测试,不得臆造生产规模 |
| 瓶颈证据 | 现有分析器、跟踪、查询诊断、分配工具或操作系统级指标 | 用于定位 CPU、内存、I/O、锁、查询、网络或调度器开销 | 有针对性的检测,并制定清理计划 |
| 代码路径和影响范围 | 语言服务器或宿主平台原生代码智能工具 | 跟踪热点符号、调用方、实现及受影响的契约 | 进行范围有限的搜索,并直接检查定义和使用方 |
| 正确性和回归 | 仓库规定的测试、构建、Lint、类型检查和冒烟测试命令 | 每次保留实验改动前后 | 如果现有证据无法检测可能造成的重大回归,则选择影响范围最小的操作 |
| 运行时和依赖语义 | 与已安装版本匹配的官方文档、发行说明和规范 | 假设依赖于优化器、运行时、数据库、框架或库的行为时 | 进行一手来源的网络检索;否则将该假设标记为 UNVERIFIED |
不得出于审美偏好进行优化,也不得针对与已报告问题不同的工作负载进行基准测试。绝不丢弃用户改动、使用破坏性的 Git 重置,或对生产环境进行不受控的负载测试。
证据规则
- 如果已报告的问题可能出现在多个运行状态中,应分别评估冷启动、稳定运行的热态和饱和负载下的行为。
- 分别评估性能分析结果和端到端影响:热点函数的性能可能有所改善,但用户可见指标未必改善。
- 将分析器估算、合成工作负载和生产环境观察视为不同类别的证据,并明确标注。
- 正确性、资源安全和运行稳定性是硬性约束,并非次要指标。
检查清单
1. 明确问题并保护工作区
- 在编辑前明确用户可见的问题、工作负载、环境、主要指标、总体目标、保留实验所需的最低改进幅度,以及硬性约束。
- 确认可衡量的性能症状,并将其原因与结果错误或可观测性缺失区分开来。配置、容量和依赖项可能是有效瓶颈;只能在批准的范围内修复。
- 阅读仓库说明,并检查 Git 状态、分支、未提交的更改、被忽略的产物以及可用的隔离机制。
- 保护用户的工作;如果更改、基准测试或生成的产物可能造成干扰,请在安全分支或工作树中隔离实验。
- 建立由本次运行专属的资源清单,记录每个已创建的绝对路径、工作树、进程 ID、缓存、性能分析文件和临时产物;切勿将预先存在的资源登记为清理目标。
- 找出任何优化都不得违反的正确性、安全性、内存、成本、兼容性和运维约束。
- 查找现有基准测试、性能分析数据、性能测试、生产跟踪记录、服务级别目标以及已知的环境波动。
2. 建立可复现的基线
- 使用与已观察到的问题相同类型的指标:延迟分布、吞吐量、CPU、内存、分配、I/O、查询数、锁等待或其他直接指标。
- 使工作负载具有代表性且足够确定,以便进行比较;其中应包括数据规模、并发度、缓存状态、预热和构建模式。
- 覆盖可能改变结论的运行点——至少包括报告的情形,以及相关的数据规模或并发边界——且不得凭空编造合成规模。
- 设定足以评估显著噪声的有限比较预算;记录原始结果、合适的中心值/百分位数、离散程度、失败情况和环境信息。若测量结果无法得出结论,应如实报告,不要反复测试直到出现收益。
- 如果漂移或噪声影响显著,应交错或随机安排基线与候选方案的运行,并优先采用配对比较,而不是先集中运行一组“优化前”测试,再集中运行一组“优化后”测试。
- 在可行时,验证基准测试能否检测到有意减慢或明显改变的路径;无法感知行为变化的基准测试不能验证优化。
- 编辑前运行相关正确性测试,避免将预先存在的失败归咎于实验。
- 如果无法复现问题,且没有可信的生产证据可用于定义安全的替代指标,请停止并报告
BLOCKED。
3. 分析性能并形成假设
- 在聚焦某个函数、查询、分配、锁或网络调用之前,先分析端到端路径。
- 构建按成本排序的映射,列出测得的贡献、调用频率、可用时的包含成本和独占成本,以及受影响的工作负载。
- 将最高成本追溯到实现、调用方、数据形态、并发模型、配置和外部依赖项。
- 区分根本瓶颈与下游症状、测量开销、调试构建、冷启动和一次性初始化。
- 如果性能分析跨越了代码属于当前范围的服务或进程,应对齐跟踪记录/关联 ID,并沿测得的下游路径追踪;不要将可访问的内部服务标记为“外部”后就止步于其延迟。
- 估算性能分析器或检测手段造成的扰动,并在不使用侵入式检测的情况下确认最终端到端结果。
- 仅在能够确认或否定具体假设时,才研究运行时、框架、数据库和依赖项的官方行为。
- 在提出自定义缓存、池、调度器、序列化器或数据结构之前,检查现有平台和依赖项是否已具备相关能力。
- 编写一组按优先级排列的简短假设;对于每项假设,说明预期指标变化、作用机制、受影响的文件、风险、依赖项和验证方式。
- 拒绝缺少可测量机制、依赖推测性规模,或无法独立回滚的假设。
4. 执行原子化的保留或丢弃实验
- 将每项高风险假设映射到现有证明及其可能导致的重大回归;在获批的测试范围内实施
KEEP、ADD、UPDATE、MERGE、DELETE或有充分理由的NO_TEST,以生成最小且可信的安全证据,移除已被取代的测试产物,并在临时特征验证的触发条件结束时将其退役。 - 对于缓存、批处理、并行处理、池化或重试方面的变更,应明确保护快速路径可能破坏的失效处理、顺序、幂等性、取消、背压、超时和有界资源语义。
- 应用最小且连贯的变更来测试一种机制;仅当多个变更的效果有意不可分割时,才将其组合。
- 保持检测手段有界、低开销且易于移除;绝不要在诊断输出中留下机密或敏感载荷。
- 编辑后运行针对性的正确性检查。将失败归因于实验、基线或环境;修复范围有限的实验缺陷并重新检查,或者在无法确认正确性时丢弃实验。
- 在可比条件下重复完全相同的基线基准测试,并保留原始结果。
- 检查差异,排查意外清理、无关重构、生成内容变动、调试标志、基准测试输入变更和隐藏配置变更。
- 仅当实验达到预先声明的最低改善幅度(高于噪声),且所有硬性约束均通过时,才标记为
KEEP。 - 如果未达到保留阈值、结果退化或安全性变得不确定,则标记为
DISCARD并仅回滚该项实验;观察结果后绝不要降低阈值。 - 保留变更后,在测试下一个假设之前,先建立新的复合基线。
5. 停止、验证并报告
- 仅当新的测量结果支持另一项假设时才继续;达到约定目标、收益递减、安全选项耗尽或缺少前置条件时停止;明确报告是否达到目标。
- 确认构建、lint、类型、测试、冒烟测试、基准测试和运行证据覆盖最终保留的状态及所有必需门槛。对该状态复用通过的证据;仅当后续更改或尚未解决的失败导致证据失效时才重新运行检查。
- 仅移除本次运行所创建的台账条目:验证绝对路径仍位于获批的临时根目录内,停止记录在案的确切进程 ID,保留有未提交更改或预先存在的工作树,并保留有意报告的证据产物。
- 确认基准测试定义和验收阈值在运行期间未发生偏移。
- 将假设台账与保留的编辑内容及原始结果核对,包括已舍弃的实验。
- 仅当至少一项保留的更改在所有约束均通过的前提下,使约定指标的提升超过噪声时,才使用
IMPROVED;当所有实验均已舍弃且基线已恢复时,使用NO_CHANGE;当安全前置条件、可复现基线或安全恢复路径不可用时,使用BLOCKED。
自检
- 返回前完成核对。 检查各项证据、需求覆盖情况、矛盾、范围、结论和适用的清理工作。修正报告或获授权的产物。复用有效证据;不要自动重新扫描代码库或重新运行已成功的命令。仅针对相关更改、失败或尚未解决的证据重复检查。披露剩余缺口。
输出约定
使用用户的语言,并按以下顺序报告;保留全部五个字段,每项事实只陈述一次。简短结果可为每个字段使用一行;省略空表格,不要复制已链接的产物:
- 结果: 特定于技能的结论及有证据支持的结果。
- 范围: 审查/更改的范围、排除项、基线和重要假设。
- 证据: 以下特定于技能的字段;区分事实、推断和未经验证的声明。链接产物;适用时使用表格。
- 验证: 检查及其结果、不可用的证据,以及适用的清理工作/外部状态。
- 完成情况:
Checklist: X/Y complete;Incomplete: None,或列出每项UNPROVEN项目的原因、对结果的影响及准确的后续操作;剩余风险和所需决策。
特定于技能的证据: 目标工作负载、指标、验收阈值、正确性约束、环境、采样和方差方法;可比较的基线/最终分布及变化量。记录每项假设、机制、KEEP / DISCARD、测量结果和验证。包括受影响的测试集操作、剩余瓶颈,以及本次运行所创建的原始样本、命令、配置、最终差异和清理证据;如有,注明路径/哈希值。