Harmony OS应用开发性能优化全面指南

优化应用性能对于应用开发至关重要。通过高性能编程、减少丢帧卡顿、提升应用启动和响应速度,可以有效提升用户体验。本文将介绍一些优化应用性能的方法,以及常用的性能调优工具。

ArkTS高性能编程

为了提升代码执行速度,进而提升应用整体性能,可以采取以下措施:

  • 使用ArkTS高性能编程实践:
    更有利于方舟编译运行时进行编译优化,生成更高性能的机器码,保障程序运行得更快。

  • 使用AOT模式对应用进行编译优化:
    方舟编译运行时通过采用PGO(Profile-Guided-Optimization,配置文件引导型优化)方式,提前生成高性能机器码,从而提升程序运行速度。

减少丢帧卡顿

丢帧卡顿是指应用在运行时出现卡顿或者画面不流畅的现象。为了减少丢帧卡顿,可以采取以下措施:

  • 避免在主线程上执行耗时操作:
    UI主线程是应用中最重要的线程之一,在主线程上执行耗时操作会阻塞UI渲染,从而导致UI主线程的负载过高。因此,可以将耗时操作放在TaskPool或者Worker等后台线程中执行。

  • 减少渲染进程的冗余开销:
    使用资源图代替绘制、合理使用renderGroup、尺寸位置设置尽量使用整数,可以减少渲染所需的时间,从而减少丢帧卡顿。

  • 避免频繁更新UI:
    减少不必要的UI更新操作,例如过多的界面刷新或布局计算。

  • 优化布局性能:
    应用开发中的用户界面(UI)布局是用户与应用程序交互的关键部分。不合理的布局越多,视图的创建、布局、渲染等流程所需的时间就越长。因此,减少嵌套层次或者使用高性能布局节点,可以减少丢帧卡顿。

  • 组件复用配合LazyForEach:
    使用ArkUI开发范式提供的组件复用机制,通过重复利用已经创建过并缓存的组件对象,降低组件短时间内频繁创建和销毁的开销,提升组件加载效率,降低UI线程负载,从而减少丢帧卡顿。

  • 精确控制状态变量的关联组件数:
    @State等状态变量关联组件越多,状态数据变更时刷新的组件越多,UI线程负载越重,因此移除冗余的组件关联可以减少丢帧卡顿。

  • 在对象上谨慎使用状态变量关联:
    对象中的任何一个成员变量发生变更均会引起对象关联组件的刷新,因此应对有状态变量关联的对象进行最小化处理,从而减少丢帧卡顿。

提升应用启动和响应速度

应用启动和响应速度是用户体验的重要组成部分。为了提升应用启动和响应速度,可以采取以下措施:

  • 延迟加载:
    将不必要的资源延迟加载可以减少应用启动时间。使用List、Grid以及Swiper等容器组件时,配合系统提供的LazyForEach数据懒加载能力,可以有效减少应用启动时间和内存占用。

  • 使用缓存:
    选择合适的缓存策略可以提高应用程序的性能和响应速度,从而提升应用响应速度。

  • 使用异步加载:
    使用异步加载可以在后台线程中处理耗时操作,从而提升应用响应速度。

使用性能调优工具

使用性能调优工具可以帮助开发者找出应用中的性能问题。以下是DevEco Studio提供的一些常用性能调优工具:

  • ArkUI Inspector:
    用于检查和调试应用程序页面布局的情况。

  • Launch Profiler:
    分析启动过程中各阶段的性能问题。

  • Frame Profiler:
    用于深度分析应用或服务卡顿丢帧的原因。

  • Time Profiler:
    在应用/服务运行时, 展示热点区域内基于 CPU 和进程耗时分析的调用栈情况。

  • Allocation Profiler:
    实时监测应用或服务内存使用情况。

  • Snapshot Profiler:
    用于分析应用程序内存使用情况。

  • CPU Profiler:
    可以监测应用的CPU使用情况。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2980236.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

IPRally巧用Google Kubernetes Engine和Ray改善AI

专利检索平台提供商 IPRally 正在快速发展,为全球企业、知识产权律师事务所以及多个国家专利和商标局提供服务。随着公司的发展,其技术需求也在不断增长。它继续训练模型以提高准确性,每周添加 200,000 条可供客户访问的可搜索记录&#xff0…

iOS ------代理 分类 拓展

代理协议 一,概念: 代理,又称委托代理(delegate),是iOS中常用的一种设计模式。顾名思义,它是把某个对象要做的事委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理…

安装eog照片查看程序

安装eog照片查看程序 apt-get install --reinstall liburi-perl apt-get install eog解决 参考文章

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq,一个是存储&…

ClickHouse用UDF解析XML字符串和XML文件

一.如果是读取xml文件的时候,文件入库需要使用文件读取UDF 创建了1个测试文件 wsdFileRead(): 直接读取文件内容 SELECT wsdFileRead(/home/temp/wsd_test.xml)Query id: 09b6e5fe-7169-43f7-b001-90e2eeabb8da┌─wsdFileRead(/home/temp/wsd_test.xm…

OpenHarmony实战开发-内存快照Snapshot Profiler功能使用指导。

DevEco Studio集成的DevEco Profiler性能调优工具(以下简称为Profiler),提供Time、Allocation、Snapshot、CPU等场景化分析任务类型。内存快照(Snapshot)是一种用于分析应用程序内存使用情况的工具,通过记录…

鸟哥的Linux私房菜 总结索引 | 第二章:主机规划与磁盘分区

要安装好一部Linux主机并不是那么简单的事情,你必须要针对distributions的特性、服务器软件的能力、 未来的升级需求、硬件扩充性需求等等来考虑,还得要知道磁盘分区、文件系统、Linux操作较频繁的目录等等, 都得要有一定程度的了解才行 1、…

LlamaIndex 加 Ollama 实现 Agent

AI Agent 是 AIGC 落地实现的场景之一,与 RAG 不同,RAG 是对数据的扩充,是模型可以学习到新数据或者本地私有数据。AI Agent 是自己推理,自己做,例如你对 AI Agent 说我要知道今天上海的天气怎么样,由于 AI…

李沐56_门控循环单元——自学笔记

关注每一个序列 1.不是每个观察值都是同等重要 2.想只记住的观察需要:能关注的机制(更新门 update gate)、能遗忘的机制(重置门 reset gate) !pip install --upgrade d2l0.17.5 #d2l需要更新import torch from tor…

集群工具之HAProxy

集群工具之HAProxy HAProxy简介 它是一款实现负载均衡的调度器适用于负载特别大的web站点HAProxy的工作模式 mode http:只适用于web服务mode tcp:适用于各种服务mode health:仅做健康检查,很少使用 配置HAProxy client&#x…

Datawhale |【独家】万字长文带你梳理Llama开源家族:从Llama-1到Llama-3

本文来源公众号“Datawhale”,仅用于学术分享,侵权删,干货满满。 原文链接:【独家】万字长文带你梳理Llama开源家族:从Llama-1到Llama-3 0. 引言 在AI领域,大模型的发展正以前所未有的速度推进技术的边界…

4(第三章,数据治理)

目录 概述 业务驱动因素 目标和原则 1、可持续发展 2、嵌入式 3、可度量 基本概念 数据治理与数据管理的关系 数据治理组织 数据治理运营模型类型 数据管理岗位的类型 数据治理的成果体现 国内的数据治理 什么是数据治理 为什么进行数据治理 数据治理的必要性 …

Linux 操作系统的引导过程

Linux系统开机引导过程: 开机自检 检测硬件设备,找到能够引导系统的设备,比如硬盘MBR引导 运行MBR扇区里的主引导程序GRUB启动GRUB菜单 系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和…

《内向者优势》:不要低估一个内向的人

#世界读书日 作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤…

[RTOS 学习记录] 复杂工程项目的管理

[RTOS 学习记录] 复杂工程项目的管理 这篇文章是我阅读《嵌入式实时操作系统μCOS-II原理及应用》后的读书笔记,记录目的是为了个人后续回顾复习使用。 前置内容: 工程管理工具make及makefile 文章目录 1 批处理文件与makefile的综合使用1.1 批处理文件…

C语言学习/复习29--内存操作函数memcpy/memmove/memset/memcmp

一、内存操作函数 1.memcpy()函数 注意事项1:复制的数目以字节为单位 注意事项2:一定要保证有足够空间复制 模拟实现1 拷贝字符案例:由于拷贝时函数本事就以字节为单位拷贝所以该例子也可用于其他类型数据的拷贝。 模拟实现2 将自身的…

YOLOv8 关键点检测模型训练部署

文章目录 1、YOLOv8安装及使用1.2、命令行使用1.3、使用python-API模型预测1.4、pt转换ONNX 2、训练三角板关键点检测模型2.1、训练命令 3、ONNX Runtime部署 1、YOLOv8安装及使用 参考链接: 同济子豪兄视频 github原文链接 # 安装yolov8 pip install ultralytics --upgrade …

Linux-LVM与磁盘配额

一、LVM概述 Logical Volume Manager,逻辑卷管理 能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性 /boot分区用于存放引导文件,不能基于LVM创建 LVM机制的基本概念 PV(物理卷)&#xff…

情感识别——情感计算的模型和数据集调查

概述 情感计算指的是识别人类情感、情绪和感觉的工作,已经成为语言学、社会学、心理学、计算机科学和生理学等领域大量研究的主题。 本文将概述情感计算的重要性,涵盖思想、概念和方法。 情感计算是皮卡德于 1997 年提出的一个想法,此后出…

生产数据采集系统

在数字化浪潮的推动下,生产数据采集系统已经成为企业提升生产效率、优化运营管理的关键工具。那么,什么是生产数据采集系统呢?简单来说,生产数据采集系统是指通过一系列技术手段,实时收集、处理和分析生产线上的各类数…