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

前言

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

总结

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

相关推荐
Token_w2 小时前
2026鸿蒙平板远控电脑怎么选?大屏适配、自动校准等适配完整度逐项实测
华为·harmonyos
梦想不只是梦与想4 小时前
鸿蒙应用市场:版本升级
harmonyos·应用升级·签名不一致
resh_people4 小时前
开源鸿蒙平台 KMP_CMP 三方库「WhatIf」适配全流程
华为·开源·harmonyos
小雨青年6 小时前
【HarmonyOS 7 闪控窗深度实战】04 闪控窗调整窗口形态与显示区域
华为·harmonyos
李游Leo6 小时前
HarmonyOS 7 + ArkUI + RelationalStore 学习笔记:本地数据分层存储与状态持久化架构实践【鸿蒙心迹】
笔记·学习·架构·harmonyos
李游Leo7 小时前
《HarmonyOS 7 精准碰一碰跨设备协作开发实战》07:异常恢复、状态机与CrossDrop工程收尾【鸿蒙心迹】
android·harmonyos
kiros_wang7 小时前
渐变/阴影/滤镜⾼阶⽤法:统⼀项⽬UI、精简冗余组件
ui·harmonyos
贾伟康8 小时前
【HarmonyOS 7新能力|065】QUIC长连接实战:弱网推送、会话恢复与连接治理
harmonyos·arkts·quic·长连接·弱网优化
m0_738185829 小时前
Flutter 鸿蒙化实战:flutter_app_minimizer_plus 适配 OpenHarmony,一键最小化应用
flutter·华为·harmonyos·鸿蒙
TMT星球9 小时前
智界RX及鸿蒙智行新品发布会,多款重磅新品正式上市、开启预订!
华为·harmonyos