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

前言

大家好,我是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的文件)然后对一些可疑或者运行时间比较长的文件进行双击,即可快速看到里面的方法,然后对这个方法进行适当的优化即可。

总结

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

相关推荐
KevinChaos6 小时前
阳台小花园开发手记 01|HarmonyOS 7.0 互动卡片:小花园为何要两套界面
华为·harmonyos
Ranger09297 小时前
下一代鸿蒙打包工具链:arkdown
harmonyos
程序猿追9 小时前
一个工程面向手机与二合一:HarmonyOS 6 部署配置和本地手记
华为·智能手机·harmonyos
行者-全栈开发20 小时前
【鸿蒙心迹】深色模式适配全链路——从配置到自定义(HarmonyOS 7.x)
华为·harmonyos
行者-全栈开发1 天前
【鸿蒙心迹】国际化 i18n 与多语言资源管理实战(HarmonyOS 7.x)
ui·华为·重构·国际化·harmonyos·多语言
OH_TPC1 天前
HarmonyOS APP开发---"云客服"远程视频客服App,需要用到这个库
harmonyos
逆回2 天前
给鸿蒙手机做一只 3D 宠物:五个把我卡住的问题
harmonyos
钉先生贾2 天前
性能、体积与稳定性:怎样写出可信的适配结论
华为·harmonyos
笑 总不会犯错2 天前
摆脱多端数据撕裂,鸿蒙分布式数据库同步与冲突合并
harmonyos
用户117910488332 天前
鸿蒙签名失败不是玄学:5 个证据点把 hapsigntool 一次排通 GitHub:swsgbl/hmharness
开源·ai编程·harmonyos