方舟編譯器是華為公司為了提升Android系統的編譯效率所推出的一項系統及應用的編譯與運作機制。
2019年4月,在華為P30系列國內發表會上,華為首次宣布了該技術。 (推薦學習:PHP影片教學)
編譯器,就是將「一種電腦語言(通常是高階語言)」翻譯為「另一種語言語言(通常是低階語言)」的程序。高階電腦語言便於開發者們編寫、閱讀交流以及維護,如Pascal、C 、C 、Java等,而低階機器語言則是電腦能直接解讀、運作的機器碼(Machine code)。
華為的方舟編譯器,就是將安卓應用程式開發者所使用的JAVA、C/C 轉換成機器碼。據王成錄透露,華為從2009年就開始考慮做編譯器,「因為咱們海思做了晶片以後,需要有自己的編譯器才能真正發揮晶片的能力,從2013年開始,有華為自己的自研編譯器了,叫HCC。」
根據時間表顯示,在2012年,華為成立了編譯器與程式語言實驗室,在2014年,技術大牛Fred Chow加入華為負責編譯器的主架構,經過十年的摸索,華為終於推出了方舟編譯者。
根據華為官方公佈的數據顯示,與先前的安卓應用開發相比,方舟編譯器能夠提升24%的系統操作流暢度,提升44%的系統響應能力,還能提升60%的第三方應用(微博極速版)操作流暢度。
消除了跨語言呼叫開銷
王成錄向記者們詳細闡述了方舟編譯器能提升流暢度、回應能力的工作原理。
首先,方舟編譯器是多語言聯合最佳化編譯器,「消除了跨語言呼叫開銷,這是影響Android效能開銷比較大的核心原因之一。」
據王成錄介紹,目前Android應用市場裡95%的APP都是多種開發語言:「邏輯部分,都是Java程式碼,但是為了增強它的能力,可能所有的APP的開發者,都會用C寫個函式庫供Java來呼叫。」
Java是一門物件導向程式語言,具有簡單性、物件導向、分散式等特點,雖然運作效率不如C ,但開發效率高、跨平台性更強的優勢,讓JAVA成為了安卓開發的首選,而透過JNI呼叫本地C/C 函式庫也是目前開發者們都在做的。
但,Java和C語言之間使用介面調用,必然會形成額外的效能開銷;王成錄表示,華為方舟編譯器將不同語言程式碼在開發環境中編譯成一套可執行文件,這樣執行效率更高。
消除了影響效能的虛擬機器機制並即時回收記憶體
王成錄認為華為方舟編譯器的第二大特點是消除了影響效能的虛擬機器機制。
在安卓系統發展過程中,虛擬機器不可被忽視:Android系統是以Linux為核心建構的,為了降低應用程式的開發難度,並將其適配到不同硬體配置的裝置上,Google在Linux核心之上建構了一個虛擬機,Android應用程式使用java開發,運行在虛擬機之上。
可以靈活實現不同應用程式的效能最佳化
王成錄表示,方舟編譯器的第三個亮點是可以靈活實現不同應用程式的效能最佳化。
他表示,現有的安卓編譯大部分程式碼在虛擬機環境運行,而虛擬機的創建由於來自於同一套“模板”,難以作深度的優化:不同應用的優化訴求不一樣;相較之下,方舟編譯器不一樣,每個應用編譯最佳化方案自己來定,分別形成不同應用優化後的機器碼,「相當於說,我們給每一個有追求的應用開發者,都有了一個把自己的應用做的更好的機會,不再受限於Android虛擬機的限制。」
更多PHP相關技術文章,請訪問PHP圖文教程欄位進行學習!
以上是方舟編譯器是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!