HarmonyOS ArkTS和TS混编是否会导致性能损耗?

根据文档描述:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-migration-background-V5

“为了保证程序的正确性,动态类型语言不得不在运行时检查对象的类型。例如,JS不允许访问undefined的属性。但是检查一个值是否为undefined的唯一的办法是在运行时进行一次类型检查。所有的JS引擎都会做如下的事:如果一个值不是undefined,那么可以访问其属性,否则抛出异常。现代JS引擎可以很好地对这类操作进行优化,但是总有一些运行时的检查是无法被消除的,这就使得程序变慢了。由于TS总是先被编译成JS,所以在TS代码中,也会面临相同的问题。ArkTS解决了这个问题。由于使能了静态类型检查,ArkTS代码将会被编译成方舟字节码文件,而不是JS代码。因此,ArkTS运行速度更快,更容易被进一步地优化。”和“TS通过打开编译选项strictNullChecks来实现此特性。但是TS是被编译成JS的,而JS没有这个特性,因此严格null检查只在编译时起作用。从程序稳定性和性能角度考虑,ArkTS将“null-safety”视为一个重要的特性。这就是为什么ArkTS强制进行严格null检查,在ArkTS中,上面的代码总是编译报错。作为交换,这样的代码可以给ArkTS引擎带来更多的信息和有关值的类型保证,这有助于更好地优化性能。”

可以理解为ArkTS通过在编译器严格的类型检查,从而避免了在方舟运行时类型检查的消耗。但对于ets和ts混编的场景,这类优化是否会生效?方舟运行时会根据源码来自ets或者ts来进行类型检查策略执行的依据从而提高性能吗?

HarmonyOS
2024-08-23 11:21:02
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

ArkTS和TS混编可能会导致性能损耗。在ArkTS中,静态类型检查要求显式类型标注,这意味着编译器可以更好地优化代码以提高性能。如果在混编的代码中存在动态类型,编译器就无法进行同样的优化,从而可能导致性能损耗。因此,建议在开发过程中避免混用动态和静态类型的代码,以确保最佳性能。

分享
微博
QQ
微信
回复
2024-08-23 20:51:33
相关问题
ArkTS调用js/ts代码会有性能损耗
2280浏览 • 2回复 待解决
ArkTS文件TS文件的区别
2006浏览 • 1回复 待解决
ArkTS文件TS文件之间有何异同?
251浏览 • 1回复 待解决
ArkTS写法是否可以按TS/JS的逻辑理解
1644浏览 • 1回复 待解决
HarmonyOS关于TSArkTS的语法问题
110浏览 • 1回复 待解决
赋值导致降低组件的复用性能
1585浏览 • 1回复 待解决
这句sql导致并发出问题吗 ?
1968浏览 • 1回复 待解决
如何实现ArkTS性能编程?
124浏览 • 1回复 待解决
鸿蒙的js开发影响其性能吗?
12456浏览 • 3回复 待解决
Refreshpulltorefresh性能差异
188浏览 • 1回复 待解决
HarmonyOS动态导入是否重复导入?
95浏览 • 1回复 待解决
是否有衡量页面性能的 API?
383浏览 • 1回复 待解决