鸿蒙开发中如何快速定位丢帧

前言

大家好,我是simple。我的理想是利用科技手段来解决生活中遇到的各种问题

在前端、app等在做性能优化的过程中,我们都比较注重丢帧的问题,因为丢帧往往会让用户觉得有些卡顿。但是有时随着项目的庞大,有些时候我们无法快速定位到丢帧的情况,这时我们就需要借助这个分析工具帮助我们快速定位这个代码问题。

1. Frame Profile简介

Profiler是DevEco-Studio的IDE自带功能,可以在最下排看到profiler工具,或者通过view > tool windows > profiler进入,然后选中Frame。Frame Profiler用于录制GPU数据信息,录制完成的子泳道对应录制过程中各个进程的帧数据,主要用于深度分析应用或服务卡顿丢帧的原因。

Profiler里面包含很多工具,包括内存泄露分析、掉帧卡帧分析、应用启动耗时分析等等,有机会可以讲讲。

2. 使用介绍

2.1 创建会话

  • 「创建会话」是分析的起点:点击 "Create Session" 后,工具会与目标设备 / 应用建立连接,开始监听并记录性能数据。
  • 会话期间可进行操作:创建会话后,你可以在应用中复现需要分析的场景(如滑动列表、执行动画等),工具会持续采集该过程中的性能数据。
  • 会话结束后数据可复用:停止会话后,采集的数据会被保存,你可以随时回看该会话的帧率趋势、帧耗时分布等信息,无需重新复现场景。

大白话就是我们只需要点击create session的按钮,然后点击开始,随后我们就可以针对某些卡顿的情况操作app,它就会帮我们记录app所有的场景性能数据。

2.2 分析会话

操作完上述步骤,我们就能得到一个如下的会话数据,此时frame对应的就是Gpu的使用情况。

我们通过wasd按钮可以对对应的数据进行缩放,看到我们想要看的那些数据中。

从图可以看到,上面有用户操作事件,我们也可以通过操作事件去进行一些标记,就能够更快的找到我们需要定位的帧数。而下面标红的帧块可以看出,本应该发生在213帧的,却因为一些原因导致它延迟了发生在了215帧。

系统希望它能够在8ms内运行完的计算,却要在16ms内才彻底运行完毕。因此在这里失去了2帧。

tips: 窗口下方的"Frame"区域中会显示选定帧的关键信息,如VSync编号、开始时间、App应用侧持续时间、App应用侧业务逻辑耗时、Render Service侧持续时间、GPU持续时间、总持续时间、卡顿丢帧类型以及可能出现卡顿的原因等。"Non UI"区域中会显示非UI耗时最大的函数,如开始时间、结束时间、持续时间,函数名等。

2.3 代码分析

此时我们往下看,就能发现对应执行的callstack已经陈列在下面了(我们重点看ts或者是ets的文件)然后对一些可疑或者运行时间比较长的文件进行双击,即可快速看到里面的方法,然后对这个方法进行适当的优化即可。

总结

关键步骤:复现场景→定位区间→分析帧耗时→追踪函数→优化验证

相关推荐
zhanshuo6 分钟前
在 ArkUI 中实现丝滑嵌套滚动:让你的页面像抖音一样顺滑
harmonyos
云_杰8 小时前
利用AI开发我又又上架了一个鸿蒙产品——青蓝程序员工具箱
harmonyos·trae
萤火虫儿飞飞9 小时前
鸿蒙智选携手IAM进驻长隆熊猫村,为国宝打造智慧健康呼吸新空间
华为·harmonyos
御承扬11 小时前
HarmonyOS NEXT系列之定制化构建制品
华为·harmonyos
大土豆的bug记录11 小时前
鸿蒙拉起系统定位和app授权定位
前端·javascript·harmonyos
zhanshuo1 天前
用鸿蒙做多人协作,真的可以跨屏秒同步!
harmonyos
zhanshuo1 天前
HarmonyOS 开发:基于 ArkUI 实现复杂表单验证的最佳实践
harmonyos
嵌入之梦1 天前
鸿蒙智能居家养老系统构思(续二)—— 适老化烹饪中心详细构思
智能家居·harmonyos·居家养老
鸿蒙开发工程师—阿辉1 天前
HarmonyOS 应用拉起系列(一):应用与元服务互通方式
华为·harmonyos·arkts·鸿蒙