雷锋网消息,8 月 5 日,赶在 2019 年华为全球开发者大会正式开幕的前几天,华为正式对外发布了此前已经对外公布的编译工具——方舟编译器。
据了解,方舟编译器是基于 GCC(GNU Compiler Collection,GNU 编译器套件) 开发的交叉编译器套件,它包括了 C、C++、Fortran 的前端,也包括了这些语言的库(如 libstdc++、libgcc 等)。HCC(即华为方舟编译器) 运行在 X86 linux 架构服务器上,生成的二进制运行在 Aarch64 架构服务器上。
此前,华为在 4 月份的华为 P30 系列国内发布会上宣布了方舟编译器的存在。按照官方说法,方舟编译器是首家完全替代语言虚拟机的静态编译器,完全不需要解释器;同时兼顾 Java 开发效率和 C 语言运行效率的编译器。相比现有的编译机制,有如下优势:
方舟编译器是一种静态的编译方式,而现有的 Android 系统,运行一个应用程序首先启动虚拟机,然后读入应用程序代码,逐条解释执行。会占用较多的处理资源,影响程序执行的效率。当然,也有包括 AOT 或 JIT 等提前或运行时的编译技术,把部分程序转换成机器码直接在 CPU 上执行。但是,仍旧无法做到 100% 做到摆脱虚拟机的执行,这也是当前 Android 阵营不如 iOS 阵营的关键。
华为方舟编译器的静态编译方式可将语言里的动态特性直接翻译成机器码,手机安装应用程序后可全速运行程序,彻底消除虚拟机的弊病,带来效率上的极大提升。
方舟编译器是在开发环境部署的编译器,而现有编译过程,主要发生在手机上,带来额外的资源消耗。
方舟编译器针对通用 ARM 芯片架构进行编译优化,未来将通过软硬件协同设计,将麒麟芯片的能力发挥到极致。同时方舟编译器支持 Java 标准用法,三方应用可直接进行编译,不需要修改代码。但如果希望获得更加好的性能或内存方面的提升,则可以通过调整代码结构,与方舟编译器配合优化来实现。