鸿蒙原生APP性能优化之ArkTS高性能编程

往期推文全新看点

概述

高性能编程指的是在语法使用过程中,通过优化一些影响性能的代码片段,使代码以最优的方式执行。以下实践是在开发过程中逐步总结出来的一些高性能的写法和建议,实践包含变量声明、属性的访问、数值计算、数据结构的使用以及函数声明与使用等内容,在业务功能实现过程中,要同步思考并理解高性能写法的原理,运用到代码逻辑实现中。

变量声明

使用const声明常量

对于初期明确不会改变的变量,尽量使用const进行初始化,这里的常量包含基础类型和引用类型。通过const保证地址不会发生变化,能够极大减少由于编码时误操作导致的赋值等行为,造成对原有逻辑的改变,声明为const能够在编辑时及时发现错误。其中当const声明的是引用类型时,引用类型内部的属性变化是允许的,对于这种不存在地址变化的情况下,也建议使用const声明。

【反例】

// 该变量在后续过程并未发生改变,建议声明为常量
let PRICE = 10000;

function getPrice() {
  return PRICE;
}

class ClassA {
  propA: string = 'propA'
} 
// 该引用类型的变量在后续过程变量地址并未发生改变,仅修改了变量的属性,本例中的let建议改为const
let classA: ClassA = new ClassA();
classA.propA = 'Property A';

【正例】

const PRICE = 10000; // 常量声明为基础类型时,其内容不可改变

function getPrice() {
  return PRICE;
}

class ClassA {
  propA: string = 'propA'
}

// 常量声明为引用类型时,其地址不可改变,但可以改变属性
const classA: ClassA = new ClassA();
classA.propA = 'Property A';

指定number的类型

对于number类型,编译器在优化时会区分int和double类型。开发者在初始化number类型的变量时,如果预期是整数类型就初始化为0,小数类型就初始化为0.0,避免将一个number类型初始化为undefined或者null。

【正例】

function calAddSum(addNum: number): number {
  // count预期是int,不要声明成undefined/null或0.0,直接初始化为0
  let count = 0;
  count += addNum;
  return count;
}

减少使用ESObject

ESObject主要用于在ArkTS和TS/JS跨语言调用的场景中作为类型标注,在非跨语言场景中使用ESObject标注类型,会引入不必要的跨语言调用,造成额外的性能开销,建议在非跨语言调用的场景下,避免使用ESObject,引入明确的类型进行注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值