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
更多关于HarmonyOS鸿蒙Next性能优化具体注意点的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在优化HarmonyOS鸿蒙Next性能时,需重点关注以下几点:
-
内存管理:合理分配和释放内存,避免内存泄漏,使用高效的数据结构减少内存占用。
-
线程优化:减少线程切换开销,合理使用线程池,避免过多线程竞争资源。
-
I/O操作:优化文件读写和网络请求,使用异步I/O减少阻塞,提升响应速度。
-
UI渲染:减少布局层级,使用轻量级组件,避免过度绘制,提升渲染效率。
-
功耗控制:优化后台任务,减少不必要的唤醒和轮询,延长设备续航。
-
代码优化:减少冗余代码,使用高效算法,提升执行效率。
-
调试工具:利用鸿蒙提供的性能分析工具,如HiProfiler,定位性能瓶颈。
通过这些措施,可显著提升鸿蒙Next应用的性能和用户体验。