关于 compose-performance
用于诊断和改进 Jetpack Compose 性能的编码技能。它依据具体 UI 转换的证据,定位稳定性、状态读取阶段或快照写回问题。
主要功能
- 01测量具体的 UI 转换
- 02判断运行时工作来源
- 03修改前排查误导因素
- 04实施针对性修复并复测
适用场景
- 01调查过多的重组
- 02审查不稳定的 Compose 参数
- 03追踪高帧率状态读取
- 04评估状态写回较早阶段的问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ chrisbanes/ skills --skill compose-performance安装后在 Claude Code 中输入/compose-performance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/composition-contracts.mddeferred-reads.mddiagnosis.mdstability.md详细介绍
Compose 性能
核心原则
测量一个用户可见的状态转换,找出导致相关工作的运行时轴,然后在该轴开始的阶段或边界应用最小幅度的修正。
流程
- 复现一个具体的状态转换,并记录可观察的证据: 重组次数、编译器报告、性能分析器数据或清晰的跟踪记录。 仅通过 Gradle run 构建。如果无法运行构建, 则根据已声明的类型进行推理;不要解包工具链 JAR,也不要绕过沙箱。
- 对主要轴进行分类:参数稳定性与跳过、State 读取阶段,或写回更早阶段的快照状态。
- 检查是否存在误导线索:实际的数据变化、正确性缺陷,或预期会重组的未更改惰性列表项。
- 提出更改前,先阅读相应的专项参考资料。
- 对于代码审查,为每项发现配套提供证据支持的最小修复。如果稳定性承诺不成立,明确说明应将可变的非快照属性替换为不可变数据或可被快照观察的状态,验证该约定,然后再判断是否仍需要注解。对于阶段问题,指出应将变化的读取或计算移到哪个布局或绘制使用方。跨阶段写入可以证明存在失效或额外遍次;除非证据显示值在反复变化,否则不要声称存在振荡或无限循环。不要止步于诊断。只有源代码可用时,应将已证实的反馈路径与未经测量的运行时成本区分开来。根据预期的测量边界,给出有条件的修复方向;没有证据表明回调替换、相等性检查或内容布局重写能够改变观察到的问题时,不要将其作为性能修复方案。对于使用默认结构相等策略、由
mutableStateOf持有的Int,值未变化时本就不会触发失效。 - 每次只更改一个轴,并重新测量同一个状态转换。
- 当观察到的边界处的证据有所改善,且没有掩盖状态变化、缓存过期值或将工作移交给不合适的所有者时,即可结束。
主题索引
| 信号 | 阅读 |
|---|---|
| 原因不明,或可能有多个轴相互作用 | 诊断 |
classes.txt、composables.txt、强跳过、不稳定参数或集合稳定性 | 稳定性 |
| 以帧率读取滚动、动画、手势、布局或绘制 State;测量状态被反馈到组合中 | 延迟读取 |
| 可组合项只读取组合本地项或访问器样式的值 | 组合契约 |
| 状态所有权或副作用生命周期是根本原因 | Compose 状态与副作用 |
评论
支持 Markdown