IE9-testversjon til topps i ytelsestest

Men til og med Microsoft toner ned betydningen av resultatet.

Microsoft kom denne uken med den sjuende Platform Preview-utgaven av Internet Explorer 9, mindre enn tre uker etter at den sjette utgaven ble gjort tilgjengelig.

I denne nye versjonen skal Microsoft ha fokusert på blant annet JavaScript-ytelsen, også hvordan den påvirker opplevelsen av virkelige nettsteder.

Resultatet av dette vises likevel i den kjente, men syntetiske ytelsestesten Sunspider, hvor den nye IE9-versjonen gjør det bedre enn samtlige av de andre nettleserne Microsoft har testet. Muligens burde Microsoft ha valgt den tidlige utgaven av Chrome 9 i stedet for Chrome 8 beta, men ellers ser utvalget ut til å være ganske representativt for ytelsen de ulike leverandørene til nå har oppnådd.

Microsofts SunSpider-resultater utført den 16. november 2010.
Microsofts SunSpider-resultater utført den 16. november 2010.

Microsoft viser de nyeste testresultatene på denne siden.

Blant optimaliseringene Microsoft har gjort, er å implementere støtte for «dead code elimination» (DCE). Dette er en form for optimalisering som sørger for at kode som egentlig ikke er relevant for programmet, bli ignorert. Dette kan for eksempel være løkker hvor den samme variabelen gis d4en samme verdien gang på gang, eller beregning av verdier som ikke benyttes noe sted i programmet.

Det handler altså om å skrelle bort overflødig kode, noe som skal kunne bidra til at programmet kan kjøres raskere.

Problemet, viser det seg, er at enkelte deltester i Sunspider tolkes som overflødig kode av Chakra, JavaScript-motoren til IE9. Dette gjør at IE9 i stedet for å utføre deltestene på vanlig måte, optimaliserer dem vekk.

I den virkelige verden vil dette antagelig være ønsket funksjonalitet, men ikke i en syntetisk ytelsestest. Trolig vil dette framtvinge en endring i Sunspider.

IE-sjef Dean Hachamovitch bekrefter i en oppdatering til dette blogginnlegget at den nevnte problematikken er tilfellet. Hachamovitch skrev oppdateringen på bakgrunn av en analyse gjort av Mozillas Rob Sayre.

Hachamovitch skriver videre at resultatet også er et bevis på at ytelsestestet som Sunspider i liten grad representerer den virkelige verden.

I den deltesten som Sayre har studert, benyttes det en «kostbar» JavaScript-løkke for å beregne sinus og cosinus. Hachamovitch mener at man på virkelige nettsteder heller ville ha brukt mye raskere og CPU-optimaliserte funksjoner som allerede er tilgjengelige i JavaScript-motorer.

I utgangspunktet er det ikke noe galt i det Microsoft har gjort, men Sayre oppdaget noe annet som virker uheldig.

I dette blogginnlegget trekker han frem tilfeller hvor selv de enkle kodeeksemplene som Hachamovitch skriver om i sitt innlegg, vil kunne oppføre seg uventet eller gi feilaktige resultater. Dette skyldes ifølge Sayre den dynamiske atferden til JavaScript, noe som ifølge Sayre gjør at tradisjonelle kompilatoroptimaliseringer som DCE på ingen måte er trivielle dersom de tas i bruk for å optimalisere JavaScript.

Chris Wilson, en tidligere kollega av Hachamovitch som nylig valgte overgang til Google, støtter både Sayre og Hachamovitch. I en diskusjon med blant annet Mozillas
Mike Shaver på Twitter skriver Wilson at Sunspider er en forferdelig benchmark som ikke er representativ og som det er enkelt å optimalisere for. Han mener at Googles V8 er bedre, men poengterer at han ikke mener at V8 er bra, den heller, men bedre enn Sunspider som han mener først og fremst tester DCE-optimalisering.

Wilson skriver dessuten at han helst hadde sett et samarbeid på tvers av leverandører og utviklere for å lagre en testsuite som spenner over både DOM og ren JavaScript.

Til toppen