立即注册
查看: 730|回复: 1

[鸿蒙OS技术分享] HarmonyOS编译器和运行时关键技术

已绑定手机
发表于 2022-1-12 15:11:19 | 显示全部楼层 |阅读模式 来自 广东省深圳市
HarmonyOS对编译器运行时的需求
支持HarmonyOS生态
• 支持应用开发语言(JS/TS,Java,C/C++)
• 设备无关的应用分发格式,支持不同设备分发部署
提升应用开发体验
• 语言和范式提升开发效率
• 支持跨设备、分布式应用的开发、编译构建、调试
提升用户体验
• 多端适配,优化不同硬件平台上系统和应用的ROM/RAM占用、性能和功耗
• 支持并优化多设备协同全场景业务的分布式应用运行

ArkCompiler对HarmonyOS应用的支持
1.jpg

ArkCompiler架构
2.jpg

多语言编译流程
3.jpg

基于类型信息的JavaScript编译优化
基于类型的编译优化大量移至Host侧
• 源码预编译,消除端侧源码解析开销
• 基于TS显式类型声明,应用类型推导进行类型特化优化
• 类型信息保留至运行时

Actor并发编程模型
<JS Worker Sample Code>
// Test.js
let count = new SharedArrayBuffer(8);
Image img = [];
function collect(msg) {
img.push(msg.img);
}
let w1 = new Worker(“load-worker.js”);
w1.postmessage( { path:“xxx.jpg”, count: count } );
w1.onmessage = collect;
let w2 = new Worker(“load-worker.js”);
w2.postMessage( { path:“xxx.bmp”, count: count } );
w2.onmessage = collect;

// load-worker.js
onmessage = function (msg) {
Atomics.add(msg.count, 0, 1);
result= ReadImages(msg.path);
postMessage( { img: result } );
}

轻量级Actor实现
4.jpg

Fast TS FFI
5.jpg
TS代码编译
根据TS Class声明及运行时约定,生成TS对象布局描述C/C++头文件以及操作TS对象的native库
Native代码编译
include TS对象头文件以及链接对应库,实现C++代码直接操作TS对象
TS对象操作库中插入类型检查,对象布局如在运行时发生变化,回退慢速路径

简化的多语言编程模型
6.jpg
• 代码兼容 - 已有Java代码无需修改,TS可直接创建、操作和传递 Java对象
• 开发便利 - 开发者无需处理交互数据的序列化/反序列化,提高开发效率,降低复杂度
• 性能优化 - 跨语言交互优化, 利用更多静态类型信息的编译优化

ArkCompiler 3.0: 高效的跨端编译运行
7.jpg
已绑定手机
发表于 2022-2-28 08:39:10 | 显示全部楼层 来自 江苏省徐州市
好好学习学习,谢谢分享!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表