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

概览:本文介绍了鸿蒙应用优化的基本概念与实施方法,讲解了优化工具的分类以及实际操作,重点介绍了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查看堆调用次数,如果是黄色的点击查看详细情况,如果是灰色的表示已经到底层了就不能查看了。

相关推荐
贾伟康38 分钟前
【口算王|08】HarmonyOS ArkTS 分类训练实战:让年级与运算分类参数保持一致
harmonyos·arkts·数据建模·路由参数·分类训练
光锥智能1 小时前
华为新麒麟芯片、鸿蒙7问世,手机底层竞赛升级
华为·智能手机·harmonyos
贾伟康2 小时前
【口算王|09】HarmonyOS ArkTS 学习统计实战:计算连续训练和正确率趋势
harmonyos·arkts·数据可视化·preferences·学习统计
lqj_本人2 小时前
Flutter 鸿蒙实战:用 wakelock_plus 三方库给阅读页加上屏幕常亮
flutter·华为·harmonyos
aqi0013 小时前
鸿蒙版本的JSBridge兼容与安卓配套的H5啦
android·华为·harmonyos·鸿蒙·移动应用
熊猫钓鱼>_>13 小时前
Flutter app_settings 鸿蒙适配实战:Intent 体系到 Want 的跨越
flutter·华为·harmonyos·openharmony·intent·want
贾伟康16 小时前
【句匠|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·应用上架·appgallery·发布审核
贾伟康17 小时前
【句匠|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致
harmonyos·arkts·数据持久化·appstorage·preferences
贾伟康20 小时前
【句匠|16】HarmonyOS ArkTS 多设备布局实战:适配手机、平板和 PC/2in1 的窗口变化
harmonyos·arkts·arkui·响应式布局·多设备适配
小雨青年20 小时前
【HarmonyOS 7 平行视界深度实战】03 购物模式怎么实现连续浏览和左右推挤
华为·harmonyos