Firefox sfida Chrome, motori JavaScript elaborati

Mozilla promette miglioramenti al motore Javascript di Firefox che aumenteranno ulteriormente le prestazioni fino a raggiungere quelle che ha promesso Google con l'aggiornamento Crankshaft. La comunità ha le capacità e le risorse per tenere testa al colosso di Mountain View.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Firefox sfiderà Chrome sulla velocità. Recentemente Google ha presentato Crankshaft, il nuovo sistema JIT per il JavaScript del motore V8 di Chrome (Chrome: Web Store e super velocità in arrivo). Secondo Google le novità apportate consentono di raddoppiare la velocità in tre degli otto benchmark V8 e di migliorare del 12 percento il tempo di caricamento delle pagine che fanno un uso elevato di JavaScript. 

Mozilla però non ci sta e lo sviluppatore David Mandelin, oltre a fare i complimenti al team di Google, promette battaglia: il team JavaScript di Mozilla e la comunità di sviluppatori "hanno le capacità e le risorse per migliorare" e raggiungere le prestazioni del futuro Chrome.

Mandelin ha confrontato Crankshaft con l'attuale motore JavaScript di Firefox, TraceMonkey, puntualizzando che la "specializzazione di tipo run-time per JavaScript è nata con il progetto TraceMonkey di Mozilla", ma aggiungendo che Crankshaft si è spinto più avanti su questo punto.

Crankshaft si compone di quattro componenti: c'è un compilatore base, affiancato da un profiler runtime che identifica il codice più usato. Poi un compilatore riadatta, ottimizzando, il codice in questione. Google ha incluso anche il supporto "deoptimization", che identifica i casi in cui il compiler dedicato all'ottimizzazione promette miglioramenti di velocità eccessivi. In questo caso il motore torna al compilatore base.

David Mandelin scrive che le ottimizzazioni applicate dal compiler aggiuntivo richiedono tempo e, se fosse stato l'unico compilatore, l'avvio sarebbe stato più lento. "Tuttavia Crankshaft ha anche un compiler base che si avvia rapidamente ma non ottimizza molto: probabilmente meno dello compilatore V8. Solamente se si prevede che il codice debba funzionare molto rapidamente sarà compilato con un'ottimizzazione completa". TraceMonkey fa qualcosa di simile, ma registra una sola traccia (codice loop che viene riusato), mentre Crankshaft sembra che profili ripetutamente il codice e che ottimizzi gli interi metodi anziché solo le tracce e inoltre usa una caching inline.

"Ci sarà molto da fare dopo l'uscita di Firefox 4", ha concluso Mandelin. Che la guerra abbia inizio.