Google riduce la dimensione degli aggiornamenti delle app, di nuovo, ma forse non ve ne accorgerete

Nicola Ligas

No, non state avendo un deja-vu. Google aveva davvero ridotto la dimensione degli update dal Play Store, appena pochi mesi fa, solo che adesso l’ha fatto di nuovo, ed in maniera ancora più consistente.

Utilizzando una nuova metodologia, chiamata File-by-File patching, gli aggiornamenti delle app in media del 65% più piccoli rispetto all’app completa, ed in alcuni casi anche del 90%. Giusto per fare un paragone, con il precedente e già citato algoritmo la riduzione era in media del 47%.

Il principio di funzionamento è molto semplice ed intuitivo: andare a modificare solo la parte di codice diversa rispetto alla versione precedente, piuttosto che inviare l’apk completo, che poi al suo interno avrà appunto solo certe modifiche. Vi potrete quindi chiedere perché non sia stato fatto prima, dato che intuitivamente è così logico. Il motivo sta nel fatto che identificare le differenze tra due file apk non è così banale, dato che anche una piccola modifica al contenuto originale può far apparire il relativo file compresso come completamente differente da quello di partenza. Questo avviene a causa degli algoritmi di compressione utilizzati, e se guardate l’esempio qui sotto capirete quanto il testo compresso a destra vari molto, in seguito al cambiamento di una sola lettera nel testo non compresso di sinistra.

differenza-compressione

Tramite il File-by-File patching quindi, vengono prima decompressi sia i vecchi che i nuovi file, ne vengono quindi calcolate le differenze, e questo delta viene applicato al file (ancora non compresso) che poi diventerà l’aggiornamento. Una volta ricompresso, questo è più o meno pronto (in realtà ci sono ancora alcuni ostacoli da superare, ma se siete interessati a tutti i dettagli tecnici li trovate nel link alla fonte).

C’è però uno scotto da pagare: tutta questa elaborazione richiede potenza computazionale (e quindi tempo) da parte dello smartphone. Su modelli del 2015, la ricompressione può richiedere anche più di un secondo per megabyte, ed ovviamente su modelli meno potenti le cose peggiorano. Dai dati raccolti finora, in media, se la dimensione della patch è dimezzata, allora il tempo speso ad applicarla è raddoppiato.

Per questo motivo, al momento questa funzione viene applicata solo agli aggiornamenti in background, e non a quelli fatti mentre usate lo smartphone, in modo che non dobbiate aspettare troppo e che risparmiate dati quando lo smartphone lavora “a vostra insaputa”.

La tabella seguente illustra con esempi pratici la validità del file-by-file patching e quindi perché Google si sia dato tanto disturbo nel volerlo applicare. Speriamo solo che, con il progredire della tecnica, diventi utilizzabile su base regolare.

Applicazione
Dimensione originale
Dimensione della patch rispetto all’originale con il precedente algoritmo (BSDiff)
Dimensione della patch rispetto all’originale con il metodo File-by-File
71.1 MB
13.4 MB (-81%)
8.0 MB (-89%)
32.7 MB
17.5 MB (-46%)
9.6 MB (-71%)
17.8 MB
7.6 MB (-57%)
7.3 MB (-59%)
18.9 MB
17.2 MB (-9%)
13.1 MB (-31%)
52.4 MB
19.1 MB (-64%)
8.4 MB (-84%)
16.2 MB
7.7 MB (-52%)
1.2 MB (-92%)
Fonte: Android Developers