Kā Huawei Ark kompilators var uzlabot Android lietotņu veiktspēju

click fraud protection

Huawei ir izlaidusi galveno informāciju par sava jaunā Ark Compiler darbību, solot krasi uzlabot lietotņu veiktspēju operētājsistēmā Android. Lasiet tālāk, lai uzzinātu vairāk

Liela daļa neseno sarunu par Huawei ir saistīta ar uzņēmuma neveiksmīgo politisko situāciju, jo ASV izpildrīkojums, kas daudziem uzņēmumiem ierobežoja darījumus ar Huawei. Šāda izšķiroša lēmuma sekas ir pārāk milzīgas, lai tam nepievērstu uzmanību. Bet alternatīvā realitātē, kur šis izpildrīkojums nepastāv, Huawei būtu bijis uzmanības centrā par savu nesen atklāja Ark Compiler, jaunāko inovāciju, kas apgalvo, ka tā mazina lietotņu veiktspējas atšķirības starp Android un iOS.

Pirms iedziļināties tajā, kas ir Ark Compiler, mums ir jāatkāpjas un jāsaprot, kas ir kompilators un kādam nolūkam tas kalpo Android sistēmā.

Īsa kompilatoru un tulku vēsture operētājsistēmā Android

Kompilators ir datorprogramma, kas tulko kodu no vienas valodas citā valodā, kas bieži vien ir dzimtā mašīnvaloda. Pēc tam to var izpildīt tieši dators vai izpildīt, izmantojot citu programmu (tulku). Šis tulkojums ir nepieciešams, jo mēs rakstām kodu cilvēkiem lasāmās programmēšanas valodās (piemēram, Java un Kotlin), kamēr dators saprot tikai dzimto mašīnvalodu (bināro kodu 1 un 0). Tādējādi kompilators kalpo kā tilts starp instrukcijām, kuras cilvēks raksta, un mašīnas spēju saprast un pēc tam izpildīt šīs instrukcijas. Tas, cik ātri un efektīvi notiek šī konvertēšana un sekojošā interpretācija, nosaka kompilatora efektivitāti, tādējādi ieviešot tiešu korelāciju starp kompilatora efektivitāti un koda veiktspēju un efektivitāti, un paplašinot lietotnes.

Dalvik VM

Android sākuma dienās OS izmantoja Dalvik VM (tulku) kopā ar JIT (tieši laikā) kompilatoru. Šis vecākais video no XDA TV Android Basics 101 sērija skar Dalvik VM un JIT iestatīšanu, kas abas kalpoja agrīno Android sistēmu vajadzībām, kurās bija daudz atmiņas ierobežojumu. Dalvik VM izmantoja Java baitu kodu un pārveidoja to mašīnkodā, kad un kad kods bija jāizpilda (tātad Just-In-Time). Tas bija nepieciešams, jo toreiz tālruņu krātuves vieta bija reāls ierobežojums, tāpēc šī pieeja ļāva lietotnēm strādāt ar mazāka izmēra failiem sistēmā.

Lietojumprogrammu kompilēšanai un interpretācijai izpildlaikā bija vājāka lietotnes veiktspēja kopumā, jo kompilācija notika vienlaikus ar lietotnes lietošanu.

Dalvik bija arī ierobežojumi ar savu atkritumu savākšanas mehānismu. Dalvik kopīgi sekoja līdzi katram atmiņas sadalījumam. Kad Dalvik konstatē, ka programma vairs neizmanto atmiņas daļu, tā atbrīvo šo atmiņu atpakaļ kaudzē bez programmētāja iejaukšanās. Šo procesu sauc par atkritumu savākšanu (GC), un tā mērķis ir atrast atmiņas objektus programmā, kurai vairs netiek piekļūts, un pēc tam atgūt resursus, ko šie objekti izmanto atmiņas atbrīvošanai. Sistēma nosaka, kad GC ir nepieciešams kolektīvi, tāpēc lietotņu izstrādātāji nevar izvēlēties, kad notiek GC notikumi [pat ART]. Tātad, ja GC notikums notiek intensīvas apstrādes darbības laikā priekšplāna lietotnē, sistēma apturēs. procesa izpildi un sākt GC, tādējādi palielinot apstrādes laiku un ieviešot manāmu "jank" lietotājiem.

Šie un citi ierobežojumi mudināja Google izpētīt alternatīvas pieejas ātrākai veiktspējai.

Android izpildlaiks

Google iepazīstināja ar Android 4.4 KitKat ART (Android Runtime) priekšskatījuma formā ar AOT (Ahead-Of-Time) kompilatoru un operētājsistēmu Android 5.0 Lollipop Google atteicās no Dalvik par labu ART kā vienīgo pieejamo tulku. ART ar AOT pārveidoja kodu mašīnvalodā lietotnes instalēšanas laikā, nevis gaidīja, līdz tiks veikta šāda konvertēšana, kad lietotne tiek lietota. Tādējādi šī pieeja paātrināja lietotņu palaišanas laiku, bet radīja arī trūkumus, kas izpaužas kā lēnāks instalēšanas laiks un palielināts diska vietas lietojums. Lai to visu līdzsvarotu, Google pieņemts AOT, JIT un profila vadītas kompilācijas kombinācija ar ART operētājsistēmā Android 7.0 Nougat, lai nodrošinātu, ka neviens faktors netiek krasi ietekmēts.

Android ART ieviešana

ART strādāja arī pie tā, lai atkritumu savākšana būtu mazāk uzbāzīga. GC process tika optimizēts, lai kopumā būtu ātrāks ar mazākām pauzēm (viena īsa pauze salīdzinājumā ar Dalvika divām pauzēm), mazāku sadrumstalotību un mazāku atmiņas izmantošanu. Google prezentācija Google I/O 2014 ir sīkāk izskaidrota Dalvik GC un ART uzlabojumu ierobežojumi šajā jomā.

Pat ar šīm izmaiņām gadu gaitā Google pieejas pamatnosacījums bija koda interpretācija izpildes laikā, vienlaikus mainot kompilēšanas (tulkošanas) elementa laiku. Atkritumu savākšana joprojām ir sāpīgs punkts lietotņu izstrādātājiem, jo ​​tai piemītošais traucējošais un kolektīvais raksturs. Iespējams, tāpēc Android lietotņu veiktspēja cieš, jo joprojām ir saistītas ar pieskaitāmām izmaksām.

Ark Compiler no Huawei

Huawei ir strādājis, lai izstrādātu efektīvāku risinājumu, un līdz ar to ir nolīgis simtiem ekspertu šajā jomā. Šo centienu rezultāts ir Ark Compiler, kas, pēc Huawei domām, ir pirmais statiskais kompilators. kas ļauj veikt tiešu tulkojumu mašīnvalodā, pilnībā novēršot vajadzību pēc tulks. Ark Compiler tika izstrādāts arī ar mērķi maksimāli palielināt Java un C darbības efektivitāti, tāpēc teorētiski vajadzētu redzēt labākos rezultātus ar šīm valodām.

Huawei grafika. Tekstu tulkojis XDA lietotājs MyKeyVans.

Huawei piedāvā dažas galvenās Ark Compiler funkcijas, kā norādīts tālāk:

  • Kompilācijas metodes, piemēram, AOT un JIT, var pārvērst dažas programmas mašīnkodā un palaist tās tieši CPU, bet šie paņēmieni nespēj pilnībā atraisīties no tulka un ar tiem saistītajiem ierobežojumiem. Ark Compiler izmanto statisku kompilāciju, kas ļauj tai atsaistīties no dinamiskā tulka, paverot iespēju uzlabot lietotnes veiktspēju, izmantojot "lēcieniem un robežām."
  • Statiskajai kompilācijai ir potenciāls negatīvais aspekts, jo tā ir pārāk stingra un nespēj veikt pielāgojumus, ko izpildes laikā var veikt dinamiskais kompilators. Huawei apgalvo, ka Ark Compiler statiskā kompilācija to atrisina.nemanāmi pārtulkojot programmēšanas valodas dinamiskās funkcijas mašīnkodā."
  • Esošie kompilācijas procesi notiek lietojumprogrammas pakotnes instalēšanas laikā vai pēc tās mobilajā ierīcē. Ark Compiler ir paredzēts izvietošanai programmatūras izstrādes laikā, kas, mūsuprāt, palīdz samazināt laika izmaksas instalēšanas un izpildes laikā. Mēs pieņemam, ka lietotņu izstrādātāji varētu tieši apkopot dažādas valodas vietējā mašīnkodā lietotnes darbības laikā. izstrādes procesā, un tādējādi iegūtajam APK nevar būt nepieciešama mijiedarbība ar tulku vai virtuālo mašīnu funkciju. Tas teorētiski samazinātu, piemēram, ar JNI saistītās pieskaitāmās izmaksas.
  • Ark Compiler arī maina atkritumu savākšanas kolektīvo raksturu. Tas ļauj GC notikumiem notikt atsevišķi dažādiem Java pavedieniem. Tiek apgalvots, ka šī nodalītā pieeja piedāvā mazāk šķelšanās priekšplāna lietotnēs.

Šo izmaiņu rezultātā Ark Compiler var šķietami uzlabo Android sistēmas darbības raitumu līdz pat 24%, reakcijas ātrumu līdz 44%, un trešo pušu lietojumprogrammu gludumu līdz pat 60%, apgalvojot, ka Android lietotņu veiktspēja ir tādā pašā līmenī kā iOS.

Ark Compiler pašlaik ir apkopots un optimizēts ARM mikroshēmu arhitektūrai. Huawei cer, ka nākotnē sadarbības aparatūras un programmatūras dizains darbosies, lai maksimāli palielinātu Kirin mikroshēmas iespējas.

Ark Compiler atbalsta standarta Java lietojumu, ļaujot tieši apkopot trešo pušu lietotnes bez nepieciešamības lietotņu izstrādātājam veikt nekādas koda izmaiņas. Ark Compiler arī ļauj "pielāgot koda struktūru", lai turpinātu veiktspējas un atmiņas uzlabojumus. Huawei ir izvēlējies padarīt Ark Compiler par atvērtā pirmkoda sistēmu, kas ļautu trešo pušu izstrādātājiem pieņemt un pielāgot tehnoloģiju savām vajadzībām, veicinot tās ieviešanu ar lietotņu izstrādātājiem un mobilajiem tālruņiem ražotājiem.

Lai gan Huawei nemin nekādus Ark Compiler trūkumus, var sagaidīt lielus lietotņu izmērus. vismaz, taču tam nevajadzētu radīt nekādas problēmas pašreizējās paaudzes ierīcēs, kas tiek piegādātas ar daudzām ierīcēm uzglabāšana. Mēs arī sagaidām, ka Ark Compiler nebūs pieejams visām CPU arhitektūrām, jo ​​Google saderības problēmas nav Huawei galvassāpes. Ark Compiler ir paredzēts lietošanai izstrādes laikā, nevis instalēšanas laikā; tas liecina, ka Huawei, iespējams, ir mainījis lietotņu izvietošanu un instalēšanu Android ierīcēs, kā arī, iespējams, ir strādājis pie sava APK dizaina. Ja tas ir pareizi, tas varētu radīt nopietnas saderības problēmas ekosistēmā, un paiet ilgs laiks, līdz tā kļūs par standarta Android funkciju, ja tāda vispār būs.

Nekompilēšana lietotāja ierīcē rada arī lielu jautājumu par optimizāciju. ART pašlaik optimizē, pamatojoties uz mikroarhitektūru, kas nozīmē, ka iegūtais binārs būtu atšķiras Snapdragon ierīcei un Exynos ierīcei vai pat Snapdragon 845 un Snapdragon ierīcei 625. Šī pieeja ir saprātīga ražotājiem, kuri pilnībā kontrolē SoC, piemēram, Apple un Huawei. Tomēr, tā kā pārējā Android pasaulē izmanto daudz dažādu SoC, vispārējas optimizācijas piespiedu izmantošana dažādās ierīcēs atkal būs šķērslis Ark Compiler standartizācijai. Līdz ar to negaidiet, ka Ark Compiler drīz nonāks jūsu iecienītākajā pielāgotajā ROM.

Skaidrības labad Ark Compiler ir izstrādāts darbam ar Android, un Huawei nav minējis neko saistībā ar to. iespējamā homebrew OS un tā saderība ar Ark Compiler, tāpēc mēs šajā sakarā neizdarām nekādus pieņēmumus.

Huawei plāno rīkot divas lielas konferences, kas veltītas izstrādātājiem un lielākai ekosistēmai. Tās ir Huawei Device China Developers Conference un Green Alliance China Developers Conference. Abos pasākumos tiks risinātas konkrētas atklātā pirmkoda problēmas, kas saistītas ar Huawei Ark Compiler, cenšoties padarīt šīs tehnoloģijas priekšrocības pēc iespējas plašāk pieejamas.


Īpašs paldies XDA vecākajam atzītajam līdzstrādniekam Dees_Troy un atzīts izstrādātājs arter97 par viņu palīdzību un ieguldījumu.

Piezīme: Huawei/Honor ir pārtraukuši nodrošināt oficiālus sāknēšanas ielādes atbloķēšanas kodus savām ierīcēm. Tāpēc viņu ierīču sāknēšanas ielādes nevar atbloķēt, kas nozīmē, ka lietotāji nevar sakņot vai instalēt pielāgotus ROM.