为何要搞 10 年?方舟编译器专家首次回应
昨天华为正式开源了其方舟编译器,一时间引起热议。在方舟技术专家所在的微信群中,关于为何方舟需要研发 10 年的问题被首次回应。
JFinal 作者詹波的疑惑是为什么方舟编译器需要花费 10 年时间才实现:
方舟编译器官网的深度解密文章表明,做出方舟编译器的难度极大。我理解为比做一个 C++ 编译器的难度要大得多得多,否则打造方舟编译器不会需要十年时间。
而 C++ 远比 Java 复杂度高,为什么做一个 Java 编译器的难度会远比做 C++ 编译器要高得多呢?
官网的方舟深度解密文章中并未透彻说明核心难点在哪里。
关于方舟编译器的深度解析,可以查看:拜拜虚拟机,全面深度解密华为方舟编译器。
方舟专家不闲解答了他的疑惑,他介绍,首先在构思方舟的时候华为并没有选择 C++,是因为国内生态开发者主要还是 Java/Kotlin 为主,而 Java 本身是动态语言,如果要能够在服务器侧做到静态编译,又不能动手裁剪语言的动态能力,就需要 IR,运行时,编译器以及编程框架一起修改。这还要考虑复杂的兼容问题,导致技术方案选型的困难。
其次要想提高流畅度,需要提升内存使用效率、提升 JNI 效率,需要想尽办法控制动态绑定对性能的影响,需要 profile 上有更准确的信息,这是系统工程上的困难。
不闲表示,其实二进制编译也只是一种技术路线,简单的 AOT 也是生成二进制,问题的关键是如何提升编译后的代码执行效率,这是当前的主要困难。做出一个可以工作的不难,难在做出世界顶尖性能。“甲骨文、Jetbrains 等很多海外公司都在做类似尝试,如果不是有大牛压台……我们国内能做 IR 设计和内存模型的人很少,大家也都不再用汇编编程了。”
欢迎留言探讨。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux 28 周年 | 方舟编译器开源 | Goodbye Python 2
回顾一周社区热门资讯 第【三十七】期:20190824-20190830 点击相应标题,跳转阅读全文。 中国计算机学会推出 CSP 非专业级别认证 CCF 于 2014 年推出 CSP 认证,以评价计算机专业人士或准专业人士计算机科学的基础能力,即算法和编程能力,据介绍,该认证已经成为一些企业与许多大学评价计算机专业大学生专业能力的重要工具。 Python 真的勒死R 了吗? OpenJDK 之后,OpenJFX 也要从Mercurial 迁移到 Git 根据 Stack Overflow 开发人员调查,近 90% 的开发人员使用 Git,而 Mercurial 是最不受欢迎的版本控制系统,只有约 3% 的开发人员采用。作为最广泛使用 Mercurial 的平台 Bitbucket,其上的 Mercurial 使用量正在稳步下降,而选择 Mercurial 的新 Bitbucket 用户比例已下降至不到 1%。 项目内出现广告位引争议,开源如何持续健康运营? 最近 Standard JS 官方表示因为当前开源模式运转不灵,需要资金支援,所以将实验性地在项目中展示广告,显示来自开源赞助商...
- 下一篇
OSChina 周一乱弹 —— 来自狗子的疯狂暗示
Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐《Vincent》 - Charlie Landsborough 《Vincent》 - Charlie Landsborough 手机党少年们想听歌,请使劲儿戳(这里) @鉴客 :方舟编译器开源了,同时在华为开发云和码云托管,华为开发云估计搞挂了。码云正常 官方网站:https://www.openarkcompiler.cn 官方Gitee镜像仓库地址:https://gitee.com/harmonyos/OpenArkCompiler 华为云代码托管地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler 【正文】 @小鱼丁 :做了一个公交坐过站还怎么也回不去的梦 是个噩梦么 毕竟是周末么。 起床就到了玩游戏的时间了, @粉色调佩奇 :昨天人品爆发10连胜 终于到王者了 今天早上忽然大悟 原来开学了 小学生都在补作业 不过无论输赢, 都不要着急上火,2 “下象棋的时候也没寻思能惊动装甲车和快速反应部队。” 所以还是少玩手机? 哈哈哈哈...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启