Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

WebKit vernieuwt Javascript engine II: SquirrelFish Extreme

Nog maar kort geleden schreef ik over hoe de WebKit developers haar Javascript Engine compleet hadden vernieuwd van een AST-based interpreter naar een bytecode systeem, het zelfde principe waar Google Chrome's V8 op gebaseerd is. Vandaag kondigen de WebKit developers nog meer wijzigingen aan onder de naam SquirrelFish Extreme.

En dat is een passende naam. De SunSpider benchmark die de WebKit developers aanhalen toont dat SquirellFish Extreme tot 2x sneller is (in het geval van de SunSpider benchmark) dan de 'gewone' SquirrelFish.

Just three months ago, we announced SquirrelFish, a major revamp of our JavaScript engine featuring a high-performance bytecode interpreter. Today we’d like to announce the next generation of our JavaScript engine - SquirrelFish Extreme (or SFX for short). SquirrelFish Extreme uses more advanced techniques, including fast native code generation, to deliver even more JavaScript performance.

De WebKit developers hebben 4 dingen aangepakt om deze performance verbeteringen te realiseren:

  1. Ten eerste hebben ze de bytecodes zelf verbeterd, door individuele bytecodes sneller te maken of door verschillende bytecodes samen te voegen en zo tot betere performance te komen.

  2. Er is een Polymorphic Inline Cache toegevoegd. Kort gezegd houdt dat in dat de onderliggende structuur van objecten gecached wordt en dat wanneer je een object benaderd dat aan de structuur van zo'n gecachede structuur voldoet de cache gebruikt kan worden wat tot betere performance leidt. Dit lijkt in mijn ogen erg op de Fast Property Access techniek van Google Chrome's V8 javascript engine.

  3. Context Threaded JIT, hiermee worden o.a. stukken van de bytecodes stukje bij beetje omgezet naar native code waardoor er minder heen en weer gesprongen hoeft te worden, wat de CPU weer wat blijer maakt en dus betere performance levert.

  4. Regular Expression JIT, een ietwat vreemde eend in de bijt, maar toch cool. Het bleek dat de JIT engine die voor de Javascript code gebruikt werd ook relatief simpel in te zetten was voor de Regular Expression engine van SquirrelFish wat uiteindelijke ook voor regular expressions de nodige performance verbeteringen opleverde.

Meer informatie

De WebKit Developers hebben in hun aankondiging een veel gedetailleerder overzicht gegeven van wat de verschillende verbeteringen nou inhouden dus het is absoluut de moeite waard om dat even door te nemen.

Om SquirrelFish Extreme zelf te proberen kun je een WebKit Nightly downloaden.

Conclusie

Het is bizar hoeveel Javascript-engine nieuws er de afgelopen maand is geweest. Het begon allemaal relatief rustig met WebKit's SquirrelFish en Firefox's TraceMonkey maar dat werd als snel gevolgd door Google Chrome met zijn nieuwe V8 Javascript engine en nu weer de verbeterde SquirrelFish Extreme.

Interesting times in Javascript Land.

Reageer ook!

Interesting times in Javascript Land.
Helemaal mee eens. Voorheen hoorde je daar niets over, een browser ondersteunt Javascript 1.5 en dat was het.
De innovatie wordt natuurlijk gedreven door de rijkere applicaties zoals die van Google, maar ik denk dat de vele benchmarks van js-codebibliotheken over de verschillende browsers ook duidelijker heeft gemaakt dat dit nogal per browser verschilt.

Leave a comment
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>