ArkTS高性能编程

ArkTS高性能编程核心知识点总结(通俗版)

这份指南的核心思想是:通过养成好的编码习惯,让代码跑得更快、更安全。主要优化点可以分为以下几大类:

1. 变量声明:用对“标签”,避免意外

  • 多用 const,少用 let

    • 通俗理解:如果一个变量“从一而终”不会变(比如固定的价格、配置项),就给它贴上 const 这个“恒定”标签。这样编译器会帮你检查,防止你后面不小心修改它,避免bug。
    • 注意:对于对象或数组(引用类型),const 只保证这个“容器”本身不变,但容器里的“东西”(属性)是可以变的。这种情况下也推荐用 const
  • 明确告诉编译器数字类型

    • 通俗理解:声明数字变量时,如果你知道它肯定是整数(比如计数器),就初始化为 0;如果是小数(比如价格),就初始化为 0.0。不要初始化为 undefinednull。这样编译器能更好地优化,因为它知道你要的是整数还是小数运算。
  • 避免乱用 ESObject

    • 通俗理解ESObject 是用于ArkTS和TS/JS混编场景的“通用标签”。如果你只在纯ArkTS环境下开发,就不要用它。应该使用具体的接口或类来定义类型,否则会引入不必要的性能开销。

2. 属性访问:少“跑腿”,多“缓存”

  • 减少重复的属性查找

    • 通俗理解:尤其在循环里,如果要反复使用某个对象属性或全局变量,最好在循环开始前,把它“请”到一个局部变量里放着。这样每次用的时候就直接从“近处”拿,而不是每次都去“远处”(全局作用域)找,速度会快很多。
    • 例子:循环里多次使用 Time.INFO[year],可以提前算出 const info = Time.INFO[year],然后在循环里直接用 info
  • 给类属性加上访问权限(private, public

    • 通俗理解:类的属性不要全部“裸奔”(默认是 public,谁都能改)。应该给它们设置“权限门禁”。比如内部使用的计数器 count,就设为 private,这样外部代码就不能直接修改,只能通过你提供的 getCount() 方法来读取,代码更安全、更清晰。

3. 数值计算:用对“工具箱”

  • 大量数值计算,用 TypedArray

    • 通俗理解:如果你在做图像处理、加密解密等涉及大量数字计算的活儿,别用普通的 ArrayTypedArray(如 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代码的秘诀就是:

  1. 声明要精准const、明确类型)。
  2. 访问要高效(缓存变量、选对容器)。
  3. 结构要紧凑(避免稀疏数组)。
  4. 依赖要清晰(优化导入导出、善用延迟加载)。
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐