Kuinka Huawein Ark Compiler voi parantaa Android-sovellusten suorituskykyä

click fraud protection

Huawei on julkaissut tärkeimmät tiedot uuden Ark Compiler -sovelluksensa toiminnasta ja lupaa parantaa merkittävästi sovelluksen suorituskykyä Androidissa. Lue lisää

Suuri osa viimeaikaisesta keskustelusta Huawein ympärillä on pyörinyt yhtiön valitettavan poliittisen tilanteen ympärillä, koska Yhdysvaltain toimeenpanomääräys, joka rajoitti monia yrityksiä harjoittamasta liiketoimintaa Huawein kanssa. Tällaisen ratkaisevan päätöksen vaikutukset ovat aivan liian valtavat, jotta niihin ei kiinnitetä huomiota. Mutta vaihtoehtoisessa todellisuudessa, jossa tätä toimeenpanomääräystä ei ole olemassa, Huawei olisi ollut parrasvaloissa äskettäin paljasti Ark Compiler, uusin innovaatio, jonka väitetään kurottavan umpeen sovelluksen suorituskyvyn eroa Androidin ja Androidin välillä iOS.

Ennen kuin sukeltaamme siihen, mitä Ark Compiler on, meidän on otettava askel taaksepäin ja ymmärrettävä, mikä kääntäjä on ja mitä tarkoitusta se palvelee Android-järjestelmässä.

Kääntäjien ja tulkkien lyhyt historia Androidissa

Kääntäjä on tietokoneohjelma, joka kääntää koodin yhdestä kielestä toiselle kielelle, joka on usein konekieli. Tämä voidaan sitten suorittaa joko suoraan tietokoneella tai toisen ohjelman (tulkin) kautta. Tämä käännös on välttämätön, koska kirjoitamme koodia ihmisen luettavissa olevilla ohjelmointikielillä (kuten Java ja Kotlin), kun taas tietokone ymmärtää vain alkuperäistä konekieltä (binäärikoodi ykkösten ja 0:t). Kääntäjä toimii siten siltana ihmisen kirjoittamien ohjeiden ja koneen kyvyn välillä ymmärtää ja sitten suorittaa nämä käskyt. Se, kuinka nopeasti ja tehokkaasti tämä muunnos ja myöhempi tulkinta tapahtuu, määrittelee kääntäjän tehokkuuden ottamalla käyttöön suora korrelaatio kääntäjän tehokkuuden ja koodin suorituskyvyn ja tehokkuuden välillä, ja sitä laajemmin, sovelluksia.

Dalvik VM

Androidin alkuaikoina käyttöjärjestelmä käytti niin kutsuttua Dalvik VM: ää (tulkki) yhdessä JIT-kääntäjän (just-in-time) kanssa. Tämä vanhempi video XDA TV: n Android Basics 101:stä sarja koskettaa Dalvik VM- ja JIT-asennusta, jotka molemmat palvelivat varhaisten Android-järjestelmien tarpeita, joissa muistirajoitteet olivat runsaat. Dalvik VM otti Java-tavukoodin ja muunsi sen konekoodiksi aina kun koodi piti suorittaa (siis Just-In-Time). Tämä oli välttämätöntä, koska puhelimien tallennustila oli tuolloin todellinen rajoitus, joten tämä lähestymistapa salli sovellusten työskennellä järjestelmän pienempien tiedostokokojen kanssa.

Sovellusten kääntämisessä ja tulkinnassa suoritusaikana oli haittapuolena sovelluksen yleisen hitaampi suorituskyky, koska käännös tapahtui käyttäjän sovelluksen käytön yhteydessä.

Dalvikilla oli myös rajoituksia roskienkeräysmekanismissaan. Dalvik seurasi jokaista muistin varausta kollektiivisesti. Kun Dalvik toteaa, että ohjelma ei enää käytä osaa muistista, se vapauttaa tämän muistin takaisin kasaan ilman ohjelmoijan väliintuloa. Tätä prosessia kutsutaan roskakorjuuksi (GC), ja sen tarkoituksena on löytää muistiobjekteja ohjelmasta, jota ei enää käytetä, ja sitten ottaa takaisin näiden objektien käyttämät resurssit muistin vapauttamiseen. Järjestelmä määrittää, milloin GC: tä tarvitaan kollektiivisesti, joten sovelluskehittäjät eivät voi valita, milloin GC-tapahtumia esiintyy [edes ART: ssa]. Joten jos GC-tapahtuma tapahtui keskellä intensiivistä käsittelytoimintaa etualalla olevalla sovelluksella, järjestelmä keskeytyy prosessin suorittaminen ja GC: n aloittaminen, mikä lisää käsittelyaikaa ja aiheuttaa huomattavan "jäykkyyden" käyttäjiä.

Nämä ja muut rajoitukset saivat Googlen etsimään vaihtoehtoisia tapoja nopeuttaa suorituskykyä.

Android Runtime

Google esitteli Android 4.4 KitKatin kanssa ART (Android Runtime) esikatselumuodossa AOT (Ahead-Of-Time) -kääntäjällä ja Android 5.0 Lollipopilla Google hylkäsi Dalvikin ja valitsi ART: n ainoana saatavilla olevana tulkkina. ART, jossa on AOT, muunsi koodin konekieleksi sovelluksen asennuksen yhteydessä sen sijaan, että odottaisi muunnoksen tekemistä sovelluksen ollessa käytössä. Tämä lähestymistapa nopeuttai siten sovellusten käynnistysaikoja, mutta toi myös haittoja hitaampien asennusaikojen ja lisääntyneen levytilan käytön muodossa. Tasapainottaaksesi kaiken, Google hyväksytty AOT: n, JIT: n ja profiiliohjatun kokoelman yhdistelmän ART: n kanssa Android 7.0 Nougat -käyttöjärjestelmässä varmistaakseen, ettei yksittäinen tekijä vaikuta merkittävästi.

Androidin ART-toteutus

ART pyrki myös tekemään Garbage Collectionista vähemmän häiritsevän. GC-prosessi optimoitiin olemaan kaiken kaikkiaan nopeampi vähemmillä tauoilla (yksi lyhyt tauko vs. Dalvikin kaksi taukoa), vähemmän pirstoutumista ja vähemmän muistin käyttöä. Googlen esitys Google I/O 2014 -tapahtumassa selittää yksityiskohtaisemmin Dalvikin GC: n ja ART: n parannusten rajoituksia tällä alalla.

Jopa näistä vuosien aikana tapahtuneista muutoksista huolimatta Googlen lähestymistavan peruslähtökohtana oli koodin tulkinta suorituksen aikana samalla kun käännöselementin ajoitusta vaihdettiin. Roskakeräys on edelleenkin sovelluskehittäjien kipeä kohtaus sen luontaisen häiritsevän ja kollektiivisen luonteen vuoksi. Voidaan väittää, että Android-sovelluksen suorituskyky kärsii tämän seurauksena, koska siihen liittyy edelleen yleiskustannuksia.

Huawein Ark Compiler

Huawei on työskennellyt tehokkaamman ratkaisun kehittämiseksi ja on palkannut satoja alan asiantuntijoita. Tämän ponnistelun tuloksena on Ark Compiler, joka Huawei väittää olevan ensimmäinen staattinen kääntäjä joka mahdollistaa suoran kääntämisen konekielelle, mikä poistaa kokonaan tarpeen tulkki. Ark Compiler kehitettiin myös tavoitteena maksimoida Java- ja C-ajoteho, joten näillä kielillä pitäisi teoriassa nähdä parhaat tulokset.

Huawein grafiikka. Tekstin on kääntänyt XDA-käyttäjä MyKeyVans.

Huawei esittelee joitain Ark Compiler -ohjelman tärkeimpiä ominaisuuksia alla:

  • Käännöstekniikat, kuten AOT ja JIT, voivat muuntaa joitain ohjelmia konekoodiksi ja ajaa ne suoraan CPU: ssa, mutta nämä tekniikat eivät pysty täysin irrottamaan itseään tulkista ja siihen liittyvistä rajoituksista. Ark Compiler käyttää staattista käännöstä, mikä antaa sen irrottaa itsensä dynaamisesta tulkista, mikä avaa mahdollisuuden parantaa sovelluksen suorituskykyä "Loikkia ja hyppyjä."
  • Staattisella kääntämisellä on mahdollinen haittapuoli, koska se on liian jäykkä ja se ei pysty tekemään säätöjä, joita dynaaminen kääntäjä voi tehdä suorituksen aikana. Huawei väittää, että Ark Compilerin staattinen kokoelma ratkaisee tämän "kääntämällä ohjelmointikielen dynaamiset ominaisuudet saumattomasti konekoodiksi."
  • Nykyiset käännösprosessit tapahtuvat sovelluspaketin mobiililaitteeseen asennuksen aikana tai sen jälkeen. Ark Compiler on suunniteltu käyttöönotettavaksi ohjelmistokehityksen aikana, minkä oletamme auttavan vähentämään asennuksen ja suorituksen aikaista ylimääräistä aikaa. Oletamme, että sovelluskehittäjät pystyvät kääntämään eri kieliä suoraan alkuperäiseen konekoodiin sovelluksen aikana kehitysprosessia, eikä tuloksena oleva APK näin ollen tarvitsisi vuorovaikutusta tulkin tai virtuaalikoneen kanssa toiminto. Tämä vähentäisi teoriassa esimerkiksi JNI: hen liittyviä yleiskustannuksia.
  • Ark Compiler muuttaa myös roskakeräyksen kollektiivista luonnetta. Se mahdollistaa GC-tapahtumien esiintymisen erikseen eri Java-säikeille. Tämä lokeroitu lähestymistapa väittää tarjoavansa vähemmän haittaa etualalla oleville sovelluksille.

Näiden muutosten seurauksena Ark Compiler voi näennäisesti parantaa Android-järjestelmän toiminnan sujuvuutta jopa 24 %, vastausnopeutta jopa 44 % ja kolmannen osapuolen sovellusten sujuvuutta jopa 60 %, väittäen tuovansa Android-sovelluksen suorituskyvyn samalle tasolle kuin iOS: ssä.

Ark Compiler on tällä hetkellä käännetty ja optimoitu ARM-siruarkkitehtuurille. Huawei toivoo, että tulevaisuudessa yhteistoiminnallinen laitteisto- ja ohjelmistosuunnittelu pyrkii maksimoimaan Kirin-sirun ominaisuudet.

Ark Compiler tukee tavallista Java-käyttöä, mikä mahdollistaa kolmannen osapuolen sovellusten suoran kääntämisen ilman, että sovelluksen kehittäjän tarvitsee tehdä koodimuutoksia. Ark Compiler mahdollistaa myös "koodirakenteen säädöt" suorituskyvyn ja muistin parantamiseksi. Huawei on päättänyt tehdä Ark Compilerista avoimen lähdekoodin järjestelmän, jonka avulla kolmannen osapuolen kehittäjät voivat ottaa käyttöön ja mukauttaa teknologiaa heidän tarpeisiinsa ja edistää sen käyttöönottoa sovelluskehittäjien ja matkapuhelinten kanssa valmistajat.

Vaikka Huawei ei mainitse mitään haittoja Ark Compilerista, voidaan odottaa suuria sovelluskokoja ainakin, mutta tämän ei pitäisi aiheuttaa ongelmia nykyisen sukupolven laitteissa, jotka toimitetaan runsaasti varastointi. Odotamme myös, että Ark Compiler ei ole saatavilla kaikille suoritinarkkitehtuureille, koska Googlen yhteensopivuusongelmat eivät ole Huawein päänsärky. Ark Compiler on suunniteltu käytettäväksi kehityksen aikana, ei asennuksen aikana; Tämä osoittaa, että Huawei on mahdollisesti muuttanut sovellusten käyttöönottoa ja asennusta Android-laitteille, ja se on myös saattanut työskennellä oman APK-suunnittelunsa parissa. Jos se on oikein, tämä voi aiheuttaa suuren yhteensopivuusongelman ekosysteemissä, ja kestäisi kauan ennen kuin tästä tulisi Android-standardiominaisuus, jos koskaan.

Kääntämättä jättäminen käyttäjän laitteella herättää myös suuren kysymyksen optimoinnista. ART optimoi tällä hetkellä mikroarkkitehtuurikohtaisesti, mikä tarkoittaa, että tuloksena oleva binaari olisi erilainen Snapdragon-laitteelle verrattuna Exynos-laitteeseen tai jopa Snapdragon 845:lle ja Snapdragon-laitteelle 625. Tämä lähestymistapa on järkevä valmistajille, jotka hallitsevat täysin SoC: tä, kuten Apple ja Huawei. Kuitenkin, koska muualla Android-maailmassa käytetään monia erilaisia ​​SoC: ita, yleisen optimoinnin pakottaminen käytettäväksi eri laitteissa on jälleen este Ark Compilerin standardoinnissa. Siksi älä odota Ark Compilerin saapuvan suosikkimuokatulle ROM-levyllesi milloin tahansa pian.

Selvyyden vuoksi, Ark Compiler on kehitetty toimimaan Androidin kanssa, eikä Huawei ole maininnut mitään sen suhteen. väitetty homebrew-käyttöjärjestelmä ja sen yhteensopivuus Ark Compiler -ohjelman kanssa, joten emme tee mitään olettamuksia tästä syystä.

Huawei aikoo järjestää kaksi suurta konferenssia, jotka on omistettu kehittäjille ja suurelle ekosysteemille. Nämä ovat Huawei Device China Developers Conference ja Green Alliance China Developers Conference. Molemmissa tapahtumissa käsitellään erityisiä avoimen lähdekoodin kysymyksiä, jotka liittyvät Huawein Ark Compileriin, jotta tämän tekniikan edut saataisiin mahdollisimman laajasti saataville.


Erityiset kiitokset XDA: n vanhemmalle tunnustetulle avustajalle Dees_Troy ja tunnustettu kehittäjä arter97 heidän avustaan ​​ja panoksistaan.

Huomautus: Huawei/Honor on lopettanut virallisten käynnistyslataimen avauskoodien tarjoamisen laitteilleen. Siksi heidän laitteidensa käynnistyslataimia ei voida avata, mikä tarkoittaa, että käyttäjät eivät voi roottaa tai asentaa mukautettuja ROM-levyjä.