運(yùn)行方舟編譯器編譯出來(lái)的APP?
根據(jù)華為官方介紹,通過(guò)方舟編譯器編譯優(yōu)化過(guò)之后,系統(tǒng)流暢度會(huì)提升24%,系統(tǒng)響應(yīng)速度會(huì)提升44%,第三方應(yīng)用(比如:微博)的操作流暢度會(huì)提升60%。換句話說(shuō),方舟編譯器通過(guò)底層優(yōu)化將安卓應(yīng)用的各方面性能整體提升了一個(gè)檔次。
對(duì)于普通用戶而言,我們的安卓手機(jī)可以隨時(shí)安裝經(jīng)過(guò)方舟編譯器優(yōu)化過(guò)的APP,同時(shí)不需要安裝方舟編譯器。
什么是方舟編譯器?關(guān)于方舟編譯器,大家如果沒(méi)有學(xué)習(xí)過(guò)編程,可能就不太了解了。那么什么是編譯器呢?
運(yùn)行在安卓手機(jī)上的APP都是使用Java語(yǔ)言編寫的,但是像Java這種高級(jí)編程語(yǔ)言,機(jī)器是不認(rèn)識(shí)的;所以,需要通過(guò)Android內(nèi)置的Java虛擬機(jī)翻譯成機(jī)器語(yǔ)言,這樣機(jī)器就可以完美運(yùn)行應(yīng)用了。而編譯器就是這樣一個(gè)類似于“翻譯官”的角色,負(fù)責(zé)將Java代碼翻譯成機(jī)器代碼。
安卓Java虛擬機(jī)的編譯過(guò)程是動(dòng)態(tài)的,程序的運(yùn)行往往是一邊編譯一邊執(zhí)行;所有這些過(guò)程對(duì)于系統(tǒng)資源的耗費(fèi)非常大,所以我們可以看到安卓手機(jī)的運(yùn)行內(nèi)存這幾年增長(zhǎng)非???。
而方舟編譯器則改變了Java虛擬機(jī)的編譯方式,將動(dòng)態(tài)編譯變?yōu)殪o態(tài)編譯,可以做到全程只執(zhí)行機(jī)器碼直接運(yùn)行程序,不經(jīng)過(guò)Java虛擬機(jī),這樣就大大縮短了程序的響應(yīng)時(shí)間,同時(shí)還減少了編譯運(yùn)行過(guò)程對(duì)于系統(tǒng)資源的耗費(fèi)。
方舟編譯器對(duì)于Android另一項(xiàng)巨大提升的方面就在于垃圾處理機(jī)制(GC)的不同。方舟編譯器首次將Java/C/C++等混合代碼一次編譯成機(jī)器碼直接在手機(jī)上運(yùn)行,徹底告別Java的JNI額外開銷,也徹底告別了虛擬機(jī)GC內(nèi)存回收帶來(lái)的應(yīng)用進(jìn)程掉線,使操作流暢度大幅提升。如果說(shuō)目前最新的安卓系統(tǒng)是和諧號(hào)動(dòng)車,那么經(jīng)方舟編譯的安卓系統(tǒng)便是高鐵,是“復(fù)興號(hào)”。
方舟編譯器的優(yōu)勢(shì)由于方舟編譯器是從底層優(yōu)化了Android,所以經(jīng)過(guò)方舟編譯器優(yōu)化之后的系統(tǒng)和應(yīng)用程序相比于Java虛擬機(jī),在性能方面都會(huì)有巨大的提升,具體來(lái)說(shuō),有以下幾個(gè)方面:
大大簡(jiǎn)化了Java虛擬機(jī)編譯執(zhí)行代碼的步驟, 徹底告別了額外的JNI開銷方舟編譯器改變了Java虛擬的垃圾回收機(jī)制,替換了Android system-server的所有后臺(tái)服務(wù),大幅度提升系統(tǒng)的性能方舟編譯器還可以完美編譯除Java之外的其他語(yǔ)言,適用性更加廣泛總的來(lái)說(shuō),方舟編譯器對(duì)于Android最直接的優(yōu)化就在于它能夠完全脫離Java虛擬機(jī),從而天生就沒(méi)有Java虛擬機(jī)所具有的那些缺陷。
贈(zèng)人點(diǎn)贊,手留余香。我是小強(qiáng)Talk,歡迎大家關(guān)注我,和我一起共同成長(zhǎng)進(jìn)步!