XDA Myth Busters: Linaro 4.7.4 vs. GCC 4.7

click fraud protection

Het belang van een geoptimaliseerde toolchain is een van de populairste onderwerpen in de wereld van Android-ontwikkelaars. Velen van jullie hebben misschien gehoord van GCC en Linaro, de twee grootste projecten van dit type. GCC is een oude rot die voor het eerst werd uitgebracht in 1987, terwijl Linaro met slechts vier jaar oud een relatief jonge speler is.

Laten we eerst eens in de geschiedenis van deze twee projecten duiken. Zoals ik al eerder zei, is GNU Compiler Collection oud. Door de jaren heen is het gebruikt om verschillende projecten samen te stellen, waaronder Android. Google heeft besloten om versies 4.6 en 4.7 als standaard toolchains te gebruiken, en ik zou me in deze reeks tests willen concentreren op versie 4.7.

Linaro werd gelanceerd in 2010 en is geoptimaliseerd voor ARM-architecturen. En natuurlijk wordt ARM gebruikt in de overgrote meerderheid van Android-smartphones en -tablets. Je kunt Linaro vinden als een toolchain die wordt gebruikt om kernels of hele ROM's te compileren, en veel ontwikkelaars beweren dat deze toolchain sneller en krachtiger is dan GCC.

Geïnspireerd door onze ontwikkelaarsbeheerder Pulser_G2, besloot ik deze mythe een kans te geven en te kijken of deze beweringen echt zijn. Om dit te doen, heb ik eerst de AOSP-bron gedownload. Ik heb een gebouwd aosp_mako-eng target voor mijn Nexus 4 met behulp van de standaardset vooraf gebouwde onderdelen van Google. Na otapakket maken, Ik heb een zipbestand van 183115481 bytes klaar om te flashen. Daarna heb ik de Linaro 4.7.4 toolchain gedownload en GCC vervangen prebuilts/gcc/linux-86. Ik heb de nodige wijzigingen aangebracht om het optimalisatieniveau O3 in te stellen. Omdat AOSP alleen vooraf gebouwde kernels ondersteunt (zonder aanpassingen), heb ik zelf een kernel gebouwd met Linaro en de kernel in mako-kernel vervangen door mijn eigen blob.

 Hieronder ziet u de twee resulterende archieven. Zoals je kunt zien is het Linaro-archief iets groter, dus deze toolchain doet daadwerkelijk iets met de bin- en xbin-mappen. Het kernelbestand zelf is ook groter.

Maar de bestandsgrootte is niet het allerbelangrijkste. Laten we ons in plaats daarvan concentreren op de prestaties. Om dit te meten heb ik de AnTuTu benchmark gebruikt. Voor meer nauwkeurigheid heb ik elke test drie keer uitgevoerd. Zoals je hieronder kunt zien, is het verschil behoorlijk groot. Ik zou echter niet te veel blind vertrouwen in deze tests, omdat de resultaten bij elke test verschilden. Dat gezegd hebbende, Linaro was een paar punten beter dan GCC, maar AnTuTu is niet zo betrouwbaar als je misschien denkt.

GCC

Linaro

De volgende tests zijn uitgevoerd met 3DMark om te zien of een toolchain de grafische prestaties kan beïnvloeden. Het verschil was nog groter dan bij Antutu. Je wint misschien weinig FPS met GCC, maar de algehele soepelheid is beter met Linaro. De score ligt ook iets hoger.

GCC

Linaro

De laatste test werd uitgevoerd met het spel Asphalt 8: Airborne. Hieronder zie je twee video's van de game die op beide toolchains draait. De eerste is gemaakt met Linaro, de tweede met GCC. Persoonlijk denk ik dat Linaro wat soepeler aanvoelt dan GCC, maar dat kan gewoon het placebo-effect zijn aangezien dit geen dubbelblinde test was. Beide kernels waren standaard en vrij van aanpassingen, overklokken en andere fraaie aanpassingen om de prestaties te verbeteren.

//www.youtube.com/embed/BZRZenaNr9A

Dus is Linaro beter?

Hoewel ik aanvankelijk sceptisch was, moet ik toegeven dat Linaro een betere keuze lijkt te zijn dan GCC, tenminste wat mijn hardwareconfiguratie betreft. Het besturingssysteem voelde responsiever en sneller dan toen het werd gebouwd met GCC. GCC is echter nog steeds ijzersterk, dus als je ultieme stabiliteit nodig hebt, kan dit nog steeds de beste keuze zijn.

In de volgende afleveringen zal ik proberen andere toolchains te vergelijken, zoals SaberMod en Linaro 4.8. Laat ons in de reacties hieronder weten wat uw favoriete toolchas zijn. En als je wilt dat we andere toolchains testen, zeg dat dan!