鸿蒙|性能优化-概述与工具使用

概览:本文介绍了鸿蒙应用优化的基本概念与实施方法,讲解了优化工具的分类以及实际操作,重点介绍了Code Linter、AppAnalyzer、ArkUI Inspector以及Profiler的使用。

什么是性能优化?

定位和解决应用或元服务在运行期间可能出现启动白屏、动画不流畅、操作卡顿、手机发烫 甚至崩溃闪退等问题。

性能优化工具

css 复制代码
检测工具:
Code Linter-静态扫描工具
AppAnalyzer-动态运行工具
直接发现问题、提供解决方案
​
分析工具:
ArkUl Inspector-界面状态分析工具
Profiler-性能实时监测工具
得到应用和设备的运行状态 ,根据运行状态发现问题、制定解决方案

检测代码:

less 复制代码
@Entry
@Component
struct Index {
  @State list: number[] = Array(15).fill(1)
​
  build() {
    Column() {
      Button('添加10条数据')
        .onClick(() => {
          this.list.push(...Array(10).fill(1))
        })
      Scroll() {
        Column() {
          ForEach(this.list, (item: number, index: number) => {
            ListItem() {
              Text(`第${index + 1}个Text`)
                .width('100%')
                .height(50)
                .backgroundColor(index % 2 === 0 ? '#FFF0F0' : '#FFFFFF')
            }
          })
        }
      }
      .layoutWeight(1)
    }
    .width('100%')
    .height('100%')
  }
}

Code Linter (静态扫描工具)

选中单个或多个工程文件目录后,点击右键 ,选择菜单CodeLinter下的全量检测或增量检测。

配置文件:项目根目录下的code-linter .json5,如未配置按照默认编程规范对ets 文件进行检测。

代码检测规则: developer.huawei.com/consumer/cn...

双击查看出现问题的位置,右侧有原因和修改建议,documentation(文档)、best practice(最佳实践)。

AppAnalyzer(动态运行工具)

打开编辑器,找到菜单栏Tools窗口,选择AppAnalyzer。

未下载python会提示下载,选择设备(真机) ,按需选择性能体检套餐,开始检测。

ArkUl Inspector(界面状态分析工具)

打开编辑器,在下方导航栏,选择ArkUI Inspector。

将程序安装至设备后启动 ,选择需要分析的程序,等待分析结果。

观察页面会显示多少个组件,不显示的组件没必要渲染,修改组件数量,可看到左边组件树减少。

Profiler(性能实时监测工具)

将应用运行至设备(真机)。

打开编辑器底部的Profiler,选择监测的设备、应用、进程 ,点击实时监控选项卡的 Start 开启监测。

scss 复制代码
System Events(系统事件状态的统计情况)
Anomaly(设备侧上报的异常事件)
Foreground Ability(当前展示的Ability)
CPU(CPU使用率及空闲情况)
Memory(应用内存值、其他进程内存、空闲情况)
FPS(当前设备屏幕的帧率瞬时值 )
GPU(GPU使用率的瞬时值)
Temperature(当前温度信息,采集周期3秒)
DeviceCurrent(当前设备最大、平均、最新电流值)
Energy(各项数据周期内平均功耗占比)

Profiler 监测录制:

选择录制模版(常用Launch、Frame、Allocation)。

点击Create Session创建会话。

点击start开始录制,进行设备操作 ,点击停止自动保存录制,解析后查看分析结果。

1、Launch(重点关注冷启动过程):

观察创建10000个组件和创建10个组件的差异。

关注ArkTs Callstack的ArkVM(方舟编译器的运行时间)program(程序耗时)。

2、Frame(关注丢帧情况):

点击两次增加数据,页面更新,点击stop停止录制。

关注Frame,Jank Count(丢帧次数)。

Duration每一帧8毫秒左右,超过就丢帧,点击Open Layout查看做什么丢帧了。

从添加10条数据改成5条就不丢帧了(因为每一次绘制的数据量稍微大一点,超出了预期时间,所以在这一 帧要不没办法完成,要不没办法开始导致丢帧,可以减少数据量)。

3、Allocation(内存状况):

点数新增数据,点击频繁一些,不断新增数据,右侧黄色泳道不断上升,内存量上升了。

Memory查看每时每刻内存的一个占用情况。

Native Allocation 的 call Trees查看堆调用次数,如果是黄色的点击查看详细情况,如果是灰色的表示已经到底层了就不能查看了。

相关推荐
二流小码农3 小时前
鸿蒙开发:路由组件升级,支持页面一键创建
android·ios·harmonyos
TT_Close8 小时前
【Flutter×鸿蒙】debug 包也要签名,这点和 Android 差远了
android·flutter·harmonyos
TT_Close1 天前
【Flutter×鸿蒙】FVM 不认鸿蒙 SDK?4步手动塞进去
flutter·swift·harmonyos
hqk1 天前
鸿蒙项目实战:手把手带你实现 WanAndroid 布局与交互
android·前端·harmonyos
TT_Close1 天前
【Flutter×鸿蒙】一个"插队"技巧,解决90%的 command not found
flutter·harmonyos
Hcourage2 天前
鸿蒙工程获取C/C++代码覆盖
harmonyos
二流小码农2 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
万少3 天前
HarmonyOS 开发必会 5 种 Builder 详解
前端·harmonyos
Huang兄3 天前
鸿蒙-List和Grid拖拽排序:仿微信小程序删除效果
harmonyos·arkts·arkui