Kuidas Huawei Ark Compiler võib Androidi rakenduste jõudlust parandada

Huawei on avaldanud oma uue Ark Compileri tööpõhimõtted, lubades järsult parandada rakenduse jõudlust Androidis. Loe edasi

Suur osa hiljutistest vestlustest Huawei ümber on keerdunud ettevõtte kahetsusväärse poliitilise olukorra ümber, kuna USA korraldus, mis piiras paljudel ettevõtetel Huaweiga äritegevust. Sellise pöördelise otsuse tagajärjed on liiga suured, et tähelepanuta jätta. Kuid alternatiivses reaalsuses, kus seda täitevkorraldust ei eksisteeri, oleks Huawei olnud tähelepanu keskpunktis. hiljuti avalikustas Ark Compiler, uusim uuendus, mis väidetavalt ületab rakenduste jõudluse lõhe Androidi ja Androidi vahel iOS.

Enne kui Sukeldume sellesse, mis on Ark Compiler, peame astuma sammu tagasi ja mõistma, mis on kompilaator ja millist eesmärki see Androidi süsteemis teenib.

Androidi koostajate ja tõlkide lühiajalugu

Kompilaator on arvutiprogramm, mis tõlgib koodi ühest keelest teise keelde, mis on sageli emakeel. Seda saab seejärel käivitada otse arvuti või mõne muu programmi (tõlgi) kaudu. See tõlge on vajalik, kuna kirjutame koodi inimloetavates programmeerimiskeeltes (nt Java ja Kotlin), samas kui arvuti mõistab ainult emakeelt (binaarkood 1-de ja 0-d). Seega toimib kompilaator sillana inimese kirjutatud juhiste ja masina võime vahel neid juhiseid mõista ja seejärel täita. See, kui kiiresti ja tõhusalt see teisendamine ja sellele järgnev tõlgendamine toimub, määrab seega kompilaatori efektiivsuse luua otsene seos kompilaatori tõhususe ning koodi jõudluse ja tõhususe vahel ning selle kaudu, rakendusi.

Dalvik VM

Androidi algusaegadel kasutas OS seda, mida nimetati Dalvik VM-iks (tõlgiks) koos JIT (just-in-time) kompilaatoriga. See vanem video XDA teleri Android Basics 101-st seeria puudutab Dalvik VM-i ja JIT-i seadistust, mis mõlemad teenisid varajaste Android-süsteemide vajadusi, kus mälupiirangud olid külluslikud. Dalvik VM võttis Java baitkoodi ja teisendas selle masinkoodiks, kui ja millal kood oli vaja käivitada (seega just-In-Time). See oli vajalik, kuna telefonide salvestusruum oli toona tõeline piirang, nii et see lähenemisviis võimaldas rakendustel töötada süsteemis väiksema failisuurusega.

Rakenduste käitamise ajal kompileerimise ja tõlgendamise puuduseks oli rakenduse üldine aeglasem jõudlus, kuna kompileerimine toimus samal ajal, kui kasutaja rakendust kasutab.

Dalvikul olid piirangud ka prügikogumismehhanismiga. Dalvik jälgis kollektiivselt iga mälujaotust. Kui Dalvik teeb kindlaks, et programm ei kasuta enam osa mälust, vabastab ta selle mälu ilma programmeerija sekkumiseta tagasi hunnikusse. Seda protsessi nimetatakse prügikogumiseks (GC) ja selle eesmärk on leida programmis mäluobjektid, millele enam juurde ei pääseta, ja seejärel taastada nende objektide poolt mälu vabastamiseks kasutatud ressursid. Süsteem määrab, millal GC-d on vaja kollektiivselt, nii et rakenduste arendajad ei saa valida, millal GC sündmused toimuvad [isegi ART-is]. Nii et kui GC sündmus leidis aset keset mis tahes intensiivset töötlemistegevust esiplaani rakenduses, peataks süsteem protsessi käivitamine ja GC käivitamine, suurendades seeläbi töötlemisaega ja tekitades märgatava "jank" kasutajad.

Need ja muud piirangud sundisid Google'it uurima alternatiivseid lähenemisviise kiiremaks toimimiseks.

Android Runtime

Android 4.4 KitKatiga tutvustas Google ART (Android Runtime) eelvaate kujul koos AOT (Ahead-Of-Time) kompilaatoriga ja Android 5.0 Lollipopiga loobus Google Dalvikust ART kui ainsa saadaoleva tõlgi kasuks. ART koos AOT-ga teisendas koodi masinakeeleks rakenduse installimise ajal, selle asemel et oodata, kuni rakendus on kasutusel. See lähenemisviis kiirendas seega rakenduste käivitamise aega, kuid tõi kaasa ka puudusi aeglasema installimise ja suurenenud kettaruumi kasutamise näol. Selle kõige tasakaalustamiseks Google vastu võetud AOT-i, JIT-i ja profiilipõhise kompileerimise kombinatsioon ART-iga operatsioonisüsteemis Android 7.0 Nougat, et tagada ühegi teguri drastiline mõju.

Androidi ART juurutamine

ART töötas ka selle nimel, et muuta prügikogumine vähem pealetükkivaks. GC protsess optimeeriti nii, et see oleks üldiselt kiirem vähemate pausidega (üks lühike paus versus Dalviku kaks pausi), vähem killustatust ja vähem mälukasutust. Google'i esitlus 2014. aasta Google I/O-l selgitab üksikasjalikumalt Dalviki GC ja ART täiustuste piiranguid.

Isegi nende aastate jooksul toimunud muutuste korral hõlmas Google'i lähenemisviisi põhieeldus koodi tõlgendamist täitmise ajal, muutes samal ajal kompileerimise (tõlke) elemendi ajastust. Prügikogumine on ka jätkuvalt valupunkt rakenduste arendajatele, kuna see on häiriv ja kollektiivne. Väidetavalt kannatab seetõttu Androidi rakenduste jõudlus, kuna sellega kaasnevad jätkuvalt üldkulud.

Huawei Ark Compiler

Huawei on töötanud tõhusama lahenduse väljatöötamise nimel ja on sellest tulenevalt palganud sadu selle valdkonna eksperte. Selle jõupingutuse tulemuseks on Ark Compiler, mis Huawei väitel on esimene staatiline kompilaator mis võimaldab otsetõlget masinkeelde, kõrvaldades täielikult vajaduse tõlk. Ark Compiler töötati välja ka eesmärgiga maksimeerida Java ja C töö efektiivsust, nii et teoreetiliselt peaks nende keelte puhul nägema parimaid tulemusi.

Huawei graafika. Teksti tõlkis XDA kasutaja MyKeyVans.

Huawei esitleb mõnda Ark Compileri põhifunktsiooni järgmiselt:

  • Kompileerimistehnikad, nagu AOT ja JIT, võivad mõne programmi teisendada masinkoodiks ja käivitada need otse protsessoris, kuid need tehnikad ei suuda tõlgist ja sellega seotud piirangutest täielikult lahti saada. Ark Compiler kasutab staatilist kompileerimist, mis võimaldab tal end dünaamilise tõlgi küljest lahti ühendada, avades võimaluse rakenduse jõudluse suurendamiseks "hüppeliselt."
  • Staatilisel kompileerimisel on potentsiaalne negatiivne külg, kuna see on liiga jäik ja ei suuda teha muudatusi, mida dünaamiline kompilaator saab täitmise ajal teha. Huawei väidab, et Ark Compileri staatiline kompileerimine lahendab selle "tõlkides programmeerimiskeele dünaamilised funktsioonid sujuvalt masinkoodiks."
  • Olemasolevad kompileerimisprotsessid toimuvad rakenduse paketi mobiilseadmesse installimise ajal või pärast seda. Ark Compiler on mõeldud juurutamiseks tarkvaraarenduse ajal, mis meie arvates aitab eemaldada installimise ja käivitamise ajal tekkivaid üldkulusid. Eeldame, et rakenduste arendajad saaksid rakenduse ajal otse kompileerida erinevaid keeli omamasse masinkoodi arendusprotsess ja tulemuseks olev APK ei vaja seega interaktsiooni tõlgi või virtuaalmasinaga funktsiooni. See vähendaks teoreetiliselt näiteks JNI-ga seotud üldkulusid.
  • Ark Compiler muudab ka prügikogumise kollektiivset olemust. See võimaldab GC sündmustel esineda erinevate Java lõimede jaoks eraldi. See lahterdatud lähenemisviis pakub esiplaanil olevates rakendustes vähem tüssamist.

Nende muudatuste tulemusena saab Ark Compiler näiliselt parandab Androidi süsteemi töö sujuvust kuni 24%, reageerimiskiirust kuni 44% ja kolmandate osapoolte rakenduste sujuvust kuni 60%, väites, et see viib Androidi rakenduse jõudluse iOS-i omaga samale tasemele.

Ark Compiler on praegu koostatud ja optimeeritud ARM-kiibi arhitektuuri jaoks. Huawei loodab, et tulevikus aitab koostööl põhinev riist- ja tarkvarakujundus Kirini kiibi võimekuse maksimeerimiseks.

Ark Compiler toetab standardset Java kasutamist, võimaldades kolmanda osapoole rakenduste otsest kompileerimist, ilma et rakenduse arendaja peaks koodi muutma. Ark Compiler võimaldab jõudluse ja mälu edasiseks täiustamiseks ka "koodistruktuuri kohandamist". Huawei on otsustanud muuta Ark Compileri avatud lähtekoodiga süsteemiks, mis võimaldaks kolmandate osapoolte arendajatel kasutusele võtta ja kohandada tehnoloogiat nende vajadustele, edendades selle kasutuselevõttu koos rakenduste arendajate ja mobiiltelefonidega tootjad.

Kuigi Huawei ei maini Ark Compileri miinuseid, võib oodata suuri rakenduste suurusi. vähemalt, kuid see ei tohiks probleeme tekitada praeguse põlvkonna seadmetes, mis on kaasas ladustamine. Samuti eeldame, et Ark Compiler ei ole kõigi protsessoriarhitektuuride jaoks saadaval, kuna Google'i ühilduvusprobleemid ei valmista Huawei peavalu. Ark Compiler on mõeldud kasutamiseks arenduse, mitte installimise ajal; see viitab sellele, et Huawei võib olla muutnud seda, kuidas rakendusi Android-seadmetes juurutatakse ja installitakse, ning võis töötada ka oma APK kujundusega. Kui see on õige, võib see tekitada ökosüsteemis suure ühilduvusprobleemi ja kulub palju aega, enne kui sellest saaks Androidi standardfunktsioon, kui üldse.

Kasutaja seadmes kompileerimata jätmine tõstatab ka suure küsimuse optimeerimise kohta. ART optimeerib praegu mikroarhitektuuripõhiselt, mis tähendab, et saadud kahendfail oleks erinev Snapdragoni seadme ja Exynose seadme jaoks või isegi Snapdragon 845 ja Snapdragoni jaoks 625. See lähenemisviis on mõistlik tootjatele, kellel on täielik kontroll SoC üle, nagu Apple ja Huawei. Kuna aga ülejäänud Androidi maailm kasutab paljusid erinevaid SoC-sid, on üldise optimeerimise sundimine seadmetes kasutamiseks taas takistuseks Ark Compileri standardimisel. Järelikult ärge oodake, et Ark Compiler jõuab teie lemmik kohandatud ROM-ile niipea.

Selguse mõttes on Ark Compiler välja töötatud Androidiga töötamiseks ja Huawei pole selle kohta midagi maininud. väidetav homebrew OS ja selle ühilduvus Ark Compileriga, nii et me ei tee selles osas mingeid eeldusi.

Huawei plaanib korraldada kaks suurt konverentsi, mis on pühendatud arendajatele ja suuremale ökosüsteemile. Need on Huawei Device China Developers Conference ja Green Alliance China Developers Conference. Mõlemal üritusel käsitletakse konkreetseid avatud lähtekoodiga probleeme, mis on seotud Huawei Ark Compileriga, et muuta selle tehnoloogia eelised võimalikult laialdaselt kättesaadavaks.


Eriline tänu XDA tunnustatud vanempanustajale Dees_Troy ja tunnustatud arendaja arter97 nende abi ja panuse eest.

Märkus. Huawei/Honor on lõpetanud oma seadmetele ametlike alglaaduri avamiskoodide pakkumise. Seetõttu ei saa nende seadmete alglaadureid avada, mis tähendab, et kasutajad ei saa juurutada ega installida kohandatud ROM-e.