Како Хуавеи-ов Арк компајлер може побољшати перформансе Андроид апликације

Хуавеи је објавио кључне детаље у вези са радом свог новог Арк компајлера, обећавајући да ће драстично побољшати перформансе апликација на Андроиду. Читајте даље за више

Велики део недавног разговора око Хуавеја вртео се око несрећне политичке ситуације компаније због а Америчка извршна уредба којом је многим компанијама забрањено да послују са Хуавејем. Реперкусије такве кључне одлуке су сувише огромне да се не би обраћала пажња. Али у алтернативној стварности где ова извршна наредба не постоји, Хуавеи би био у центру пажње због свог недавно је открио Арк Цомпилер, најновију иновацију која тврди да премошћује јаз у перформансама апликација између Андроида и иОС.

Пре него што уђемо у то шта је Арк Цомпилер, морамо да направимо корак уназад и разумемо шта је компајлер и чему служи у Андроид систему.

Кратка историја компајлера и тумача на Андроиду

Компајлер је компјутерски програм који преводи код са једног језика на други језик, често је матерњи машински језик. Ово онда може да се изврши директно од рачунара или да се изврши преко другог програма (интерпретера). Овај превод је неопходан јер пишемо код на програмским језицима читљивим људима (као што су Јава и Котлин), док рачунар разуме само матерњи машински језик (бинарни код у облику 1 и 0с). Компајлер тако служи као мост између инструкција које човек пише и способности машине да разуме и затим изврши те инструкције. Колико брзо и ефикасно се одвија ова конверзија и накнадна интерпретација дефинише ефикасност компајлера увођење директне корелације између ефикасности компајлера и перформанси и ефикасности кода, и проширењем, апликације.

Далвик ВМ

У раним данима Андроида, ОС је користио оно што се звало Далвик ВМ (преводилац) заједно са ЈИТ (јуст-ин-тиме) компајлером. Овај старији видео са Андроид Басицс 101 КСДА ТВ-а серија се дотиче Далвик ВМ и ЈИТ подешавања, а оба су служила потребама раних Андроид система где су меморијска ограничења била у изобиљу. Далвик ВМ је узео Јава бајт-код и конвертовао га у машински код када је код требало да се изврши (дакле Јуст-Ин-Тиме). Ово је било неопходно јер је простор за складиштење у телефонима тада био право ограничење, па је овај приступ омогућио апликацијама да раде са мањим величинама датотека у систему.

Компајлирање и тумачење апликација у току извршавања имало је недостатак укупне спорије перформансе апликације јер би се компилација одвијала упоредо када корисник користи апликацију.

Далвик је такође имао ограничења са својим механизмом за сакупљање смећа. Далвик је колективно пратио сваку додељивање меморије. Када Далвик утврди да програм више не користи део меморије, он ослобађа ову меморију назад у гомилу без икакве интервенције програмера. Овај процес се зове Сакупљање смећа (ГЦ) и има за циљ да пронађе меморијске објекте у програму коме се више не приступа, а затим поврати ресурсе које ти објекти користе за ослобађање меморије. Систем одређује када је ГЦ потребан на колективној основи, тако да програмери апликација не могу да бирају када се ГЦ догађаји дешавају [чак и у АРТ-у]. Дакле, ако се ГЦ догађај догоди усред било које интензивне активности обраде у апликацији у првом плану, систем би паузирао извршење процеса и започните ГЦ, чиме се повећава време обраде и уводи приметан "јанк" у корисника.

Ова и друга ограничења натерала су Гоогле да истражи алтернативне приступе за брже перформансе.

Андроид Рунтиме

Са Андроидом 4.4 КитКат, Гоогле је представио АРТ (Андроид Рунтиме) у форми за преглед са АОТ (Ахеад-Оф-Тиме) компајлером, и са Андроидом 5.0 Лоллипоп, Гоогле је одбацио Далвик у корист АРТ-а као јединог доступног тумача. АРТ са АОТ је конвертовао код у машински језик у време инсталације апликације, уместо да чека да изврши такву конверзију када је апликација у употреби. Овај приступ је тако убрзао време покретања апликације, али је увео и недостатке у виду споријег времена инсталације и повећане употребе простора на диску. Да избалансира све, Гоогле усвојено комбинација АОТ, ЈИТ и компилације вођене профилом са АРТ-ом на Андроид 7.0 Ноугат, како би се осигурало да ниједан фактор није драстично погођен.

Андроид-ова АРТ имплементација

АРТ је такође радио на томе да прикупљање смећа буде мање наметљиво. ГЦ процес је оптимизован да буде бржи у целини са мање пауза (једна кратка пауза у односу на Далвикове две паузе), мање фрагментације и мање употребе меморије. Гоогле-ова презентација на Гоогле И/О 2014. детаљније објашњава ограничења Далвиковог ГЦ-а и АРТ-ових побољшања у том правцу.

Чак и са овим променама током година, основна премиса Гоогле-овог приступа укључивала је тумачење кода током извршавања уз варирање времена елемента компајлирања (превођења). Сакупљање смећа такође наставља да буде болна тачка за програмере апликација због своје инхерентне прекидне и колективне природе. Вероватно, перформансе Андроид апликације трпе због тога што и даље постоје трошкови.

Арк Цомпилер компаније Хуавеи

Хуавеи ради на развоју ефикаснијег решења и стога је ангажовао стотине стручњака из ове области. Резултат овог напора је Арк Цомпилер, за који Хуавеи тврди да је први икада статички компајлер који омогућава директан превод на машински језик, потпуно уклањајући потребу за тумач. Арк Цомпилер је такође развијен са циљем максимизирања ефикасности рада за Јаву и Ц, тако да би теоретски требало видети најбоље резултате са овим језицима.

Графика компаније Хуавеи. Текст превео КСДА корисник МиКеиВанс.

Хуавеи представља неке кључне карактеристике Арк Цомпилер-а као у наставку:

  • Технике компилације као што су АОТ и ЈИТ могу претворити неке програме у машински код и покренути их директно на ЦПУ, али ове технике нису у стању да се потпуно одвоје од тумача и ограничења која су с њим повезана. Арк Цомпилер користи статичку компилацију, која му омогућава да се одвоји од динамичког тумача, отварајући могућност повећања перформанси апликације помоћу "скоковима."
  • Статичка компилација има потенцијалну лошу страну у томе што је превише крута и неспособност да изврши подешавања која динамички компајлер може да изврши током извршавања. Хуавеи тврди да статична компилација Арк Цомпилер-а решава ово "неприметним превођењем динамичких карактеристика у програмском језику у машински код."
  • Постојећи процеси компилације одвијају се током или након инсталације пакета апликације на мобилни уређај. Арк Цомпилер је дизајниран за примену током развоја софтвера, за који претпостављамо да помаже да се уклоне додатни трошкови током инсталације и извршавања. Претпостављамо да би програмери апликација могли директно да компајлирају различите језике у изворни машински код током апликације развојни процес, а резултујућем АПК-у стога није потребна интеракција са интерпретатором или виртуелном машином функција. Ово би теоретски смањило режијске трошкове везане за ЈНИ, на пример.
  • Арк Цомпилер такође мења колективну природу прикупљања смећа. Омогућава да се ГЦ догађаји јављају одвојено за различите Јава нити. Овај подељени приступ тврди да нуди мање напора у апликацијама у првом плану.

Као резултат ових промена, Арк Цомпилер може наизглед побољшава течност рада Андроид система до 24%, брзину одзива до 44%, а глаткоћу апликација независних произвођача до 60%, тврдећи да доводи перформансе Андроид апликације на исти ниво као на иОС-у.

Арк Цомпилер је тренутно компајлиран и оптимизован за АРМ архитектуру чипа. Хуавеи се нада да ће у будућности заједнички дизајн хардвера и софтвера радити на максимизирању могућности Кирин чипа.

Арк Цомпилер подржава стандардну употребу Јаве, омогућавајући директну компилацију апликација трећих страна без потребе да програмер апликације прави било какву модификацију кода. Арк Цомпилер такође омогућава „прилагођавање структуре кода“ за даља побољшања перформанси и меморије. Хуавеи је одлучио да направи од Арк Цомпилер систем отвореног кода, који би омогућио програмерима трећих страна да га усвоје и прилагођавају технологију својим потребама, унапређујући њено усвајање код програмера апликација и мобилних телефона произвођачи.

Иако Хуавеи не помиње никакве недостатке Арк Цомпилер-а, већ се могу очекивати велике величине апликација у најмању руку, али ово не би требало да представља проблеме на уређајима тренутне генерације који долазе са довољно складиште. Такође очекујемо да Арк Цомпилер неће бити доступан за све ЦПУ архитектуре, пошто Гугл-ови проблеми са компатибилношћу нису Хуавејева главобоља. Арк Цомпилер је дизајниран да се користи током развоја, а не током инсталације; ово представља индикацију да је Хуавеи можда изменио начин на који се апликације постављају и инсталирају на Андроид уређајима, а такође је можда радио на сопственом АПК дизајну. Ако је тачно, ово би могло представљати велики проблем компатибилности у екосистему, и проћи ће много времена пре него што ово постане стандардна Андроид функција, ако икада.

Не компајлирање на уређају корисника такође поставља велико питање у вези са оптимизацијом. АРТ се тренутно оптимизује на основу микроархитектуре, што значи да би резултујућа бинарна датотека била различито за Снапдрагон уређај у односу на Екинос уређај, или чак за Снапдрагон 845 у односу на Снапдрагон 625. Овај приступ има смисла за произвођаче који имају потпуну контролу над СоЦ-ом, као што су Аппле и Хуавеи. Међутим, са остатком Андроид света који користи много различитих СоЦ-а, присиљавање да се генеричка оптимизација користи на свим уређајима ће поново бити препрека за стандардизацију Арк Цомпилер-а. Сходно томе, не очекујте да ће Арк Цомпилер ускоро стићи на ваш омиљени прилагођени РОМ.

Ради појашњења, Арк Цомпилер је развијен да ради са Андроидом, а Хуавеи није поменуо ништа у вези са својим наводни домаћи ОС и његову компатибилност са Арк Цомпилер-ом, тако да не правимо никакве претпоставке о овоме.

Хуавеи планира да одржи две велике конференције посвећене програмерима и ширем екосистему. То су конференција за програмере Хуавеи уређаја за Кину и конференција за програмере Греен Аллианце Цхина. Оба догађаја ће се бавити специфичним питањима отвореног кода у вези са Хуавеи Арк Цомпилер-ом, у настојању да предности ове технологије буду што је могуће доступније.


Посебно се захваљујемо КСДА Сениор Рецогнизед Цонтрибутор Деес_Трои и признати програмер артер97 за њихову помоћ и доприносе.

Напомена: Хуавеи/Хонор су престали да пружају званичне кодове за откључавање покретача за своје уређаје. Због тога се покретачи покретања њихових уређаја не могу откључати, што значи да корисници не могу да рутну или инсталирају прилагођене РОМ-ове.