关于 optimization
Optimization 是用于提升系统效率的开发技能,通过测量和瓶颈分析指导优化。它引导开发者先设定指标并建立基线,再实施高影响改动并重新测量。
主要功能
- 01定义可测量的目标指标
- 02建立可重复的基线
- 03归因资源开销
- 04检查算法与架构
- 05优先处理宏观优化
- 06重新测量并检查回归
适用场景
- 01排查高延迟或内存用量
- 02定位工作负载中的瓶颈
- 03对照基线验证性能改动
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 1jehuang/ jcode --skill optimization安装后在 Claude Code 中输入/optimization确认已加载。
详细介绍
优化
当任务涉及让系统运行更快、更轻量、更具扩展性或以其他方式提高效率时,使用此技能。
核心原则
要正确优化,你必须了解:
- 你追求哪些指标
- 真正的瓶颈在哪里
不要盲目优化。
1. 首先定义目标指标
修改代码前,确保测量方法正确。
- 确定真正重要的具体指标:延迟、吞吐量、内存、CPU、启动时间、编译时间、查询次数、令牌用量、成本等。
- 全面测量,而不只是测量方便获取的一部分。
- 确保指标准确,且能代表实际工作负载。
- 优先选择运行速度快的测量方式,以便快速迭代。
- 如果可能,创建可重复的基准测试或脚本,确保改进可验证。
2. 全面定位瓶颈
你应该能清楚地追踪系统各部分的运行情况。
- 为系统添加监测,了解时间和资源花在了哪里。
- 尽量同时采用:
- 临时检查,用于快速调试
- 记录测量数据,用于后续分析和比较
- 追踪完整执行路径上的工作,而不只是显而易见的慢速组件。
- 确保数据足够详细,能够解释成本的来源。
如果能在事后通过日志或跟踪分析运行情况,通常会比只依赖实时检查强大得多。
3. 同时进行静态分析
并非所有优化问题都需要先进行运行时性能分析。通常,检查代码就能发现问题。
检查以下方面:
- 渐近复杂度不合理
- 算法或数据结构选择不当
- 不必要的重复工作
- 在错误的层级执行工作
- 架构或控制流效率低下
- 方向性错误的方法
在调整细节前,先确保渐近复杂度合理,整体算法可行。
4. 先进行宏观优化,再进行微观优化
优先处理收益最大的改进。
- 与其让现有工作稍微便宜一些,不如先移除整类工作。
- 优先修复架构、批处理、缓存、查询模式、算法选择、并行处理和数据传输,再考虑微小的底层调整。
- 如果与预期指标相差甚远,就应花更多时间进行宏观优化。
只有在解决主要低效问题后,微观优化才最有价值。
推荐工作流
- 定义成功指标。
- 重现当前基线。
- 如果缺少测量和归因机制,则添加这些机制。
- 找出最主要的瓶颈。
- 检查算法或架构问题。
- 优先应用收益最大的修复。
- 重新测量。
- 重复以上步骤,直到达到目标,或权衡后发现继续优化不再值得。
注意事项
- 没有前后对比证据,不要声称优化有效。
- 谨慎选择指标,避免优化错了方向。
- 留意正确性、可靠性、可维护性和安全性方面的回归问题。
- 优先选择可测量、可解释且可逆的改动。
评论
支持 Markdown