華為正式發(fā)布方舟編譯器,相關(guān)源碼已開放下載
記者(公眾號:記者)消息,8 月 5 日,趕在 2019 年華為全球開發(fā)者大會正式開幕的前幾天,華為正式對外發(fā)布了此前已經(jīng)對外公布的編譯工具——方舟編譯器。
據(jù)了解,方舟編譯器是基于 GCC(GNU Compiler Collection,GNU 編譯器套件) 開發(fā)的交叉編譯器套件,它包括了 C、C++、Fortran 的前端,也包括了這些語言的庫(如 libstdc++、libgcc 等)。HCC(即華為方舟編譯器) 運(yùn)行在 X86 linux 架構(gòu)服務(wù)器上,生成的二進(jìn)制運(yùn)行在 Aarch64 架構(gòu)服務(wù)器上。
此前,華為在 4 月份的華為 P30 系列國內(nèi)發(fā)布會上宣布了方舟編譯器的存在。按照官方說法,方舟編譯器是首家完全替代語言虛擬機(jī)的靜態(tài)編譯器,完全不需要解釋器;同時(shí)兼顧 Java 開發(fā)效率和 C 語言運(yùn)行效率的編譯器。相比現(xiàn)有的編譯機(jī)制,有如下優(yōu)勢:
方舟編譯器是一種靜態(tài)的編譯方式,而現(xiàn)有的 Android 系統(tǒng),運(yùn)行一個(gè)應(yīng)用程序首先啟動虛擬機(jī),然后讀入應(yīng)用程序代碼,逐條解釋執(zhí)行。會占用較多的處理資源,影響程序執(zhí)行的效率。當(dāng)然,也有包括 AOT 或 JIT 等提前或運(yùn)行時(shí)的編譯技術(shù),把部分程序轉(zhuǎn)換成機(jī)器碼直接在 CPU 上執(zhí)行。但是,仍舊無法做到 100% 做到擺脫虛擬機(jī)的執(zhí)行,這也是當(dāng)前 Android 陣營不如 iOS 陣營的關(guān)鍵。
華為方舟編譯器的靜態(tài)編譯方式可將語言里的動態(tài)特性直接翻譯成機(jī)器碼,手機(jī)安裝應(yīng)用程序后可全速運(yùn)行程序,徹底消除虛擬機(jī)的弊病,帶來效率上的極大提升。
方舟編譯器是在開發(fā)環(huán)境部署的編譯器,而現(xiàn)有編譯過程,主要發(fā)生在手機(jī)上,帶來額外的資源消耗。
方舟編譯器針對通用 ARM 芯片架構(gòu)進(jìn)行編譯優(yōu)化,未來將通過軟硬件協(xié)同設(shè)計(jì),將麒麟芯片的能力發(fā)揮到極致。同時(shí)方舟編譯器支持 Java 標(biāo)準(zhǔn)用法,三方應(yīng)用可直接進(jìn)行編譯,不需要修改代碼。但如果希望獲得更加好的性能或內(nèi)存方面的提升,則可以通過調(diào)整代碼結(jié)構(gòu),與方舟編譯器配合優(yōu)化來實(shí)現(xiàn)。
目前,華為已經(jīng)放出了方舟編譯器的詳細(xì)介紹頁面,相關(guān)下載地址也已經(jīng)給出。