Hvordan Huaweis Ark Compiler kan forbedre Android-appens ydeevne

click fraud protection

Huawei har frigivet nøgledetaljer om, hvordan dens nye Ark Compiler fungerer, og lover drastisk at forbedre app-ydeevnen på Android. Læs videre for mere

Meget af den seneste samtale omkring Huawei har drejet sig om virksomhedens uheldige politiske situation på grund af en Amerikansk bekendtgørelse, der begrænsede mange virksomheder fra at handle med Huawei. Konsekvenserne af en sådan afgørende beslutning er alt for enorme til ikke at være opmærksomme. Men i en alternativ virkelighed, hvor denne bekendtgørelse ikke eksisterer, ville Huawei have været i rampelyset for sin for nylig afslørede Ark Compiler, den seneste innovation, der hævder at bygge bro over appens ydeevnekløft mellem Android og iOS.

Før vi dykker ned i, hvad Ark Compiler er, skal vi tage et skridt tilbage og forstå, hvad en compiler er, og formålet, den tjener i Android-systemet.

Kort historie om kompilatorer og tolke på Android

En compiler er et computerprogram, der oversætter kode fra et sprog til et andet sprog, ofte som eget maskinsprog. Dette kan så enten udføres direkte af computeren eller udføres gennem et andet program (tolk). Denne oversættelse er nødvendig, fordi vi skriver kode i programmeringssprog, der kan læses af mennesker (som Java og Kotlin), mens computeren kun forstår det oprindelige maskinsprog (binær kode i form af 1'ere og 0'er). Compileren fungerer således som en bro mellem de instruktioner, som et menneske skriver, og maskinens evne til at forstå og derefter udføre disse instruktioner. Hvor hurtigt og effektivt denne konvertering og efterfølgende fortolkning finder sted, definerer compilerens effektivitet indførelse af en direkte sammenhæng mellem compilerens effektivitet og kodens ydeevne og effektivitet, og i forlængelse heraf, apps.

Dalvik VM

I de tidlige dage af Android brugte operativsystemet det, der blev kaldt Dalvik VM (tolken) sammen med en JIT (just-in-time) compiler. Denne ældre video fra XDA TV's Android Basics 101 serien berører Dalvik VM og JIT-opsætningen, som begge tjente behovene fra tidlige Android-systemer, hvor der var rigelige hukommelsesbegrænsninger. Dalvik VM tog Java bytecode og konverterede den til maskinkode, når og når koden skulle udføres (deraf Just-In-Time). Dette var nødvendigt, da lagerplads i telefoner var en reel begrænsning dengang, så denne tilgang tillod apps at arbejde med mindre filstørrelser i systemet.

Kompilering og fortolkning af apps under kørsel havde ulempen ved generelt langsommere app-ydeevne, da kompileringen ville finde sted sammen med, når brugeren bruger appen.

Dalvik havde også begrænsninger med sin affaldsopsamlingsmekanisme. Dalvik holdt styr på hver hukommelsestildeling samlet. Når Dalvik har fastslået, at et stykke hukommelse ikke længere bliver brugt af programmet, frigiver det denne hukommelse tilbage til bunken uden indgriben fra programmøren. Denne proces kaldes Garbage Collection (GC), og den har til formål at finde hukommelsesobjekter i et program, som der ikke længere er adgang til, og derefter genvinde de ressourcer, der bruges af disse objekter til at frigøre hukommelse. Systemet bestemmer, hvornår en GC er nødvendig på en kollektiv basis, så app-udviklere kan ikke vælge, hvornår GC-begivenheder opstår [selv i ART]. Så hvis en GC-hændelse opstod midt i en intensiv behandlingsaktivitet på forgrundsappen, ville systemet pause udførelsen af ​​processen og begynde GC, hvorved behandlingstiden øges og der indføres et mærkbart "jak" til brugere.

Disse og andre begrænsninger skubbede Google til at udforske alternative tilgange til hurtigere ydeevne.

Android Runtime

Med Android 4.4 KitKat introducerede Google ART (Android Runtime) i preview-form med en AOT (Ahead-Of-Time) compiler, og med Android 5.0 Lollipop droppede Google Dalvik til fordel for ART som den eneste tilgængelige tolk. ART med AOT konverterede kode til maskinsprog på tidspunktet for installationen af ​​appen, i stedet for at vente med at foretage en sådan konvertering, når appen er i brug. Denne tilgang fremskyndede således app-lanceringstider, men introducerede også ulemper i form af langsommere installationstider og øget forbrug af diskplads. For at balancere det hele, Google vedtaget en kombination af AOT, JIT og profilstyret kompilering med ART på Android 7.0 Nougat, for at sikre at ingen enkelt faktor påvirkes drastisk.

Androids ART-implementering

ART arbejdede også på at gøre Garbage Collection mindre påtrængende. GC-processen blev optimeret til at være hurtigere generelt med færre pauser (enkelt kort pause versus Dalviks to pauser), mindre fragmentering og mindre hukommelsesforbrug. Googles præsentation på Google I/O 2014 går i detaljer og forklarer begrænsningerne af Dalviks GC og ARTs forbedringer i den henseende.

Selv med disse ændringer gennem årene involverede den grundlæggende forudsætning for Googles tilgang fortolkning af kode under udførelsen, mens timingen af ​​kompilerings- (oversættelses-)elementet blev ændret. Garbage Collection fortsætter også med at være et smertepunkt for app-udviklere på grund af dets iboende forstyrrende og kollektive karakter. Antageligt lider Androids app-ydeevne som et resultat, da der fortsat er omkostninger involveret.

Ark Compiler af Huawei

Huawei har arbejdet på at udvikle en mere effektiv løsning og har derfor ansat hundredvis af eksperter på området. Resultatet af denne indsats er Ark Compiler, som Huawei hævder er den første statiske compiler nogensinde der giver mulighed for direkte oversættelse til maskinsprog, hvilket helt fjerner behovet for en tolk. Ark Compiler blev også udviklet med det mål at maksimere køreeffektiviteten for Java og C, så man burde teoretisk set se de bedste resultater med disse sprog.

Grafik fra Huawei. Tekst oversat af XDA-bruger MyKeyVans.

Huawei præsenterer nogle nøglefunktioner i Ark Compiler som nedenfor:

  • Kompileringsteknikker som AOT og JIT kan konvertere nogle programmer til maskinkode og køre dem direkte på CPU'en, men disse teknikker er ude af stand til fuldstændigt at adskille sig fra tolken og de dertil knyttede begrænsninger. Ark-kompileren bruger statisk kompilering, som lader den adskille sig fra den dynamiske fortolker, hvilket åbner muligheden for at øge app-ydeevnen ved at "stormskridt."
  • Statisk kompilering har en potentiel ulempe ved at være for rigid og ude af stand til at foretage justeringer, som en dynamisk compiler kan foretage under udførelse. Huawei hævder, at Ark Compilers statiske kompilering løser dette "ved problemfrit at oversætte de dynamiske funktioner i programmeringssproget til maskinkode."
  • Eksisterende kompileringsprocesser finder sted under eller efter installation af app-pakken på mobilenheden. Ark Compiler er designet til udrulning under softwareudvikling, hvilket vi formoder hjælper med at fjerne tidsomkostninger under installation og eksekvering. Vi antager, at app-udviklere ville være i stand til direkte at kompilere forskellige sprog til indbygget maskinkode under appen udviklingsprocessen, og den resulterende APK kunne således ikke have brug for interaktion med en tolk eller en virtuel maskine for at fungere. Dette ville teoretisk set reducere de faste omkostninger i forbindelse med JNI, f.eks.
  • Ark Compiler ændrer også den kollektive karakter af Garbage Collection. Det gør det muligt for GC-hændelser at forekomme separat for forskellige Java-tråde. Denne opdelte tilgang hævder at tilbyde mindre støj på forgrundsapps.

Som et resultat af disse ændringer kan Ark Compiler tilsyneladende forbedre Android-systemets flydende betjening med op til 24 %, responshastigheden med op til 44 % og glatheden af ​​tredjepartsapplikationer med op til 60 %, der hævder at bringe Android-appens ydeevne på samme niveau som på iOS.

Ark Compiler er i øjeblikket kompileret og optimeret til ARM-chiparkitektur. Huawei håber, at samarbejdende hardware- og softwaredesign i fremtiden vil arbejde hen imod at maksimere Kirin-chip-kapaciteterne.

Ark Compiler understøtter standard Java-brug, hvilket giver mulighed for direkte kompilering af tredjepartsapps, uden at appudvikleren behøver at foretage nogen kodeændring. Ark Compiler giver også mulighed for "justeringer af kodestrukturen" for yderligere forbedringer af ydeevne og hukommelse. Huawei har valgt at gøre Ark Compiler til et open source-system, som gør det muligt for tredjepartsudviklere at adoptere og tilpasse teknologien til deres behov og fremme dens vedtagelse med app-udviklere og mobiltelefon producenter.

Selvom Huawei ikke nævner nogen ulemper ved Ark Compiler, kan man forvente store app-størrelser lige nu i det mindste, men dette burde ikke give problemer på nuværende generationsenheder, som kommer med rigeligt opbevaring. Vi forventer også, at Ark Compiler ikke vil være tilgængelig for alle CPU-arkitekturer, da Googles kompatibilitetsproblemer ikke er Huaweis hovedpine. Ark Compiler er designet til at blive brugt under udvikling og ikke under installation; dette præsenterer en indikation af, at Huawei muligvis har ændret, hvordan apps er implementeret og installeret på Android-enheder, og også kan have arbejdet på deres eget APK-design. Hvis det er korrekt, kan dette udgøre et stort kompatibilitetsproblem i økosystemet, og det ville tage lang tid, før dette ville blive en standard Android-funktion, hvis nogensinde.

Ikke at kompilere på en brugers enhed rejser også et stort spørgsmål om optimering. ART optimerer i øjeblikket på en per-mikro-arkitektur basis, hvilket betyder, at den resulterende binære vil være anderledes for en Snapdragon-enhed versus en Exynos-enhed, eller endda for en Snapdragon 845 versus en Snapdragon 625. Denne tilgang giver mening for producenter, der har fuld kontrol over SoC, som Apple og Huawei. Men med resten af ​​Android-verdenen, der bruger mange forskellige SoC'er, vil det igen være en vejspærring for standardiseringen af ​​Ark Compiler at tvinge en generisk optimering til brug på tværs af enheder. Forvent derfor ikke, at Ark Compiler ankommer på din foretrukne brugerdefinerede ROM når som helst snart.

For afklaring er Ark Compiler udviklet til at fungere med Android, og Huawei har intet nævnt i forhold til dens påstået hjemmebrygget OS og dets kompatibilitet med Ark Compiler, så vi gør ingen formodninger herom.

Huawei planlægger at holde to store konferencer dedikeret til udviklere og det større økosystem. Disse er Huawei Device China Developers Conference og Green Alliance China Developers Conference. Begge begivenheder vil behandle specifikke open source-problemer relateret til Huaweis Ark Compiler, i et forsøg på at gøre fordelene ved denne teknologi så bredt tilgængelige som muligt.


Særlig tak til XDA Senior Recognized Contributor Dees_Troy og anerkendt udvikler arter97 for deres hjælp og input.

Bemærk: Huawei/Honor er holdt op med at levere officielle bootloader-oplåsningskoder til sine enheder. Derfor kan bootloaderne på deres enheder ikke låses op, hvilket betyder, at brugere ikke kan roote eller installere brugerdefinerede ROM'er.