Důležitost optimalizovaného toolchainu je jedním z nejžhavějších témat ve světě vývoje Androidu. Mnozí z vás možná slyšeli o GCC a Linaro, což jsou dva největší projekty tohoto typu. GCC je stará handa, která byla původně vydána v roce 1987, zatímco Linaro je relativně mladý hráč ve věku pouhých čtyř let.
Pojďme se nejprve ponořit do historie těchto dvou projektů. Jak jsem řekl dříve, GNU Compiler Collection je stará. V průběhu let byl použit ke kompilaci různých projektů, včetně Androidu. Google se rozhodl použít verze 4.6 a 4.7 jako své výchozí toolchainy a já bych se v této sérii testů rád zaměřil na verzi 4.7.
Linaro bylo spuštěno v roce 2010 a bylo optimalizováno pro architektury ARM. A samozřejmě, ARM se používá v naprosté většině chytrých telefonů a tabletů se systémem Android. Linaro můžete najít jako toolchain používaný ke kompilaci jader nebo celých ROM a mnoho vývojářů tvrdí, že tento toolchain je rychlejší a výkonnější než GCC.
Inspirován naším vývojářským administrátorem Pulser_G2 jsem se rozhodl tento mýtus vyzkoušet a zjistit, zda jsou tato tvrzení skutečná. K tomu jsem si nejprve stáhl zdroj AOSP. Postavil jsem an
aosp_mako-eng cíl pro můj Nexus 4 pomocí výchozí sady předem sestavených od Googlu. Po udělat otapackage, Mám 183115481-bajtový zip soubor připravený k flashování. Poté jsem si stáhl soubor nástrojů Linaro 4.7.4 a nahradil GCC prebuils/gcc/linux-86. Provedl jsem potřebné změny nastavení úrovně optimalizace O3. Protože AOSP podporuje pouze předkompilovaná jádra (bez úprav), postavil jsem si jádro sám pomocí Linara a nahradil jsem jádro v mako-kernel svým vlastním blobem.Níže si můžete prohlédnout dva výsledné archivy. Jak můžete vidět, archiv Linaro je o něco větší, takže tento toolchain vlastně dělá něco se složkami bin a xbin. Samotný soubor jádra je také větší.
Ale velikost souboru není to nejdůležitější. Místo toho se zaměřme na výkon. K měření jsem použil AnTuTu benchmark. Pro zvýšení přesnosti jsem provedl každý test třikrát. Jak můžete vidět níže, rozdíl je poměrně velký. Těmto testům bych však příliš slepě nevěřil, protože výsledky se u každého testu lišily. To znamená, že Linaro bylo o několik bodů lepší než GCC, ale AnTuTu není tak spolehlivé, jak si možná myslíte.
GCC
Linaro
Následující testy byly provedeny s 3DMark, aby se zjistilo, zda může řetězec nástrojů ovlivnit grafický výkon. Rozdíl byl ještě výraznější než u Antutu. S GCC můžete získat málo FPS, ale celková plynulost je lepší s Linaro. Skóre je také o něco vyšší.
GCC
Linaro
Závěrečný test byl spuštěn pomocí hry Asphalt 8: Airborne. Níže můžete vidět dvě videa ze hry běžící na obou toolchainech. První byl vyroben s Linaro, zatímco druhý s GCC. Osobně si myslím, že Linaro se cítí o něco hladší než GCC, ale to může být jen placebo efekt, protože to nebyl dvojitě zaslepený test. Obě jádra byla skladem a bez úprav, přetaktování a jakýchkoli dalších efektních úprav ke zlepšení výkonu.
//www.youtube.com/embed/BZRZenaNr9A
Je tedy Linaro lepší?
I když jsem byl zpočátku skeptický, musím přiznat, že Linaro se zdá být lepší volbou než GCC alespoň na mé hardwarové konfiguraci. Operační systém byl citlivější a rychlejší, než když byl vytvořen pomocí GCC. GCC je však stále pevný jako skála, takže pokud požadujete maximální stabilitu, může být stále tou nejlepší volbou.
V dalších dílech se pokusím porovnat další toolchainy jako SaberMod a Linaro 4.8. Dejte nám prosím vědět o svých oblíbených toolchainech v komentářích níže. A pokud byste chtěli, abychom otestovali jakékoli další nástrojové řetězce, řekněte to!