高性能 ArkTS 编程:高效代码的最佳实践

发布: (2026年1月20日 GMT+8 11:11)
6 min read
原文: Dev.to

It looks like only the source line was provided. Could you please share the text you’d like translated? Once I have the content, I’ll translate it into Simplified Chinese while preserving the formatting and code blocks.

介绍

ArkTS 为开发者提供了强大的、类似 TypeScript 的语法,并针对更佳的运行时性能进行了优化。编写高性能的应用不仅需要使用合适的框架,还需要关注底层的优化细节。本文将探讨 ArkTS 在实际项目中的实践方法,帮助你编写更快、更精简、更高效的代码,无论是构建用户界面、计算逻辑,还是处理数据结构。

使用 const 定义不变变量

如果变量的值从不改变,请使用 const 定义。这使得引擎能够更有效地优化内存和访问路径。

const index = 10000;

避免混合整数和浮点类型

ArkTS 在底层区分整数和浮点类型。混合使用它们可能会因类型重新评估而降低性能。

let num = 1;
num = 1.1; // ❌ Don't mix types after initialization

Avoid Arithmetic Overflow

超出 INT32_MAX 或低于 INT32_MIN 的操作会使引擎进入较慢的执行路径。请在对性能敏感的逻辑中避免在 +-***&>>> 等运算符出现溢出。

将常量提取到循环外

在循环中反复访问类属性或静态值会增加属性查找成本。请在循环外进行缓存。

const info = Time.info[num - Time.start];
for (let index = 0x8000; index > 0x8; index >>= 1) {
  if ((info & index) !== 0) {
    total++;
  }
}

更倾向于使用参数传递而非闭包

闭包会引入内存和性能开销。对于热点路径,直接通过函数参数传递变量。

function foo(arr: number[]): number {
  return arr[0] + arr[1];
}

避免在热点路径中使用可选参数

可选参数会增加额外的 undefined 检查,导致执行变慢。请改用默认值。

// Instead of this:
function add(a?: number, b?: number): number | undefined { /* ... */ }

// Use this:
function add(a: number = 0, b: number = 0): number {
  return a + b;
}

使用 TypedArray 处理数值数据

在进行算术运算时,TypedArray(例如 Int8ArrayFloat32Array)比普通的 Array 提供更好的性能。

const arr1 = new Int8Array([1, 2, 3]);
const arr2 = new Int8Array([4, 5, 6]);
let result = new Int8Array(3);

避免稀疏数组

稀疏数组(例如 arr[9999] = 0)在内部被存储为哈希表,访问速度要慢得多。在性能关键的情况下,请始终使用连续元素来初始化数组。

避免联合数组和混合类型

在同一个数组中组合不同类型(number | string)会导致性能下降。每个数组应保持单一一致的类型。

let arrInt: number[] = [1, 2, 3];
let arrStr: string[] = ["a", "b"];

避免频繁抛出异常

频繁抛出异常会创建代价高昂的堆栈帧,进而对性能产生负面影响。应使用条件检查来替代频繁的异常抛出,尤其是在循环内部。

优化前

function div(a: number, b: number): number {
  if (a <= 0 || b <= 0) {
    throw new Error('Invalid numbers.');
  }
  return a / b;
}

function sum(num: number): number {
  let sum = 0;
  try {
    for (let t = 1; t < 100; t++) {
      sum += div(t, num);
    }
  } catch (e) {
    console.log(e.message);
  }
  return sum;
}

优化后

function div(a: number, b: number): number {
  if (a <= 0 || b <= 0) {
    return NaN;
  }
  return a / b;
}

function sum(num: number): number {
  let sum = 0;
  for (let t = 1; t < 100; t++) {
    if (t <= 0 || num <= 0) {
      console.log('Invalid numbers.');
    }
    sum += div(t, num);
  }
  return sum;
}

结论

编写高性能的 ArkTS 代码意味着要尽量减少不必要的类型转换,降低内存使用,避免沉重的异常,并使用与系统相匹配的数据类型。将这些最佳实践融入开发工作流后,您不仅能够编写更快的应用程序,还能提升代码的可维护性和在性能敏感环境中的可靠性。如果您正在使用 ArkTS 开发或探索 HarmonyOS,采纳这些小而专注的改动即可带来巨大的性能提升。祝编码愉快!

参考文献

Back to Blog

相关文章

阅读更多 »

性能不是奢侈

为什么性能很重要 当我们谈论软件性能时,大多数人会想到速度——API 响应有多快,页面加载有多快,多少 r...

刚发布 podpdf

封面图片:刚发布的 podpdf https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s...

简明 TypeScript 书

请提供您希望翻译的具体摘录或摘要内容,我才能为您进行简体中文翻译。