Dôležitosť optimalizovaného reťazca nástrojov je jednou z najhorúcejších tém vo svete vývoja Androidu. Mnohí z vás už možno počuli o GCC a Linaro, čo sú dva najväčšie projekty tohto typu. GCC je stará ruka, ktorá bola pôvodne vydaná v roku 1987, zatiaľ čo Linaro je relatívne mladý hráč, ktorý má len štyri roky.
Poďme sa najskôr ponoriť do histórie týchto dvoch projektov. Ako som už povedal, GNU Compiler Collection je stará. V priebehu rokov sa používal na zostavovanie rôznych projektov vrátane Androidu. Google sa rozhodol použiť verzie 4.6 a 4.7 ako svoje predvolené toolchainy a ja by som sa v tejto sérii testov rád zameral na verziu 4.7.
Linaro bolo spustené v roku 2010 a bolo optimalizované pre architektúry ARM. A samozrejme, ARM sa používa vo veľkej väčšine smartfónov a tabletov so systémom Android. Linaro môžete nájsť ako toolchain používaný na kompiláciu jadier alebo celých ROM a mnohí vývojári tvrdia, že tento toolchain je rýchlejší a výkonnejší ako GCC.
Inšpirovaný naším vývojárskym správcom Pulser_G2 som sa rozhodol vyskúšať tento mýtus a zistiť, či sú tieto tvrdenia skutočné. Aby som to urobil, najprv som si stiahol zdroj AOSP. Postavil som an
aosp_mako-eng cieľ pre môj Nexus 4 pomocou predvolenej sady vopred zostavených produktov od spoločnosti Google. Po urobiť otapackage, Mám 183115481-bajtový zip súbor pripravený na flash. Potom som si stiahol súbor nástrojov Linaro 4.7.4 a nahradil som GCC prebuils/gcc/linux-86. Vykonal som potrebné zmeny pre nastavenie úrovne optimalizácie O3. Keďže AOSP podporuje iba vopred zostavené jadrá (bez úprav), vytvoril som si jadro sám s Linaro a nahradil som jadro v mako-kerneli vlastným blobom.Nižšie si môžete pozrieť dva výsledné archívy. Ako môžete vidieť, archív Linaro je o niečo väčší, takže tento nástrojový reťazec skutočne robí niečo so zložkami bin a xbin. Samotný súbor jadra je tiež väčší.
Veľkosť súboru však nie je najdôležitejšia. Namiesto toho sa sústreďme na výkon. Na meranie som použil AnTuTu benchmark. Pre väčšiu presnosť som spustil každý test trikrát. Ako môžete vidieť nižšie, rozdiel je dosť veľký. Do týchto testov by som však príliš slepo neveril, keďže výsledky sa pri každom teste líšili. To znamená, že Linaro bolo o niekoľko bodov lepšie ako GCC, ale AnTuTu nie je také spoľahlivé, ako si možno myslíte.
GCC
Linaro
Nasledujúce testy boli vykonané s 3DMark, aby sa zistilo, či môže reťazec nástrojov ovplyvniť grafický výkon. Rozdiel bol ešte výraznejší ako pri Antutu. S GCC môžete získať málo FPS, ale celková plynulosť je lepšia s Linaro. Skóre je tiež o niečo vyššie.
GCC
Linaro
Záverečný test bol spustený pomocou hry Asphalt 8: Airborne. Nižšie si môžete pozrieť dve videá hry, ktorá beží na oboch toolchainoch. Prvý bol vyrobený s Linaro, zatiaľ čo druhý s GCC. Osobne si myslím, že Linaro sa cíti o niečo hladšie ako GCC, ale to môže byť len placebo efekt, pretože to nebol dvojito zaslepený test. Obe jadrá boli na sklade a bez úprav, pretaktovania a akýchkoľvek iných ozdobných úprav na zlepšenie výkonu.
//www.youtube.com/embed/BZRZenaNr9A
Je teda Linaro lepší?
Aj keď som bol spočiatku skeptický, musím priznať, že Linaro sa mi zdá byť lepšou voľbou ako GCC, aspoň čo sa týka mojej hardvérovej konfigurácie. Operačný systém bol citlivejší a rýchlejší, ako keď bol vytvorený pomocou GCC. GCC je však stále pevná ako skala, takže ak požadujete maximálnu stabilitu, stále môže byť tou najlepšou voľbou.
V ďalších epizódach sa pokúsim porovnať ďalšie toolchainy ako SaberMod a Linaro 4.8. Prosím, dajte nám vedieť o svojich obľúbených toolchainoch v komentároch nižšie. A ak by ste chceli, aby sme otestovali akékoľvek iné reťazce nástrojov, povedzte to!