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 標準用法,三方應用可直接編譯,不需要修改代碼。但若希望獲得更好的性能或記憶體提升,則可透過調整代碼結構,與方舟編譯器配合優化來達成。
(本文由 雷鋒網 授權轉載;首圖來源:Flickr/Kārlis Dambrāns CC BY 2.0) |