Mozilla è al lavoro sul progetto JaegerMonkey che vuole utilizzare per guardare alla vetta, in termini di performance, nell’elaborazione di codice JavaScript. Il meccanismo in fase di sviluppo opererà a fianco del motore TraceMonkey (che ha fatto il suo debutto con il rilascio dalla versione definitiva di Firefox 3.5, nel mese di giugno scorso) per migliorare drasticamente l’aspetto prestazionale del browser opensource di Mozilla.
Allo stato attuale, infatti, il codice JavaScript che non appare ottimizzabile mediante l’uso di TraceMonkey, viene passato allo “storico” interprete di Firefox (SpiderMonkey) il quale garantisce performance ormai mediocri.
I primi test dopo l’adozione di JaegerMonkey avrebbero evidenziato un miglioramento in fase di gestione di codice JavaScript compreso tra il 30% (codice a 32 bit) ed il 45% (64 bit): come riferimento, è stato utilizzato il conosciuto benchmark online “SunSpider“.
TraceMonkey tenta di velocizzare l’esecuzione di codice JavaScript rilevando la presenza di cicli loop e convertendoli in assembler generico. Ci sono però situazioni in cui questo approccio non funziona: in tali casi Firefox chiama in causa il vecchio interprete SpiderMonkey, ormai superato (il codice verrà eseguito con le prestazioni dei prodotti antecedenti alla versioni finali di Firefox 3.5, Safari 4, Google Chrome e così via).
Altri motori per la gestione di codice JavaScript compilano l’intero codice, e non solamente i cicli loop, ottenendo codice assembler. Il motore “Nitro” utilizzato da Apple Safari, ad esempio, sfrutta tale approccio ma – stando a quanto dichiarato dai responsabili di Mozilla – non può competere con la velocità di TraceMonkey quando quest’ultimo entra in gioco.
Abbinando JaegerMonkey, TraceMonkey continuerà a convetire in assembler i loop ma quando ciò non risultasse possibile, il nuovo motore applicherà l’approccio usato da “Nitro” in Apple Safari. In questo modo, Mozilla tenterà di migliorare le performance oggi garantite da browser “rivali” quali Chrome e Safari.