Samsung Galaxy S24: nu met hoge korting!

Runtime ART wordt waarschijnlijk standaard in volgende Androidversie, wat betekent dat voor ons?

Sander Tuit
Sander Tuit
5 februari 2014, 9:00
8 min leestijd
Runtime ART wordt waarschijnlijk standaard in volgende Androidversie, wat betekent dat voor ons?

Lees verder na de advertentie.

Dalvik en JIT

Dalvík is een plaats in IJsland en de naam van de zogenaamde virtual machine (VM) van Android. Applicaties worden door ontwikkelaars in de programmeertaal Java geschreven, waarna deze Java-code wordt omgezet in bytecode, code die is geoptimaliseerd om door software geïnterpreteerd te worden. Deze bytecode is een verzameling van codes, constanten en referenties en wordt omgezet naar een speciaal bestandsformaat dat door Dalvik begrepen wordt en kan worden uitgevoerd. Dit formaat heet Dex (Dalvik Executable).

Dalvik en zijn bestandsformaat Dex zijn er voor gemaakt om te draaien op toestellen die beperkt zijn qua geheugen en processorkracht. De virtual machine is dan ook speciaal ontwikkeld voor Android door voormalig Google-ontwikkelaar Dan Bornstein. In 2010 kwam er een grote update voor Dalvik en een nieuw principe werd gebruikt dat just-in-time-compilatie (JIT) heet. In Android 2.2 (Froyo) werd deze manier van werken voor Dalvik gepresenteerd en zorgde voor aanzienlijk betere prestaties en ook een aanzienlijke vermindering van het accugebruik. 

Dit just-in-time-principe voor Dalvik wordt hier uitgelegd door Bornstein zelf. Het komt er op neer dat gedeeltes van de code van de applicaties worden geoptimaliseerd zodat deze sneller kan draaien. Dit alles gebeurt tíjdens het gebruik van een app. Dit zorgt er wel voor dat applicaties die gebruik maken van JIT over het algemeen niet direct snel draaien: deze hebben een soort ‘warming-up’-tijd nodig. In zijn blogpost legt Bornstein uit dat hij erg trots is op de JIT-implementatie in Dalvik, omdat deze erg snel al zijn vruchten afwerpt en amper tijd nodig heeft om op te warmen. Daarnaast gebruik JIT in Dalvik veel minder extra geheugen dan in andere toepassingen.

De veranderingen die bij Android 2.2 werden geïntroduceerd, bleken de laatste grote wijzigingen in Dalvik, tot de introductie van Android 4.4 (KitKat). Aangezien Android de laatste jaren alleen maar zwaarder en processorintensiever geworden was, werd het tijd om Android op ‘dieet’ te zetten. In Android 4.1 (Jelly Bean) werden al wijzingen aangebracht waardoor Android soepeler liep op grafisch gebied, in het zogenaamde Project Butter, maar ook op het gebied van geheugengebruik was Android te zwaar. Daarom werd Project Svelte in het leven geroepen. In Android 4.4 zijn weer een aantal verbeteringen doorgevoerd in Dalvik.  

ad_transformer_a15

ART en AOT

In Android 4.4 werd naast een nieuwe versie van Dalvik ook een tweede runtime geïntroduceerd, die ART heet. Deze runtime is terug te vinden op een aantal apparaten met Android 4.4 en kan daarop worden ingeschakeld via het ontwikkelaarsmenu in de instellingen. 

Applicaties die je draait op jouw computer, zijn bijna altijd omgezet in machinecode (gecompileerd) die direct op het systeem gedraaid kan worden. Dat compileren wordt in bijna alle gevallen door de ontwikkelaar van de applicatie gedaan. Apps worden dan niet gemaakt voor één enkele processor, maar voor een processor-architectuur en een besturingssysteem. Zo zul je tegenwoordig in veel gevallen bij Windows-applicaties kunnen kiezen uit twee versies: één voor een 32-bitsprocessor en één voor den 64-bitsprocessor. Deze manier van applicaties omzetten heet ahead-of-time (AOT). AOT is het tegenovergestelde van wat bij Dalvik gebeurt: daar wordt de code pas bij het draaien van de app omgezet in code die door het systeem begrepen wordt. 

ART werkt niet hetzelfde als bij desktoptoepassingen: wanneer een Androidapplicatie op een systeem met ART wordt geïnstalleerd, wordt de applicatie op het systeem gecompileerd. Daardoor kunnen instructies worden gebruikt die specifiek geschikt zijn voor die specifieke processor en chipset. Dat zal zorgen voor prestatieverbeteringen ten opzichte van het installeren van een generieke versie die voor ‘Android op ARM-processoren’ gecompileerd is. 

Prestaties van ART

Direct na de introductie van ART gingen lovende verhalen over de prestaties van ART over het web. ART zou zorgen voor betere accuprestaties en voor een veel snellere en responsievere gebruikerservaring. ART lijkt dus een wondermiddel.

In eerste instantie was echter een aantal applicaties niet geschikt voor het gebruik met ART. Dit zorgde voor een grote stroom klachten bij ontwikkelaars van deze apps, ondanks dat deze ontwikkelaars hier heel weinig aan konden doen: ten eerste was (en is!) ART experimenteel, ten tweede volgens Google in deze hoedanigheid nog niet geschikt voor dagelijks gebruik en ten derde is ART zo ‘high level’ dat ontwikkelaars vaak niet eens aanpassingen kónden maken om hun app niet te laten crashen. Dit weerhield boze gebruikers, die vonden dat het hun recht was om ART te gebruiken, niet van klagen, voornamelijk over de veelgebruikte messengerapp WhatsApp. 

Toen Androidontwikkelaars de klachten doornamen, kwamen ze er achter dat deze voornamelijk veroorzaakt waren door één type optimalisatie. In Android 4.4.2, de nieuwste versie van Android, is deze optimalisatie dan ook teruggedraaid, of in ieder geval minder strikt gemaakt. 

Maar, is ART dan echt de heilige graal? Zorgt het voor verbeterde prestaties? Is je accu inderdaad minder snel leeg? Verschillende mensen hebben de nieuwe runtime afgezet tegen Dalvik en we nemen hieronder wat van hun bevindingen door. 

Snelheid

Veel mensen hebben uitgebreide benchmarks, gestandaardiseerde tests, gedraaid om de prestaties van ART te meten. Daarbij is het belangrijk om een aantal zaken op te merken. Ten eerste zijn benchmarks niet altijd een goede weergave van hoe de prestaties in de werkelijk zijn. Ten tweede zijn benchmarks veelal niet geschreven in Java, waardoor er nagenoeg geen verschillen zouden moeten zijn tussen Dalvik en ART. Ten derde bevindt ART zich nog in de experimentele fase en kunnen de prestaties bij de officiële release een stuk beter zijn.  

Onder andere Android Police en een XDA Developers-gebruiker draaiden interessante benchmarktests. Het wordt uit de bechmarktests van Android Police niet duidelijk hoeveel voordelen ART biedt op het gebied van prestaties: de tests geven de ene keer Dalvik het voordeel en de andere keer ART. Uit eigen ervaring weet ik dat ART alles op grafisch gebied iets soepeler lijkt te maken: animaties lijken zonder horten en stoten te gaan. Dit kan ook een ‘placebo-effect’ zijn. In de video van Android Authority hieronder zie je een vergelijking tussen de twee runtimes. 

ART Vs Dalvik in Android 4.4 - How much faster is it?

Accu

Er gingen wilde verhalen rond over dat de accuduur onder ART een heel stuk beter zou zijn dan onder Dalvik. Dit zou verschillende oorzaken kunnen hebben. Doordat ART sneller is, hoeft de processor minder lang gebruik te worden, wat gunstig is voor het accugebruik. Ten tweede zou ART efficiënter zijn, waardoor de processor op minder hoge kloksnelheid hoeft te draaien. De derde reden waarom ART minder accu zou kunnen gebruiken, is dat doordat de app speciaal wordt gecompileerd voor een bepaalde processor, deze optimaal gebruik kan maken van bepaalde functies van die specifieke processor. Aan de andere kant zouden deze verbeteringen ook kunnen gelden voor Dalvik. 

Android Police testte het accugebruik van ART op de Nexus 4 en Nexus 5 en zette dit af tegen het accugebruik van Dalvik. De resultaten waren echter zeker niet eenduidig. In verschillende gevallen was het accugebruik onder Dalvik lager en andere gevallen was het tegenovergestelde het geval. Ook was er nog wel eens verschil tussen de resultaten op de Nexus 4 en op de Nexus 5. Verschillende gebruikers hadden gemeld dat het accugebruik wel met meer dan 25% toegenomen was, maar in de resultaten van Android Police waren de verschillen steeds niet groter dan enkele procenten en doordat de resultaten ook nog eens geen eenzijdig beeld gaven, valt er over de accuverbeteringen niet veel te zeggen.

Natuurlijk geldt ook voor de accuduur dat deze nog best wel eens verbeterd zou kunnen worden bij een nieuwe versie van ART. Daarnaast zorgt de manier van testen bij Android Police, het bekijken van de accuduur bij verschillende standaardactiviteiten (bijvoorbeeld het weergeven van animaties), er wel voor dat de testresultaten misschien niet goed vertalen naar een echte gebruikssituatie. Andere tests, bijvoorbeeld de (anekdotale test van Geek.com) geven wel significante accuduurverbeteringen aan. 

Installatietijd en applicatiegrootte

Applicaties die op ART draaien, zijn groter dan apps die op Dalvik draaien. Applicaties worden significant groter, tot wel 20%. Echter, alleen de code zal groter worden. Bij de meeste applicaties bestaat echter het overgrote gedeelte uit afbeeldingen, waardoor de toename in grootte over het algemeen meevalt. Doordat Androidtoestellen over steeds meer opslag beschikken, hoeft dit zeker geen probleem te zijn.

De installatietijd van ART is wel echt iets anders. Doordat applicaties voor gebruik gecompileerd worden, duurt het lang voordat de installatie van een applicatie voltooid is. Het kan wel meer dan een minuut duren voordat een applicatie die veel code bevat onder ART gecompileerd is. Dit is natuurlijk een enkele keer niet erg, maar wanneer je veel applicaties geïnstalleerd hebt, kan het vervelend worden wanneer je regelmatig updates voor deze apps krijgt. Ook met dit ‘nadeel’ valt te leven. Wanneer je overschakelt van Dalvik naar ART en je hebt 150 apps op je toestel staan (inclusief alle standaardapps zit je daar echt al snel aan), zal het mogelijk wel een half uur duren voordat je toestel weer opgestart is. 

Wanneer?

Wanneer ART standaard wordt, is nog maar de vraag. We hebben afgelopen week gezien in de broncode van het Android Open Source Project dat ART daar als standaard is ingesteld, maar dat betekent nog niet definitief dat deze ook daadwerkelijk standaard zal worden in de volgende versie van Android. 

Wanneer we dat wel zeker weten, is bij de aankondiging van de volgende (grote) Androidversie. Wanneer Google de trend van de afgelopen jaren voortzet, zal het gaan om een nieuwe versie van Android KitKat, vermoedelijk dan Android 4.5. Als Google de veranderingen in de volgende versie groot genoeg acht, is het ook mogelijk dat de release versienummer 5.0 meekrijgt en weer onder een nieuwe naam (uiteraard een lekkernij beginnend met een L) vrijgegeven zal worden. Vorig jaar brak Google met de traditie om tijdens Google I/O een nieuwe versie van Android aan te kondigen, maar kwam vrij snel na het evenement met Android 4.3. Google I/O 2014 zal vermoedelijk in mei worden gehouden.  

Bronnen: Wikipedia, Infinum, Android Police (1, 2, 3 en 4), Android, Android Developers BlogGeek.com

Op de hoogte blijven?

Volg Androidworld nu ook op WhatsApp

Download de nieuwe Androidworld-app!

Reacties

6

Inloggen of registreren
om een reactie achter te laten

7 februari 2014, 12:08

Fijn artikel Sander.
Wat me een beetje verward is deze alinea:

“ART werkt niet hetzelfde als bij desktoptoepassingen: wanneer een Androidapplicatie op een systeem met ART wordt geïnstalleerd, wordt de applicatie op het systeem gecompileerd. Daardoor kunnen instructies worden gebruikt die specifiek geschikt zijn voor die specifieke processor en chipset. Dat zal zorgen voor prestatieverbeteringen ten opzichte van het installeren van een generieke versie die voor ‘Android op ARM-processoren’ gecompileerd is. ”

Dat zou betekenen dat er voor elke specifieke chipset een AOT compiler gemaakt (aangepast) moet worden. Dit maakt de opgeleverde binaire code sterk afhankelijk van de kwaliteit van de compiler en dus de energie/tijd/geld die de chipbakker in “zijn” compiler stopt. Daarmee is ART sowieso al lastig te vergelijken met Dalvik in zijn algemeenheid.

5 februari 2014, 20:39

Geen art op de Nexus 7 2012 🙁

5 februari 2014, 17:04

Ik heb mijn Moto G op ART gezet. Sta er eigenlijk nooit meer bij stil verder, je zou niet zeggen dat het nog ‘experimenteel’ was.

5 februari 2014, 13:13

Ik gok op Android Lollypop… Klinkt het lekkerst. Verder wat betreft ART: ben het na het lezen van het artikel weer aan het instellen op de Nexus 5. Duurt daarna even voordat de apps zijn geoptimaliseerd. Ben benieuwd. Heb het idee dat 4.4 steeds trager werd, naargelang de tijd van gebruik. Dus misschien is dit de oplossing. En anders doe ik wel weer een fabrieksreset. Ik had eigenlijk gehoopt van dat gezeik af te zijn na Windows…

5 februari 2014, 12:35

Top artikel!

5 februari 2014, 10:17

Lekkernij = lollipop 😉