Android diventa più veloce con alcuni flag di compilazione delle ROM?

SpeedDemons

JustArchi, uno sviluppatore di ROM attivo su XDA, ha scoperto un piccolo trucco che potrebbe rendere le ROM molto più veloci rispetto a quanto sono ora. Si parla di un fattore di sei volte, decisamente non trascurabile! Il segreto starebbe nei flag di compilazione delle ROM.

Cosa significa questo? Una ROM viene sempre compilata prima di poter essere utilizzabile sullo smartphone o sul tablet; questo significa che viene tradotta da un linguaggio comprensibile all’uomo (tipicamente il C/C++) in un linguaggio comprensibile alla macchina (il cosiddetto “linguaggio macchina”, per l’appunto) fatto di zeri e di uni per creare i file oggetto o eseguibili insieme alle librerie e a tutte le altre componenti di una ROM.

Il processo di compilazione può essere alterato dai cosiddetti flag, ovvero da delle opzioni tramite le quali è possibile dare dei comandi precisi al compilatore (il programma che traduce in linguaggio macchina) per influenzare il suo comportamento.

In questo caso, JustArchi ha scoperto che cambiare i flag di compilazione normalmente utilizzati porta ad un drastico aumento delle performance. Questo è dovuto al fatto che esistono tre flag di compilazione per l’ottimizzazione:

  • -Os: il flag più conservativo riguardo le dimensioni, premia le dimensioni del file oggetto più dell’ottimizzazione e della velocità;
  • -O2: più veloce di Os, O2 è tipicamente impiegato per compilare il kernel e premia l’ottimizzazione rispetto alla dimensione finale del file oggetto;
  • -O3: il più veloce di tutti, aumenta lo spazio occupato dai file compilati.

Esiste anche -Ofast, che però non può essere utilizzato perché non rispetta gli standard IEEE e non può quindi essere utilizzato in Android per problemi di compatibilità (ad esempio con SQLite).

In alcune ROM il kernel è compilato con flag O2, mentre buona parte del resto del sistema viene compilata con flag Os. Il kernel costituisce circa il 10% di Android, dunque va da sé che i miglioramenti possono essere modesti.

Perché però si compila ancora con flag Os anziché utilizzare O2 od O3? La risposta sta nelle dimensioni. Quando Android è stato pensato e successivamente lanciato, gli smartphone avevano pochi MB di memoria RAM e pochi di più di memoria interna. Mantenere le dimensioni contenute era quindi un obbligo dettato da esigenze stringenti; ora che i dispositivi hanno 16GB di memoria interna e uno o due GB di memoria RAM, il problema non si sente nemmeno più.

La differenza tra O2 e O3 è di pochi MB sull’intera ROM e di circa 7.5KB in più per ogni file compilato con O3. Una quantità decisamente risibile anche sugli smartphone di fascia più bassa.

JustArchi ha quindi effettuato un po’ di prove per verificare che effettivamente ci fosse un miglioramento di prestazioni e pare che ci sia un deciso aumento. Alcuni piccoli benchmark di compilazione su Android premiano decisamente O2 e ancora di più O3.

Lo sviluppatore ha deciso di sottoporre agli utenti di XDA due ROM (quasi) perfettamente identiche chiamate Mysterious Build 1 e Mysterious Build 2 invitando a provarle entrambe ed a riportare la propria esperienza. La numero 1 è stata compilata con O3, la seconda con Os. Gli utenti non sapevano di questa differenza, eppure 9 su 10 hanno affermato che la prima è più veloce.

Anche se servono ancora prove su prove prima di poter dire che effettivamente il flag O3 sia una sorta di panacea per migliorare le prestazioni, indubbiamente questo è un sentiero percorribile che potrebbe portare a migliori prestazioni per i nostri dispositivi in maniera totalmente gratuita.

Via

Commenti

Ti invitiamo ad usare toni consoni e di rimanere in tema all'argomento trattato, in caso contrario, il sistema automatico potrebbe oscurare il tuo messaggio e potrebbero trascorrere fino a 48h per la verifica ed un'eventuale autorizzazione.
TuttoAndroid si riserva comunque il diritto di allontanare le persone non adatte a tenere un comportamento corretto e rispettoso verso gli altri.

  • helicopter88

    Vi vorrei far notare che buona parte di queste opzioni possono portare a instabilità e a bug più o meno gravi,, soprattutto lo strict aliasing non risolto (come avviene nel topic da voi pubblicizzato). Inoltre buona parte della lentezza di android è dovuta a java che compone la parte più grande del codice sorgente

  • ascarabaus

    Vero che spesso le soluzioni più geniali nascondo una gran semplicità, ma mi chiedo…
    Possibile che in tutte le aziende che compilano OS android non ci sia stato neanche uno stagista tra le migliaia di programmatori che abbia deciso di cambiare un flag?
    Possibile che questi programmatori riescano a fare un po’ di tutto e poi si perdano in una cosa così banale?
    Resto perplesso!

  • ale

    Hanno scoperto l’ acqua calda, è una cosa che sanno tutti, chiunque abbia compilato qualcosa con gcc sa (o dovrebbe sapere) che esiste l’ ottimizzazione -OX, fra l’altro O2 è anche l’ ottimizzazione predefinita per quasi tutti i programmi, se si compila il kernel linux per esempio viene assunto come default O2, O3 no perchè dicono che può causare problemi…

  • Ale

    questo JustArchi deve essereun fenomeno…sta creando una ROM di Android 4.4.2 partendo da un firmware originale Samsung (del Note 2. mi pare) da flashare sull’abbandonato s3…e sta facendo un lavorone: alla quarta alpha funziona quasi tutto tranne la rotazione dello schermo (che dice verrà risolto nella prossima release, la prima beta) e qualche piccolo bug…non oso immaginare quando dichiarerà tutto “stable”! ;)

    • jajacq

      Beh se non ricordo male il porting iniziale era stato fatto da un altro utente, però poi è stato justarchi a sistemare tutto, è un mito.

    • dveadsl

      anche io ho un s3…dove posso trovare questa rom??? grazie

Top