性能优化,如何做到更快的启动、更流畅的使用,概括图如下
ArkTS高性能编程:
1. ArkTS规则:有利于方舟编译运行时进行编译优化
2. 使用AOT(Ahead Of Time)模式对应用进行编译优化:方舟编译运行时通过采用PGO(Profile-Guided-Optimization,配置文件引导型优化)方式,提前生成高性能机器码,从而执行
3. ArkTS基于TypeScript设计
4. 严格遵循ArkTS的编码规则,禁用@ts-ignore@ts-expect-error等屏蔽编译命令
5. 开启TypeScript的严格模式,比如严格判空等
6. 不支持any和unknown
提升启动和相应速度:
1. 冷启动: 缩短初始化耗时、缩短Ability生命周期等
2. 使用异步加载:加载一些耗时操作
3. 延迟加载,仅有List、Grid、Swiper以及WaterFlow组件支持LazyForEach的数据懒加载功能
4. 使用缓存
减少丢帧卡顿:
1. 避免在主线程上执行耗时操作,可将耗时操作放在TaskPool或worker等后台线程中执行
2. 减少渲染进程的冗余开销,尺寸可用整数。推荐transition,不推荐amimateTo(冗余更新)
3. 较少示图嵌套层级,多用相对布局
4. 组件复用配合
5. 精确控制状态变量的关联组件数,不推荐命令式,推荐声明式(数据驱动刷新)
6. 在对象上谨慎用状态变量关联,@Prop是深拷贝,@ObjectLink是浅拷贝
性能调优工具:主要是分析CPU和内存使用情况
1. ArkUI lnspector:检查和调试应用程序页面布局的情况
2. Launch Insight:录制和还原从启动应用,到显示首帧过程中的CPU、内存等资源使用情况,用于分析启动耗时长的问题
3. Frame Insight:录制卡顿过程中的关键数据,标注出应用侧、RenderService侧卡顿帧,用于分析应用卡顿、丢帧的问题
4. Time Insight:通过周期性采集调用栈,识别CPU耗时高的热点代码段,用于分析卡顿、CPU占用高、运行速度慢等问题
5. Allocation Insight:录制和分析内存分配记录,用于分析内存峰值高,内存泄漏,内存不足导致应用被强杀等问题
6. Snapshot Insight :录制和分析应用程序中ArkTS对象的分布,通过快照方式对比ArkTS对象分布区别,用于分析内存泄漏问题
7. CPU Insight:录制CPU调度事件、线程运行状态、CPU核频率、Trace等数据,可用于分析卡顿、运行速度慢、应用无响应等问题
8. Smart Perf:开源性能调优平台,支持对cPu调度、频点、进程线程时间片、堆内存、帧率等数据进行采集和展示,展示方式为泳道图
官方推荐性能工具:Profiler(在DevEcoStudio中使用,只支持真机),可以做到实时监控、内存分析、调度分析、卡顿丢帧、启动分析等内容