Sammenligning av JavaScript-ytelse mellom Firefox 3 og TraceMonkey.

Lover lynrask JavaScript i Firefox 3.1

Mozilla ønsker JavaScript-ytelse i neste Firefox som er på høyde med kompilert kode.

Med stadig mer avanserte webapplikasjoner, mange basert på webstandardene som inngår i Ajax (Asynchronous JavaScript and XML), har nettlesernes evne til å kjøre kode raskt begynt å få større betydning. Det mener i alle fall flere av nettleserleverandørene selv. Blant annet Apple fokuserte nettopp på JavaScript-ytelsen da selskapet presenterte første planene for neste utgave av nettleseren Safari i juni i år.

Selv om det er flere ting enn JavaScript-ytelsen alene som har betydning for hvor raskt webapplikasjoner oppleves, vil selvfølgelig applikasjoner med større og tyngre JavaScript-kode oppleves som raskere i nettlesere som greier å kjøre denne på en mer effektiv måte.

Også Mozilla, som står bak Firefox-nettleseren, legger nå mye innsats i optimalisering av JavaScript-ytelsen i selskapets produkter. Enkelte ytelsestester viser at Firefox 3, som ble lansert i juni i år, kjører JavaScript opptil tre ganger raskere enn Firefox 2. Men fortsatt mener Mozilla at det er mye å hente på dette området.

I et blogginnlegg som ble publisert fredag i forrige uke, skriver Mike Shaver, sjeftekniker og medgründer i Mozilla, at stiftelsen allerede skal ha forbedret ytelsen til dagens JavaScript-tolker, SpiderMonkey, med 20 prosent siden utgivelsen av Firefox 3. Men samtidig lover han mye et mye større sprang med et parallelt prosjekt, som riktignok fortsatt er på et svært tidlig stadium.

Det nye prosjektet, som kalles TraceMonkey, baserer seg på en teknikk utviklet ved University of California i Irvine. Teknikken kalles "trace trees", skal skal gjøre det mulig for en JIT-kompilator (Just-In-Time) å oppdage alternative stier gjennom en løkke på en inkrementell måte, for så å optimalisere hele løkken, uavhengig av potensielle, delvise overlapp mellom noen av stiene.

TraceMonkey bygger også på kode og ideer hentet fra Tamarin Tracing-prosjektet, som er en eksperimentell sidegren av den virtuelle Tamarin-maskinen, som er delvis basert på Adobes ActionScript Virtual Machine. Adobe donerte denne kildekoden til Mozilla i slutten av 2006.

Ifølge Shaver er målet til TraceMonkey-prosjektet å bringe JavaScript-ytelsen til et helt nytt nivå, hvor man i stedet for å konkurrere mot andre tolkere, begynner å konkurrere mot systemspesifikk kode. Selv om TraceMonkey er på et veldig tidlig stadium, har man sett lovende resultater. Blant annet skal en enkel for-løkke kunne kjøres med en ytelse som nærmer seg ytelsen til et ikke-optimalisert program kompilert med gcc-kompilatoren.

Selv om TraceMonkey altså er på et tidlig utviklingstrinn, har Mozilla avgjort at teknologien skal være med i utviklingstreet til Firefox 3.1, den neste større oppdateringen av nettleseren, riktignok deaktivert i standardkonfigurasjonen.

Shaver innrømmer at det fortsatt gjenstår mye arbeid med TraceMonkey, både med fiksing av feil og i valget av optimaliseringer, men at det skal jobbe for fullt for at teknologien skal rekke å komme med i Firefox 3.1.

Sammenligning av JavaScript-ytelse mellom Firefox 3 og TraceMonkey.
Sammenligning av JavaScript-ytelse mellom Firefox 3 og TraceMonkey.

Shaver viser til foreløpige ytelsestester hvor man med TraceMonkey utfører JavaScript-primitiver som løkker og funksjonskall med opptil 37,5 ganger høyere ytelse enn med Firefox 3. I mer komplekse tester, som Apples SunSpider og matrisemultiplisering med Sylvester 3D JavaScript-bibliotek, får man resultater som med TraceMonkey er et sted mellom 1,82 og 6,26 ganger høyere enn med Firefox 3.

Likevel mener Shaver dette bare er begynnelsen.

    Les også:

Til toppen