XDA Myth Busters: Linaro 4.7.4 vs. GCC 4.7

Viktigheten av en optimalisert verktøykjede er et av de hotteste temaene i Android-utviklerverdenen. Mange av dere har kanskje hørt om GCC og Linaro, som er de to største prosjektene av denne typen. GCC er en gammel hånd som først ble utgitt i 1987, mens Linaro er en relativt ung spiller på bare fire år.

La oss først dykke ned i historien til disse to prosjektene. Som jeg sa tidligere, er GNU Compiler Collection gammel. Gjennom årene har den blitt brukt til å kompilere ulike prosjekter, inkludert Android. Google bestemte seg for å bruke versjon 4.6 og 4.7 som standardverktøykjeder, og jeg vil fokusere på versjon 4.7 i denne testserien.

Linaro ble lansert i 2010, og den er optimalisert for ARM-arkitekturer. Og selvfølgelig brukes ARM i de aller fleste Android-drevne smarttelefoner og nettbrett. Du kan finne Linaro som en verktøykjede som brukes til å kompilere kjerner eller hele ROM-er, og mange utviklere hevder at denne verktøykjeden er raskere og kraftigere enn GCC.

Inspirert av vår utvikleradministrator Pulser_G2 bestemte jeg meg for å prøve denne myten og se om disse påstandene er ekte. For å gjøre dette lastet jeg først ned AOSP-kilden. Jeg bygde en

aosp_mako-eng mål for min Nexus 4 ved å bruke standardsettet med forhåndsbygde fra Google. Etter lage otapackage, Jeg har 183115481-byte zip-fil klar til å flashe. Etterpå lastet jeg ned Linaro 4.7.4-verktøykjeden og erstattet GCC i prebuilts/gcc/linux-86. Jeg utførte de nødvendige endringene for å sette nivå O3 for optimalisering. Siden AOSP kun støtter forhåndsbygde kjerner (uten modifikasjoner), bygde jeg en kjerne på egen hånd med Linaro og erstattet kjernen i mako-kjernen med min egen blob.

 Nedenfor kan du se de to resulterende arkivene. Som du kan se, er Linaro-arkivet litt større, så denne verktøykjeden gjør faktisk noe med bin og xbin-mapper. Selve kjernefilen er også større.

Men filstørrelsen er ikke det viktigste. La oss heller fokusere på ytelse. For å måle dette brukte jeg AnTuTu benchmark. For økt presisjon kjørte jeg hver test tre ganger. Som du kan se nedenfor, er forskjellen ganske stor. Jeg ville imidlertid ikke ha for mye blind tro på disse testene, siden resultatene var forskjellige på hver test. Når det er sagt, var Linaro få poeng bedre enn GCC, men AnTuTu er ikke så pålitelig som du kanskje tror.

GCC

Linaro

Følgende tester ble utført med 3DMark for å se om en verktøykjede kan påvirke grafikkytelsen. Forskjellen var enda mer signifikant enn med Antutu. Du kan få få FPS med GCC, men den generelle jevnheten er bedre med Linaro. Poengsummen er også litt høyere.

GCC

Linaro

Den siste testen ble kjørt med spillet Asphalt 8: Airborne. Nedenfor kan du se to videoer av spillet som kjører på begge verktøykjedene. Den første ble laget med Linaro, mens den andre med GCC. Personlig synes jeg at Linaro føles litt jevnere enn GCC, men det kan bare være placeboeffekten siden dette ikke var en dobbeltblind test. Begge kjernene var lagret og fri for justeringer, overklokking og andre fancy justeringer for å forbedre ytelsen.

//www.youtube.com/embed/BZRZenaNr9A

Så er Linaro bedre?

Selv om jeg var skeptisk til å begynne med, må jeg innrømme at Linaro ser ut til å være et bedre valg enn GCC i det minste på maskinvarekonfigurasjonen min. OS føltes mer responsivt og raskere enn da det ble bygget med GCC. GCC er imidlertid fortsatt bunnsolid, så hvis du trenger ultimat stabilitet, kan det fortsatt være det beste valget.

I de neste episodene skal jeg prøve å sammenligne andre verktøykjeder som SaberMod og Linaro 4.8. Gi oss beskjed om favorittverktøykjedene dine i kommentarene nedenfor. Og hvis du vil at vi skal teste andre verktøykjeder, vennligst si det!