domenica 29 giugno 2014

Clean Master, ma cosa combini?



Prima di iniziare: come al solito mi ero promesso di scrivere poco, ma ho fallito miseramente. Non arrivate a leggere fino in fondo se volete stare svegli!
Su dai, che con più di 10 milioni di download, qualcuno che lo usa, tra di voi c'è di sicuro.

Non è una pubblica gogna, parliamo un po' di Clean Master, visto che sorgono tanti dubbi riguardo il suo utilizzo. La domanda che viene posta più spesso e che deve sorgere sempre è: ma funziona
Buttiamoci a capofitto e rispondiamo subito . Sì, fa quello che dice, svuota la RAM e cancella i file inutili. È vero ed è innegabile, gli effetti si vedono (per cui la causa è giustificata) e quindi Clean Master fa quello che dice.

Utente a caso: "Ebbene finita? Quindi apposto no?"

No. Clean Master fa quello che dice, ma ciò non significa che quello che fa sia utile.
Prendiamo le due funzioni principali, cancellare i file inutili e svuotare la RAM (killando le applicazioni in background, ndr).

Cosa sono i file inutili? Clean Master (boh dai lo abbrevio CM, sappiate che non mi riferisco alla ROM eh!) considera i file di cache archiviati dalle applicazioni come inutili. Dentro allo spettro dell'inutilità rientrano anche alcune cartelle vuote e i file di grosse dimensioni, ma concentriamoci maggiormente sui file di cache, evitando di pronunciarci sull'idiozia di mettere in mezzo i file >100MB in mezzo (quanti video persi!): i file di cache sono file creati ed utilizzati dal sistema, che raramente l'utente va a manipolare (se non per recuperare qualcosa di perso) e vengono adoperati affinché l'applicazione possa riusarli successivamente senza doverli ricreare.

Banale esempio: state scorrendo il vostro newsfeed di Facebook e ci sono una dozzina di post, 7 di questi sono status (quindi parole scritte) e 5 di questi sono foto. Facebook "comunica" la presenza di queste foto alla CPU attraverso il kernel, che elabora la richiesta, la gira alla GPU e quest'ultima disegna l'immagine letteralmente, piazzandola poi in bella vista sul nostro schermo (ovvio che l'operazione dura pochi centesimi di secondo per la crescente potenza dell'hardware dei nostri device).
Queste 5 immagini disegnate dalla GPU non vengono eliminate appena scrollate la bacheca verso il basso, perché potreste tornare a quel post e ci sarebbe di nuovo bisogno di ridisegnare le immagini. Ma potete anche chiudere Facebook per un paio d'ore e riaprirlo successivamente, le immagini sarebbero ancora lì proprio per non farle ridisegnare.

Cosa implica questo?
1. la GPU non viene scomodata per l'operazione di disegno di queste foto
2. il telefono non dovrà effettuare il download di questi file immagine (cosa importante se state utilizzando le reti mobili

Quindi, archiviando queste 5 immagini invece di fare del banale "usa e getta", avrete risparmiato energia, perché CPU e GPU non vengono interpellate per quella particolare operazione ed avete risparmiato anche connessione dati per non aver scaricato di nuovo quelle 5 immagini!

Ora, l'esempio è volutamente banale, ma provate da voi stessi, in modo da avere un esempio tangibile: moltissimi di voi avranno Nova Launcher. Cancellate i file inutili con CM, dopo di che recatevi nella vostra home ed aprite il drawer applicazioni. Scorrete velocemente verso i widget arrivando fino in fondo. 
Non ce ne sarà nemmeno uno visibile, ci saranno solo le piastrelle trasparenti che dovrebbero contenere le icone dei widget.
Ora, scorrete di nuovo i widget e fate in modo che la GPU ricrei le immagini, chiudete il drawer e riapritelo: magicamente le immagini saranno di nuovo lì al loro posto!
Non avrete risparmiato connessione dati perché i thumbnail dei widget sono dentro ai relativi pacchetti delle applicazioni, ma avrete comunque risparmiato energia preziosa e la batteria ringrazia!

Ora immaginatevi queste piccole operazione di ridisegno moltiplicate per tutte le applicazioni che avete e pensate a quante volte la CPU dovrà svegliarsi e svegliare anche la GPU!

Passiamo allo svuotamento della memoria RAM attraverso il kill delle applicazioni, ma prima facciamo una piccola digressione propedeutica.

Oramai la tecnologia relativa ai dispositivi con architettura ARM quali i nostri device, sta facendo passi da gigante ed il consumismo tech fa sì che i nostri device vengano cambiati in media ogni 2 anni, cercando di restare il più aggiornati possibili. Difatti è sempre più raro trovare dispositivi con meno di 1GB di RAM ed è ancora più raro trovare device che hanno meno di 512MB di RAM!


Processi attualmente in corso sul mio Moto G.
Un po' come accade per i file di cache, anche la RAM viene adoperata allo stesso modo. La RAM è una memoria volatile, ossia dove vengono archiviati file che restano temporaneamente. Ogni qual volta che aprite un'applicazione, file di cache (eh sì!) e parti di codice dell'app vengono compilati e depositati sulla RAM per poi ritrovarli al prossimo avvio dell'applicazione stessa.
Difatti notate la velocità di caricamento di un'applicazione quando la memoria RAM viene svuotata e quando invece è stata già riempita dall'applicazione in questione, noterete un netto miglioramento della velocità nel secondo caso!

Cosa implica questo aspetto?
1. con alcuni dei file già precaricati in RAM, la CPU non viene sollecitata a ricrearli e l'esecuzione è più veloce.
2. non meno importante, risparmiamo l'energia necessaria alla CPU per le operazioni di avvio preliminari.

Killare le app comunque consente più multitasking e possiamo liberare spazio per qualche altra applicazione che vogliamo avviare e che sta facendo fatica al momento. Discorso abbastanza valido se si ha su un device con meno di 512MB di RAM. Svuotare la RAM selettivamente, però, può sembrare una buona idea. Certo! Ma perché farlo voi? Difatti i nostri dispositivi sono equipaggiati con un sistema operativo parecchio smart, visto che Android assegna delle priorità alle diverse applicazioni e killa automaticamente quelle con più bassa priorità a favore di quelle che, subentrando, hanno una più alta priorità.
Immaginatevi la gestione della RAM come un grosso incrocio stradale, dove non si passa a turno, bensì c'è un vigile che fa passare il veicolo con dentro la persona più importante, fermando (killando) quelle meno importanti (woah, sta metafora m'è uscita bene!).

La priorità viene assegnata in base ad una serie di complessi algoritmi dei quali so ben poco purtroppo, ma sarebbe bello approfondire il discorso.

Tornando al discorso, vedete come Android non ha necessità di regolazione da parte di un ente esterno perché sa benissimo autoregolarsi.

C'è però da fare una considerazione soprattutto per quanto riguarda i file di cache.
È vero che questi sono utili, ma è anche vero che i file di cache di una scrollata a Facebook o a G+ di due mesi fa, sono praticamente inutili, visto che non li rivedremo mai più. Certo, le nostre SD sono sempre più grandi e spesso espandibili, ma accumulando, si finisce col saturare la memoria.
Per cui, Clean Master in linea di massima è fine a sé stesso, ma 1 volta al mese una bella pulizia dei file di cache obsoleti va fatta.

Accettate comunque un consiglio: i developer di Clean Master si son posti l'obiettivo di fare della propria applicazione un coltellino svizzero di utility, col risultato di appesantire l'applicazione di feature inutili.

Al contrario CCleaner è leggera e performante, funziona e non ha pretese particolari, preferite questa a CM.

Spero di non avervi annoiato e di aver contribuito almeno un po' a capire meglio Android e Clean Master.