UTVIKLING

Lover raskere kjøring av tunge webapper

Chromes V8-motor får flere «sylindere».

Harald BrombachHarald BrombachNyhetsleder
14. feb. 2014 - 11:16

Webutviklere forsynes jevnlig med nye verktøy, i form av nye webstandarder, som gjør det mulig for dem å lage stadig mer avanserte webapplikasjoner. Om noen år vil det trolig være lite man ikke kan bruke webteknologiene til.

Avansert funksjonalitet er nå en ting. Brukerne vil også at ting skal gå raskt. Ikke minst gjelder dette områder hvor brukeropplevelsen avhenger av rask og jevn respons. Dette er et område hvor nettleserne fortsatt har mye å bevise.

Betaversjonen av Googles nettleser, som om noen uker skal bli Chrome 33, inkluderer en ny versjon av JavaScript-motoren V8 som skal være bedre i stand til å kjøre tung JavaScript-kode på en bedre måte enn i dag.

Når Chrome kjøres JavaScript-kode, kompileres denne til maskinkode rett før den faktisk utføres. Dette gjøres i hovedtråden til Chrome og uten fokus på optimalisering av koden. Dersom deler av koden ofte blir kjørt på nytt, blir denne koden kompilert en gang til, men da tas det i bruk optimaliseringsteknikker som kan gjøre maskinkoden langt raskere.

Tråder

Også denne optimaliseringen har blitt gjort i hovedtråden til Chrome. Problemet med dette er at optimaliseringen av store kodebiter tross alt tar noe tid, og dette kan føre til komplekse applikasjoner, for eksempel spill, i verste fall begynner å hakke eller stoppe opp. Dette fordi hovedtråden til Chrome er opptatt med den optimaliserte kompileringen.

I den nåværende betautgaven av Chrome har denne kompileringen blitt flyttet over i en ny tråd som kjøres i bakgrunnen, slik at Chrome både kan kompilere og kjøre kode på samme tid. Særlig ved kjøring av grafikkintensive applikasjoner, som Epic Citadel, skal dette være en klart merkbar forbedring – ikke minst på enheter med begrenset regnekraft, for eksempel smartmobiler.

Diagrammene nedenfor viser kjøringen av Mandreel, en del av ytelsestesten Octane, på en Nexus 5-mobil. Kurvene er laget med et nytt, visuelt profileringsverktøy.

Mandreel-kjøring i Chrome uten samtidig kompilering. <i>Bilde: Google</i>
Mandreel-kjøring i Chrome uten samtidig kompilering. Bilde: Google

Diagrammet over viser kjøringen av Mandreel uten bruk av samtidig kompilering. Der ser man at kjøringen stopper opp i mer enn 600 millisekunder i en periode hvor V8-motoren er fullt opptatt med å optimalisere en stor kodebit. I perioden som måles, blir bare 48 prosent av tiden brukt på faktisk kjøring av kode.

I diagrammet nedenfor vises kjøring med samtidig kompilering. Det er fortsatt en del opphold i kjøringen, men den virkelig store pausen har forsvunnet. Andelen av tiden hvor V8 faktisk kjører kode har nå økt til 74,1 prosent, mens resultatet av Mandreel-testen skal være forbedret med 27 prosent.

Mandreel-kjøring i Chrome med samtidig kompilering.
Mandreel-kjøring i Chrome med samtidig kompilering.

    Les også:

Les mer om:
Del
Kommentarer:
Du kan kommentere under fullt navn eller med kallenavn. Bruk BankID for automatisk oppretting av brukerkonto.