發(fā)表時(shí)間:2023-07-18 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
華為方舟編譯器是款支持多種編程語言、多種芯片平臺的編譯工具,編譯器框架部分源碼已開源,開發(fā)者可基于開源代碼+二進(jìn)制,編譯構(gòu)建出編譯器工具鏈,方舟編譯器支持面向多樣化的終端設(shè)備平臺進(jìn)行編譯和運(yùn)行,為開發(fā)者提高開發(fā)效率。
方舟編譯器概述
方舟編譯器是為支持多種編程語言、多種芯片平臺的聯(lián)合編譯、運(yùn)行而設(shè)計(jì)的統(tǒng)一編程平臺,包含編譯器、工具鏈、運(yùn)行時(shí)等關(guān)鍵部件。 方舟編譯器還在持續(xù)演進(jìn)中,陸續(xù)將上述能力實(shí)現(xiàn)和開源。
本次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實(shí)現(xiàn),同時(shí)搭配編譯器其他二進(jìn)制組件,實(shí)現(xiàn)Java程序到aarch64匯編指令的編譯過程。開發(fā)者可基于開源代碼+二進(jìn)制,編譯構(gòu)建出編譯器工具鏈,嘗試對Java程序進(jìn)行編譯。社區(qū)參與者可以通過框架源碼學(xué)習(xí)方舟編譯器的編譯器中間表達(dá)(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構(gòu)思想,并參與諸如對編譯器中端優(yōu)化的貢獻(xiàn)。
華為始終以開放的姿態(tài)擁抱開源,充分參與源碼共享,與開發(fā)者們共同成就開源世界的科技進(jìn)步。在全球主流基金會及開源社區(qū)中,華為擁有十多個(gè)核心席位,作為Linux基金會白金會員,華為不斷貢獻(xiàn)自己的技術(shù)力量,對Linux kernel累積貢獻(xiàn)6800+補(bǔ)丁。同時(shí),華為已與40多家頭部應(yīng)用廠商合作,對各類流行應(yīng)用進(jìn)行編譯優(yōu)化,并在未來不久上線。
此次公布方舟編譯器框架源碼后,華為預(yù)計(jì)將于2020年及以后實(shí)現(xiàn)方舟編譯器工具鏈完整開源。在官方開源社區(qū)中,開發(fā)者們可以參與并貢獻(xiàn)自己的力量,與華為一起共同推進(jìn)基礎(chǔ)軟件的發(fā)展。
華為堅(jiān)持每年將10%以上的銷售收入投入研究與開發(fā),隨著軟件實(shí)力持續(xù)增強(qiáng), 誕生了“GPU Turbo”“Link Turbo”“EROFS”等硬核技術(shù)。未來,華為將與廣大開發(fā)者以及合作伙伴進(jìn)行更深入、廣泛的合作,堅(jiān)持開放、合作、共贏的策略,聯(lián)接全行業(yè)的能力持續(xù)推進(jìn)產(chǎn)業(yè)創(chuàng)新與開放生態(tài)。
多語言聯(lián)合
將同一應(yīng)用中的不同語言代碼聯(lián)合編譯、聯(lián)合優(yōu)化,消除語言間的性能“鴻溝”,降低開發(fā)者的優(yōu)化成本
輕量運(yùn)行時(shí)
通過編譯器的語言實(shí)現(xiàn)能力和優(yōu)化能力增強(qiáng),應(yīng)用運(yùn)行時(shí)的開銷更小
軟硬件協(xié)同
編譯器與芯片實(shí)現(xiàn)軟硬件協(xié)同優(yōu)化,充分發(fā)揮硬件能效,應(yīng)用體驗(yàn)更佳
多平臺支持
支持面向多樣化的終端設(shè)備平臺進(jìn)行編譯和運(yùn)行,根據(jù)設(shè)備特征提供便捷的開發(fā)與部署策略,提高開發(fā)效率
一、開發(fā)階段打包的APK就直接是可執(zhí)行,并且跨語言平臺
在方舟編譯器里面,已經(jīng)編譯好的APK,會通過靜態(tài)編譯的方式先轉(zhuǎn)換成機(jī)器碼再安裝,這其實(shí)是AOT,無需麻煩的虛擬機(jī),提升運(yùn)行速度和效率。并且作為開發(fā)者,還可以根據(jù)不同的程序特點(diǎn),選擇不同的編譯優(yōu)化方案,不像安卓官方的方式使用統(tǒng)一的虛擬機(jī)方案。
二、方舟編譯器邊運(yùn)行變清理,內(nèi)存清爽
現(xiàn)在安卓手機(jī)的一大特色就是內(nèi)存越來越大,6GB都是老人機(jī)的配置了。這除了程序大以外還有安卓的程序運(yùn)行產(chǎn)生垃圾多有關(guān)系。那么清理垃圾呢?則需要暫停程序,也就會頓一下,即所謂的“卡”。華為方舟編譯器則是利用程序多線程運(yùn)行的特點(diǎn)。打個(gè)比方,您現(xiàn)在正在用的“中關(guān)村在線”這個(gè)APP用了AB兩個(gè)線程,在華為的P30手機(jī)中,那么線程A運(yùn)行的時(shí)候,B在清理垃圾,然后A線程清理垃圾的時(shí)候B線程在運(yùn)行,程序運(yùn)行不中斷,垃圾處理不停,做到了又連貫、又節(jié)約系統(tǒng)資源。
三、方舟編譯器,應(yīng)用級編譯優(yōu)化
代碼優(yōu)化是編譯器最為核心的功能,也是評判一個(gè)編譯器優(yōu)劣最重要的標(biāo)準(zhǔn)。
當(dāng)前由于安卓應(yīng)用使用了虛擬機(jī)機(jī)制,難以面向不同應(yīng)用對虛擬機(jī)進(jìn)行針對性的靈活優(yōu)化。
安卓ART的AoT和JIT動(dòng)態(tài)編譯因?yàn)槭沁\(yùn)行在手機(jī)上,受資源所限,因而只能使用簡單的優(yōu)化算法。
而方舟編譯器由于是在應(yīng)用開發(fā)階段進(jìn)行編譯,所以可以允許不同應(yīng)用靈活采用不同的編譯優(yōu)化方案,而且因?yàn)樵陂_發(fā)環(huán)境編譯不會受到手機(jī)性能的限制,可以使用更多先進(jìn)的優(yōu)化算法,從而使得每個(gè)應(yīng)用的性能達(dá)到最佳。
Q1:方舟編譯器是一次性全部代碼嗎?
答:
首次開源范圍是編譯器 IR( Intermediate Representation)、RC(Reference Counting)和多語言設(shè)計(jì)思想等,用于與業(yè)界、學(xué)術(shù)界溝通交流。接下來將陸續(xù)開源編譯器前端、后端,支持其它語言(如 JavaScript)的編譯等,當(dāng)前部分Java語言特性和JVM虛擬機(jī)特性的支持未包括在本次開源代碼中,包括:annotation、lambda表達(dá)式、泛型等。
Q2:方舟編譯器開源路標(biāo)是怎樣的?
答:
方舟編譯器從 2019 年 8 月開始開源,歡迎廣大的應(yīng)用開發(fā)者、手機(jī)廠商、軟件從業(yè)人員一起共建開源社區(qū)和生態(tài)。 開源計(jì)劃大體上這樣安排:2019 年 8 月重點(diǎn)開源框架部分,接下來將陸續(xù)開源編譯器前端、后端;支持 Java 程序編譯、JavaScript 語言應(yīng)用的編譯等。
騰訊視頻官方版 | 45.34MB
愛奇藝視頻官方正式版 | 35.10MB
暴風(fēng)影音最新版下載 | 50.3MB
QQ音樂官方正式版 | 24.2MB
酷狗音樂2022下載 | 37MB