Così Google ha ottimizzato Chrome per raggiungere nuovi record nei test

Così Google ha ottimizzato Chrome per raggiungere nuovi record nei test

Google ha pubblicato un'analisi dettagliata delle ottimizzazioni introdotte in Chrome nell'ultimo anno. Il browser ha stabilito nuovi record su JetStream 3 (469 punti, +10%) e Speedometer 3.1 (61 punti, +5%). I miglioramenti riguardano il motore JavaScript V8, il supporto WebAssembly e il rendering engine Blink.

di pubblicata il , alle 14:01 nel canale Web
ChromeGoogle
 

Il team di Google Chrome ha pubblicato un resoconto tecnico approfondito delle ottimizzazioni introdotte nel browser nel corso dell'ultimo anno, documentando i progressi ottenuti sui principali benchmark di settore.

Le misurazioni sono state effettuate su un MacBook Pro con chip Apple M5 in esecuzione su macOS 26.0.1 e mostrano risultati che il team definisce record assoluti per qualsiasi browser attualmente disponibile: 469 punti su JetStream 3, con un incremento del 10% dall'inizio del 2025, e 61 punti su Speedometer 3.1, in crescita del 5% rispetto al precedente aggiornamento comunicato circa un anno fa.

L'area su cui il team ha concentrato la maggior parte del lavoro è il motore JavaScript V8. Una parte significativa degli interventi ha riguardato l'introduzione di cosiddetti "fast path" nel compilatore ottimizzante: anziché eseguire l'intera implementazione dello standard per ogni funzione integrate, il compilatore identifica i casi più comuni e li gestisce attraverso percorsi di esecuzione abbreviati, eliminando passaggi non necessari.

Sul fronte delle euristiche di ottimizzazione, il team ha rivisto i criteri con cui V8 decide quali funzioni ottimizzare e in quale momento farlo. L'ottimizzazione di una funzione JavaScript comporta un costo computazionale che deve essere giustificato dal guadagno atteso in esecuzione ripetuta. In questo contesto, è stato migliorato il comportamento delle funzioni asincrone e delle funzioni generatore, consentendo al motore di ottimizzarle anticipatamente quando vengono eseguite in parallelo in numero elevato. Sono stati inoltre raffinati i criteri di inlining tra funzioni diverse, tenendo conto della tipologia di oggetti scambiati tra esse al fine di ridurre le allocazioni interne al motore.

Un'ulteriore area di intervento ha riguardato la gestione dei valori BigInt, una categoria di object emersa come collo di bottiglia nelle analisi condotte sul nuovo JetStream 3. Sono stati migliorati gli algoritmi di divisione e canonicalizzazione, e contestualmente è stata modificata la struttura di allocazione dei dati relativi a questi oggetti, con un beneficio dichiarato anche in termini di sicurezza all'interno del sandbox del browser.

Il lavoro sul supporto WebAssembly si è sviluppato a partire dai progressi già raggiunti nelle versioni precedenti, che includevano l'eliminazione di load e null-check ridondanti e il supporto all'inlining speculativo delle chiamate indirette a funzione con meccanismo di deottimizzazione. Su questa base, l'analisi delle nuove voci introdotte in JetStream 3 ha consentito di individuare ulteriori margini di miglioramento.

Tra gli interventi più significativi figurano l'ottimizzazione della generazione del codice per le istruzioni SIMD (Single Instruction, Multiple Data) e il miglioramento dell'allocazione dei registri, con effetti positivi documentati su carichi di lavoro legati all'intelligenza artificiale, alla crittografia e all'esecuzione di interpreter. È stato inoltre migliorato il riutilizzo della memoria temporanea all'interno del compilatore, con benefici sulla velocità di compilazione in determinati scenari.

Un secondo filone di lavoro ha affrontato l'overhead delle chiamate da codice JavaScript verso moduli WebAssembly. Il compilatore è ora in grado di eliminare conversioni di tipo ripetute e operazioni di caricamento ridondanti all'interno dei loop, integrando il codice di gestione delle chiamate con le ottimizzazioni già esistenti e consentendo a V8 di rimuovere più efficacemente le conversioni non necessarie.

Il terzo ambito di intervento ha riguardato Blink, il motore di rendering di Chrome. Per ridurre i tempi di risoluzione degli stili e le operazioni sul DOM, è stata introdotta una cache unificata per il metodo querySelector(), con l'obiettivo di eliminare lookup ridondanti. La gestione degli attributi degli elementi HTML è stata ottimizzata tramite un percorso di uscita rapida che evita controlli superflui quando gli attributi non sono presenti. È stato inoltre esteso il meccanismo di caching delle risorse dataURI oltre il perimetro del singolo documento, con vantaggi per i framework web moderni che fanno largo uso di questo tipo di risorsa. La ricalcolazione degli stili per le transizioni CSS è stata alleggerita e il sistema di corrispondenza dei selettori CSS è stato semplificato a vantaggio della fluidità delle animazioni.

Per quanto riguarda il parsing HTML e la manipolazione del testo, operazioni che incidono in modo rilevante sui tempi di caricamento iniziale delle pagine, sono state introdotte operazioni SIMD per rendere la copia di stringhe sensibilmente più efficiente. È stata ottimizzata anche la creazione di stringhe direttamente nel parser HTML in modalità fast-path, riducendo l'overhead nella costruzione degli elementi del DOM a partire dal testo grezzo.

Sul versante della tipografia e della grafica vettoriale, il team ha completato le ottimizzazioni per la formattazione dei testi in Apple Advanced Typography (AAT), risolto più problemi relativi al font fallback ed eliminato allocazioni heap non necessarie durante il calcolo delle larghezze dei glifi. Per accelerare il rendering di grafica SVG complessa è stata introdotta una cache dedicata. Parallelamente, le strutture dati interne dello storage DOM sono state semplificate, con una riduzione dell'occupazione in memoria e un alleggerimento dei layout di pagina fondamentali.

0 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^