【HarmonyOS】ArkTS高性能编程之我见
通过养成好的编码习惯,让代码跑得更快、更安全。声明要精准const、明确类型)。访问要高效(缓存变量、选对容器)。结构要紧凑(避免稀疏数组)。依赖要清晰(优化导入导出、善用延迟加载)。
·
ArkTS高性能编程核心知识点总结(通俗版)
这份指南的核心思想是:通过养成好的编码习惯,让代码跑得更快、更安全。主要优化点可以分为以下几大类:
1. 变量声明:用对“标签”,避免意外
-
多用
const,少用let- 通俗理解:如果一个变量“从一而终”不会变(比如固定的价格、配置项),就给它贴上
const这个“恒定”标签。这样编译器会帮你检查,防止你后面不小心修改它,避免bug。 - 注意:对于对象或数组(引用类型),
const只保证这个“容器”本身不变,但容器里的“东西”(属性)是可以变的。这种情况下也推荐用const。
- 通俗理解:如果一个变量“从一而终”不会变(比如固定的价格、配置项),就给它贴上
-
明确告诉编译器数字类型
- 通俗理解:声明数字变量时,如果你知道它肯定是整数(比如计数器),就初始化为
0;如果是小数(比如价格),就初始化为0.0。不要初始化为undefined或null。这样编译器能更好地优化,因为它知道你要的是整数还是小数运算。
- 通俗理解:声明数字变量时,如果你知道它肯定是整数(比如计数器),就初始化为
-
避免乱用
ESObject- 通俗理解:
ESObject是用于ArkTS和TS/JS混编场景的“通用标签”。如果你只在纯ArkTS环境下开发,就不要用它。应该使用具体的接口或类来定义类型,否则会引入不必要的性能开销。
- 通俗理解:
2. 属性访问:少“跑腿”,多“缓存”
-
减少重复的属性查找
- 通俗理解:尤其在循环里,如果要反复使用某个对象属性或全局变量,最好在循环开始前,把它“请”到一个局部变量里放着。这样每次用的时候就直接从“近处”拿,而不是每次都去“远处”(全局作用域)找,速度会快很多。
- 例子:循环里多次使用
Time.INFO[year],可以提前算出const info = Time.INFO[year],然后在循环里直接用info。
-
给类属性加上访问权限(
private,public)- 通俗理解:类的属性不要全部“裸奔”(默认是
public,谁都能改)。应该给它们设置“权限门禁”。比如内部使用的计数器count,就设为private,这样外部代码就不能直接修改,只能通过你提供的getCount()方法来读取,代码更安全、更清晰。
- 通俗理解:类的属性不要全部“裸奔”(默认是
3. 数值计算:用对“工具箱”
-
大量数值计算,用
TypedArray- 通俗理解:如果你在做图像处理、加密解密等涉及大量数字计算的活儿,别用普通的
Array。TypedArray(如Int8Array)是专门为处理二进制数据设计的“高性能工具箱”,速度比普通数组快得多。
- 通俗理解:如果你在做图像处理、加密解密等涉及大量数字计算的活儿,别用普通的
-
选择合适的键值对容器
- 通俗理解:当你需要存储和快速查找键值对(如
name: '张三')时,如果数据量较大或操作频繁,不要用普通的对象Record。应该使用ArkTS提供的HashMap,它是专门为这种场景优化的“专业字典”,查找和插入速度更快。
- 通俗理解:当你需要存储和快速查找键值对(如
-
避免创建“稀疏数组”
- 通俗理解:不要先创建一个超大的空数组(比如长度10万),然后只在第9999个位置赋值。这样的数组内部会变成低效的“哈希表”结构,而不是连续的内存块,访问速度会变慢。应该按需分配和填充数组。
4. 函数使用:减少“牵挂”,明确“路径”
-
优先传递参数,慎用闭包
- 通俗理解:函数内部尽量使用参数传进来的数据,不要直接使用函数外部的变量(闭包)。直接使用外部变量,不仅可能慢一点,如果没处理好,还容易导致内存该释放时没释放(内存泄漏)。传参数进去是最清晰、最安全的方式。
-
模块导入/导出的“捷径”优化
- 减少导出层级:
export * from ‘./A’然后又export * from ‘./B’,这种多层间接导出,会让编译器找半天才找到最终变量。尽量在入口文件(如Index.ets)直接导出最终模块。 - 多用“具名导出”:在入口文件,用
export { one } from ‘./Numbers’代替export * from ‘./Numbers’。前者像给了编译器一个精确的“导航地址”,后者则让编译器在整个模块里“地毯式搜索”,后者更耗时。
- 减少导出层级:
-
利用“延迟加载”(Lazy-Import)
- 通俗理解:应用启动时,不是所有代码都会立刻用到。可以把那些不是一开机就必须的模块标记为“延迟加载”。这样它们只在真正被用到的时候才加载,可以显著加快应用的启动速度。
总结,高性能ArkTS代码的秘诀就是:
- 声明要精准(
const、明确类型)。 - 访问要高效(缓存变量、选对容器)。
- 结构要紧凑(避免稀疏数组)。
- 依赖要清晰(优化导入导出、善用延迟加载)。
更多推荐


所有评论(0)