HarmonyOS鸿蒙Next性能优化具体注意点

HarmonyOS鸿蒙Next性能优化具体注意点

  • 热点循环中常量提取,减少状态变量访问次数

// 优化前代码

private function(): number {
let totalDays: number = 0; 
for (let index: number = 0; index < 10; index++) { 
    //对this.day重复访问了
    totalDays += this.day*index
} 
return totalDays
}

// 优化后代码

private function(): number {
let totalDays: number = 0; 
const day:number = this.day
for (let index: number = 0; index < 10; index++) { 
    totalDays += day*index
} 
return totalDays
}

2.数值计算避免溢出
常见的可能导致溢出的数值计算包括如下场景,溢出之后,会导致引擎走入慢速的溢出逻辑分支处理,影响后续的性能。

针对加法、减法、乘法、指数运算等运算操作,应避免数值大于INT32_MAX或小于INT32_MIN,否则会导致int溢出。

针对&(and)、>>>(无符号右移)等运算操作,应避免数值大于INT32_MAX,否则会导致int溢出。

3.避免动态添加属性
对象在创建的时候,如果开发者明确后续还需要添加属性,可以提前置为undefined。动态添加属性会导致对象布局变化,影响编译器和运行时优化效果。

【反例】 // 后续obj需要再添加z属性

class O1 { 
x: string = ""; 
y: string = ""; 
} 
let obj: O1 = {"x": "xxx", "y": "yyy"}; 

... 

// 这种动态添加方式是不推荐的 
obj.z = "zzz";

【正例】

class O1 { 
x: string = ""; 
y: string = ""; 
z: string = ""; 
} 
let obj: O1 = {"x": "xxx", "y": "yyy", "z": ""}; 
... 
obj.z = "zzz";

4.避免在系统高频回调用打印日志
.onDidScroll((xOffset: number, yOffset: number, scrollState: ScrollState) => { … //在测试时可以添加日志查看滑动的偏移量,但是在测试完之后一定要注释或删除 console.log(“tag”, xOffset + " " + yOffset) … }

5.尽量减少布局的嵌套层数
(1)移除冗余节点,删除无用的Stack/Column/Row嵌套,删除build函数中最外层无用容器嵌套

(2)使用扁平化布局减少节点数,使用Column/Row替代Flex构建线性布局,使用Flex、List、Grid、RelativeContainer、绝对布局和自定义布局等构建复杂布局

6.合理管理状态变量,精准控制组件的更新范围
(1)使用指定宽高的容器限制刷新范围,当在一个同时指定宽高的容器里改变容器内部的布局,那么只会在该容器内部做布局和测量更新,不会扩散影响到容器外面的组件。

(2)减少不必要的参数层次传递,@State+@Prop@State+@Link@State+@Observed+@ObjectLink三种方案的实现方式是逐级向下传递状态,当共享状态的组件间层级相差较大时,会出现状态层层传递的现象。对于没有使用该状态的中间组件而言,这是“额外的消耗”。因此,对于跨越多层的状态变量传递,使用@Provide+@Consume方案更为合理。

(3)避免滥用@Provide+@Consume,在父子组件关联的场景下,@Provide+@Consume开销要大于@State+@Prop/@Link,因此在该场景下推荐使用@State+@Prop/@Link的组合。


更多关于HarmonyOS鸿蒙Next性能优化具体注意点的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next性能优化具体注意点的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在优化HarmonyOS鸿蒙Next性能时,需重点关注以下几点:

  1. 内存管理:合理分配和释放内存,避免内存泄漏,使用高效的数据结构减少内存占用。

  2. 线程优化:减少线程切换开销,合理使用线程池,避免过多线程竞争资源。

  3. I/O操作:优化文件读写和网络请求,使用异步I/O减少阻塞,提升响应速度。

  4. UI渲染:减少布局层级,使用轻量级组件,避免过度绘制,提升渲染效率。

  5. 功耗控制:优化后台任务,减少不必要的唤醒和轮询,延长设备续航。

  6. 代码优化:减少冗余代码,使用高效算法,提升执行效率。

  7. 调试工具:利用鸿蒙提供的性能分析工具,如HiProfiler,定位性能瓶颈。

通过这些措施,可显著提升鸿蒙Next应用的性能和用户体验。

回到顶部