Microsoft: Ny JavaScript-motor i Edge bruger mindre hukommelse

Microsoft har prioriteret opstartstid og hukommelsesforbrug i JavaScript-motoren Chakra, og den seneste version i Edge-browseren bruger en ny metode til at rydde op i hukommelsen.

Den seneste store Creator's Update til Windows 10, som Microsoft lige nu er i færd med at rulle ud til brugerne, indeholder også en opdateret version af Edge-browseren. Og Microsoft fortsætter med at tage en lidt anden tilgang til en helt central komponent end de øvrige konkurrenter.

JavaScript-motoren er en vigtig del af en moderne browser, fordi større og tungere applikationer, samt styring af brugerfladekomponenter, er afhængige af JavaScript. Googles V8-motor, Mozillas Spider-Monkey og Webkits JavaScriptCore prioriterer af samme grund maksimal ydelse ved at oversætte hele scriptet til bytecode, som kan afvikles hurtigt og effektivt.

Men Microsoft har med Chakra, som er motoren i Edge, valgt at prioritere hurtig opstartstid og lavere hukommelsesforbrug, og dén tendens har selskabet fortsat i den nyeste udgave, skriver program manager for Chakra, Limin Zhu, i et blogindlæg.

Sætter funktioner på hold

Chakra laver en 'deferred' oversættelse til bytecode. Det vil sige, at den laver en hurtig analyse og venter med at oversætte funktioner, som kun måske vil blive kaldt. Tanken er, at der dermed ikke bruges hukommelse på bytecode til funktioner, som ikke bliver brugt, og scriptet er også hurtigere klar til afvikling.

Det har Microsoft nu udbygget med 're-deferring'. Det dækker over, at en funktion, som er blevet oversat og brugt, men ikke længere bruges aktivt, kan blive ryddet op, så bytecoden frigives fra hukommelsen, og funktionen vender tilbage til den løst analyserede status.

Ifølge Microsoft kan det spare 6-12 procent hukommelse i en webapplikation.

Læs også: Anders Hejlsberg: Typescript-compiler giver Javascript-udviklere mere intelligente værktøjer

Ulempen er, at Chakra skal afbalancere oprydningen, for ellers vil det koste cpu-kræfter, hver gang funktionen skal oversættes til bytecode. Derfor tjekker Chakra efter et variabelt antal cyklusser, hvorvidt den pågældende funktion har været kaldt af scriptet.

Lige nu bruges metoden kun på visse typer funktioner, men Microsoft arbejder på at udvide det i kommende opdateringer.

Alle JavaScript-motorer bruger en Just-In-Time (JIT) compiler til at oversætte fra JavaScript til en mere effektiv bytecode, men mens de øvrige motorer har optimeret til hurtig oversættelse af hele applikationen fra begyndelsen, så oversætter Chakra altså lidt ad gangen. Det kan gøre det vanskeligere at sammenligne ydelsen mellem motorerne, da de kan have forskellige styrker og svagheder alt efter brugsscenarierne.

JavaScript er desuden ikke længere blot en konkurrenceparameter mellem browserne, men også på serversiden, da Microsoft sidste år frigav en open source-version af Chakra, ligesom projektet ChakraCore gør det muligt at bruge Chakra som motor med Node.js ligesom man kan med Googles V8.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk

Følg forløbet

Kommentarer (8)

Bente Hansen

Ja løber også selv ind i trivsel problemer med 32 Gb, og mange bruger og vinduer åben. Her synes jeg især Chrome, også kan være slem. Men det er sikkert fordi alt skal i separate sandkasse.

Har flash og anden 3 parts skidt slået fra, men nogen hjemmesider, sluger stadig livet ud af min OS. Vi taler både om linux, og ms. Men om måske 2-3 bruger, og 500-2000 åben hjemmesider. Genstart ses nødigt. Nogen gode råd ?

Ivo Santos

Jeg savner efterhånden hjemmesider som fungere uden at man behøver at slå javascript til, det er trods alt til dels der problemet ligger, og desuden er det ikke altid nødvendigt at alt indhold absolut skal indlæses via json eller en anden teknologi.
En anden grund til at hjemmesider også er langsomme er fordi man der er defineret for meget css og derfor så skal browseren alt for meget tid på at beregne hvordan siden skal se ud.

Så konklusionen må være at der skal skæres drastisk på både CSS definitionerne og på javascript.

Martin Hulvej Høgenhaug Bæk

Så konklusionen må være at der skal skæres drastisk på både CSS definitionerne og på javascript.


Så er du ikke særlig glad for SPA'er så som Angular. Men det er nok der en stor del af fremtiden ligger.
Jeg synes Angular er super fedt, fordi det er hurtigere og nemmere at udvikle, og man kan teste siden bedre. Ofte er navigation også hurtigere, da hele siden ikke skal forbi serveren.
Så gerne mere JavaScript (og Typescript) for min skyld.

Mark Klitgaard

Jeg savner efterhånden hjemmesider som fungere uden at man behøver at slå javascript til, det er trods alt til dels der problemet ligger, og desuden er det ikke altid nødvendigt at alt indhold absolut skal indlæses via json eller en anden teknologi.

Nu kommer det jo utroligt meget an på typen af hjemmeside, f.eks. har vi på mit arbejde sider med kontaktformularer hvor brugere kan skrive sig op til forskellige produkter/services, og alle de splittests vi har kørt har vist at brugerne fortrækker at blive præsenteret for informatione "i bidder", så derfor er der noget JS der håndterer skridtene i kontaktformularen så hele siden ikke skal genindlæse fordi vi nu skal til skridt 2 osv.

Derudover er jeg dog enig i at man som udvikler/designer burde have mere fokus på opdeling af JS/CSS filer så man ikke henter mere end nødvendigt.

Martin Hulvej Høgenhaug Bæk

På det principielle plan kan man vel sige at vi ikke skal vælge teknologi fordi det er hurtigt at udvikle men fordi det giver en god brugeroplevelse.


Nej, ikke hvis det er den eneste parameter, man vælger ud fra. Men det er da klart en parameter, vi bliver nødt til at tage med, når vi vælger. Men ja, brugeroplevelsen er selvfølgelig også vigtig. Der er i det hele taget mange forskellige udvælgelseskriterier afhængig af typen af opgaven, kontrakten, osv.

Pauli Østerø

På det principielle plan kan man vel sige at vi ikke skal vælge teknologi fordi det er hurtigt at udvikle men fordi det giver en god brugeroplevelse.

Releasing is also a feature. Hvis alternativet er at man ikke får udgivet noget som helst må det også siges at være en god parameter for at vælge et framework der gør en som udvikler produktiv.

Vi sidder jo heller ikke alle og skriver i C for at få den bedste performance, som så igen giver den bedste brugeroplevelse, da der i så fald nok ikke ville blive produceret særligt meget.

Log ind eller opret en konto for at skrive kommentarer

Pressemeddelelser

Big Data Lake Summit: Fast and Trusted Insights

If you want to outpace, outsmart and outperform your competition in a digital world, you need trusted data that can be turned into actionable business insights at speed.
24. apr 2017

Welcome to Free course to learn about the combined power of Alteryx and Qlik!

Affecto invites to a free course, where we want to share our knowledge of this self-service analysis platform together with the power of Qlik.
20. apr 2017

Robotics Process Automation (RPA) changes the way organizations think about and perform work at a reduced cost, higher efficiency and greater productivity

Join us for this exiting seminar, which Affecto hosts with our business partner SmartRPA May 3rd, 2017 at 13.00 in Copenhagen.
30. mar 2017