Il team di ingegneri di diverse aziende – Apple, Google, Microsoft e Mozilla – ha annunciato il rilascio di Speedometer 3.0, frutto della collaborazione tra i tre principali motori di browser: Blink, Gecko e WebKit.
Sin da quando la versione iniziale del benchmark Speedometer è stata rilasciata nel 2014 dal team di WebKit, esso è diventato uno strumento fondamentale per i browser engine al fine di ottimizzare le prestazioni, dato che gli utenti e gli sviluppatori continuano a richiedere esperienze online più ricche e fluide.
Come le versioni precedenti (Speedometer 2 nel 2018 e Speedometer 1 nel 2014), spiega il team, anche quest'ultima è progettata per misurare la reattività delle applicazioni web simulando le interazioni degli utenti su pagine web reali. Il rilascio di Speedometer 3.0 secondo le aziende coinvolte nel progetto segna un importante passo avanti nei test delle prestazioni dei browser web: introduce un modo migliore di misurare le prestazioni e un insieme più rappresentativo di test che riflettono il web moderno.
Ma non solo: è la prima volta che il benchmark Speedometer, o qualsiasi altro benchmark per browser, viene sviluppato attraverso una collaborazione intersettoriale supportata da ciascun motore di browser: Blink/V8, Gecko/SpiderMonkey e WebKit/JavaScriptCore.
È stato sviluppato secondo un nuovo modello di governance, guidato dal consenso, ed è ospitato in un repository condiviso e aperto ai contributi. Questa nuova struttura comporta un grande sforzo collettivo: discussioni, ricerche, dibattiti, decisioni e centinaia di PR da quando è stato annunciato il progetto nel dicembre 2022.
Speedometer 3, spiega il team, aggiunge molti nuovi test. Gli autori hanno iniziato a progettare questo nuovo benchmark identificando alcuni scenari chiave e interazioni dell'utente che ritenevano importanti per l'ottimizzazione dei browser.
In particolare, il team di sviluppo ha aggiunto nuovi test che simulano il rendering di canvas e grafici SVG (React Stockcharts, Chart.js, Perf Dashboard e Observable Plot), la modifica del codice (CodeMirror), la modifica WYSIWYG (TipTap) e la lettura di siti di notizie (Next.js e Nuxt.js).
Il team ha anche migliorato i test di TodoMVC, aggiornando il codice per adattarlo alle versioni più comuni dei framework più diffusi, sulla base dei dati di HTTP Archive. Sono inclusi i seguenti framework e librerie: Angular, Backbone, jQuery, Lit, Preact, React, React+Redux, Svelte e Vue; insieme alle implementazioni JavaScript "vanilla" che puntano a ES5 e ES6 e a una versione Web Components. Ha anche introdotto versioni più complesse di questi test, inserite in un albero DOM più grande con molte regole CSS complesse che emulano più da vicino il peso e la struttura delle pagine delle webapp più diffuse oggi.
Nel complesso, questi test esercitano una sezione trasversale più ampia e rappresentativa del motore, offrendo nuove opportunità per ottimizzare le API JS, Layout, CSS, Graphics e DOM al fine di migliorare la user experience sul web. Per maggiori dettagli sui test, è possibile consultare il sito di Speedometer.
Il test runner stesso in Speedometer 3 è stato migliorato per misurare una parte maggiore del lavoro svolto dal browser in risposta alle azioni dell'utente, come il painting e le attività asincrone. Speedometer 2.0 misurava il tempo di esecuzione di uno script di test in modo sincrono come tempo "sync", nonché qualsiasi lavoro aggiuntivo prima che scattasse un timer di 0 secondi come tempo "async". Tuttavia, in questo modo si è perso un po' del lavoro che i motori dei browser devono fare per aggiornare il rendering di una pagina web.
Con Speedometer 3.0, si è in grado di misurare questo lavoro di rendering che prima mancava, creando così maggiori opportunità di ottimizzare i contenuti del mondo reale. Il team ha apportato modifiche che migliorano notevolmente l'accuratezza del benchmark e si traducono in miglioramenti reali per gli utenti, in quanto i motori ottimizzano questo lavoro precedentemente mancante.
Ci sono anche altri miglioramenti dietro le quinte. Sono stati migliorati gli strumenti per gli sviluppatori, in modo che gli ingegneri del browser possano comprendere meglio i risultati, i profili e la personalizzazione del test. È stato ridisegnata l'architettura del test runner per facilitare la scrittura e la manutenzione di casi di test complessi. Inoltre, sono stati apportati molti miglioramenti alla qualità del codice e migrazioni a funzionalità moderne che non erano ancora ampiamente disponibili quando Speedometer 2.0 è stato rilasciato.
L'obiettivo principale di Speedometer 3 – sottolinea il team – è quello di rispecchiare il più possibile il mondo reale del web, in modo che gli utenti traggano vantaggio quando un browser migliora il suo punteggio nel benchmark. Il benchmark ha già avuto un certo successo prima del lancio pubblico, con ottimizzazioni di base in ogni motore principale nel corso dell'ultimo anno che si sono tradotte in miglioramenti della reattività per gli utenti di tutto il web.