1、ArkTS协同方舟编译运行时使能鸿蒙应用原生流畅 更严格的类型检查 任务并发能力增强 基于TS语法 声明式UI范式,状态管理API1011API9更强的静态检查和分析能力,更高的开发效率和运行性能。并发共享增强API12ArkTS 更好的生产力与性能生态兼容ArkCompiler实现基于TypeScript语法效率JavaScript/TypeScript生态90+%公共语法Linter,auto fixer,migrator并发性能功耗内存占用UI体验abc(方舟字节码)互操作:TypeScriptJavaScriptC/C+ArkTS编译运行时优化SendableClassesJS-Cla
2、ssesJS-ClassesDDDDDSS可直接传递SSDSJS对象Sendable对象线程1线程2Clone传递,类型重建类型关系类型Sendable Classes抽取EcmaScript中Primitive的Class集合定义容器类统一元素的对象Class集合前端编译生成的Sendable Class集合JS ClassesJS Hidden Classes开发者使用规格&约束Sendable标记约束Class(布局不可变)Sendable Class只能继承Sendable ClassSendable Class成员必须为Primitive或Sendable类型Sendable Cla
3、ss对象可以挂载到类型可变对象中Sendable对象可以在TaskPool和Worker中使用规格约束SendableClass支持对象共享Sendable解决序列化耗时问题以音乐歌曲信息跨线程为例,介绍Sendable的使用实现方案介绍1.定义Sendable类型的歌曲信息2.组装歌曲信息class实例3.跨并发实例传递,数据库操作业务实现的关键点1.Sendable对象及其成员均必须是Sendable数据2.如果包含不可共享的对象,推荐使用非Sendable组合Sendable class和不可共享的对象,再进行序列化传递。Sendable高性能开发实践Sendableclass clas
4、s SharedSongBean contentID:string=;mid:string=;contentName:string=;/.contentExInfo:SharedContentExInfo|null=nullnull;/成员标记SendableauthorList:collections.Array|null=nullnull;constructorconstructor()init(contentExInfo:SharedContentExInfo)thisthis.contentExInfo=contentExInfo;let let song:SharedSongBean
5、=new new SharedSongBean()/歌曲信息await await taskpool.execute(func,song)/高性能传输到子线程优化编译训练编译字节码训练获取运行特征编译优化机器码运行执行优化机器码机器码AOT编译训练应用运行时Profile执行高性能机器码执行字节码TypedLanguageUnTypedLanguage训练应用基于 PGO*的 方舟AOT+JIT优化编译编译字节码训练获取运行特征编译优化机器码运行执行优化机器码机器码AOT编译开发侧性能场景训练执行高性能机器码执行字节码全面优化进一步提升10%性能即时优化编译运行时Profile云侧性能场景训练
6、端侧性能场景训练ArkTSTSJSTypedLanguageUnTypedLanguageArkTSTSJS20232024方舟编译运行时编译优化提升编译时间执行性能interpreterBaseLineJITFastJIT字节码解释执行(无编译)基于字节码直接生成机器码(无优化,生成快)基于IR优化(有优化,生成慢)interpreterBaseLineJITFastJIT决策器Profile当前能力 分级JIT:当前实现两级JIT动态选取合适方案,BaseLineJIT以快速生成代码为目标,FastJIT综合考虑编译时间与执行性能 动态决策:根据代码热度与编译开销动态选择JIT方案,实现当