开发应用或元服务过程中,如果发现有表单滑动不顺畅、页面交互延迟、动效不流畅等卡顿现象时,可以使用DevEco Profiler提供的Frame场景分析能力,录制卡顿过程中的关键数据并进行分析,从而识别出导致卡顿丢帧的原因。
Frame模板支持的泳道包括:Anomaly、User Events、Frame、ArkUI Component、ArkUI State、User Trace、ArkTS Callstack、Callstack、Network Traffic、Network Request、Energy、CPU Core、Process。本文介绍Anomaly、User Events、Frame泳道,其他泳道的详细信息请参考对应模板内容。
Frame泳道显示当前设备的GPU的使用率,将其展开,子泳道显示渲染服务(Render Service)侧帧数据和App侧帧数据。
在带有RS Frame和App Frame标签的子泳道中,正常完成渲染的帧显示为绿色,出现卡顿的帧显示为红色。



跳转至关联的切片。窗口下方的Details区域中会显示选定时间段内的RS帧统计信息列表,体现各帧的起始时间、总耗时、GPU耗时以及卡顿丢帧类型。

跳转至关联的切片。展开Frame主泳道,选择带App Frame或带RS Frame标签的子泳道,该泳道图区域上方是耗时最长的非UI函数,下方是UI主线程泳道。将鼠标悬浮在任意帧上,会冒泡显示该帧的Jank信息。


从DevEco Studio 5.1.0 Release版本开始,支持查看最新录制的Session中指定的Frame页面布局信息。
从DevEco Studio 6.1.0 Beta1版本开始,
按钮中新增Frame Layout开关,开发者可自行设置开关状态。开关关闭时,不支持查看最新录制的Session中指定的Frame页面布局信息,默认关闭。
暂不支持在Wearable设备上查看指定Frame页面布局信息。
单击Download Layout或 Open Layout前,应用进程需置于前台,才能正确回放全量渲染数据,获取arkli文件。




开发者在开发应用时,会使用到动效,动效的卡顿影响到用户的使用体验。DevEco Profiler提供动效场景的调优,能帮助开发者优化动效场景。
展开Frame主泳道,查看Animation子泳道,将鼠标放置在某个动效上,泳道会显示该动效的详细信息,包括响应时延、动效持续时间、完成时延、期望帧率、FPS。

从DevEco Studio 6.0.0.828版本开始,Frame泳道下新增Component Animation子泳道,用于从组件的角度展示应用中包含的各种动画类型,包括属性动画 (animation)、显式动画 (animateTo)、关键帧动画 (keyframeAnimateTo)以及页面间转场 (pageTransition)。
在Details区域,可以查看每个动画的详细信息,包括起止时间、帧率、动画曲线类型以及影响的组件属性等。单击列表中任意一动画,右侧的More区域中会显示该动画所影响的组件属性的具体变化过程。

Frame泳道下新增Lost Frames和Hitch Time两个子泳道,用于识别和优化卡顿和丢帧问题。


如下图所示,vsync2和vsync4中,vsync周期内的组件由于渲染耗时长,导致以下两个vsync周期挤掉下一个vsync周期的渲染时间,导致掉帧的情况产生。





如果工程中存在图片资源,并感知到解码绘制/渲染过程存在卡顿,可以通过Anomaly泳道查看主线程解码过程中是否存在解码过度耗时告警,并确认发生告警的时段。
如果应用中使用了worker、Taskpool工作线程等场景,通常会触发跨线程对象传递,并触发序列化和反序列化的操作。对于耗时超过阈值的序列化、反序列化操作,Anomaly泳道也会给出对应的耗时告警,并给出发送这个操作的开始时间和耗时时间。


由于隐私安全政策,已上架应用市场的应用不支持录制Anomaly泳道。
开发者在卡顿丢帧场景可通过User Events泳道查看用户事件,可查看用户事件开始时间、应用开始处理时间以及应用处理耗时等情况。


更多性能调优最佳实践,请参考点击响应时延分析、点击完成时延分析、帧率问题分析、Web点击响应时延分析、Web加载完成时延分析。