Pomen optimizirane orodne verige je ena najbolj vročih tem v svetu razvijalcev Android. Mnogi ste morda že slišali za GCC in Linaro, ki sta dva največja projekta te vrste. GCC je stara igra, ki je bila prvotno izdana leta 1987, medtem ko je Linaro razmeroma mlad igralec, star le štiri leta.
Najprej se potopimo v zgodovino teh dveh projektov. Kot sem že rekel, je zbirka prevajalnika GNU stara. Z leti je bil uporabljen za prevajanje različnih projektov, vključno z Androidom. Google se je odločil uporabiti različici 4.6 in 4.7 kot privzeti verigi orodij, jaz pa bi se v tej seriji testov rad osredotočil na različico 4.7.
Linaro je bil predstavljen leta 2010 in je bil optimiziran za arhitekture ARM. In seveda se ARM uporablja v veliki večini pametnih telefonov in tabličnih računalnikov s sistemom Android. Linaro lahko najdete kot orodno verigo, ki se uporablja za prevajanje jeder ali celih ROM-ov, in mnogi razvijalci trdijo, da je ta orodna veriga hitrejša in močnejša od GCC.
Po navdihu našega skrbnika za razvijalce Pulser_G2 sem se odločil poskusiti ta mit in preveriti, ali so te trditve resnične. Da bi to naredil, sem najprej prenesel vir AOSP. Zgradil sem
aosp_mako-eng cilj za moj Nexus 4 z uporabo privzetega nabora Googlovih predizdelav. Po naredi otapaket, Imam 183115481-bajtno datoteko zip, pripravljeno za flash. Potem sem prenesel verigo orodij Linaro 4.7.4 in zamenjal GCC prebuilts/gcc/linux-86. Izvedel sem potrebne spremembe za nastavitev stopnje optimizacije O3. Ker AOSP podpira samo vnaprej zgrajena jedra (brez sprememb), sem sam zgradil jedro z Linaro in zamenjal jedro v mako-kernel z lastnim blobom.Spodaj si lahko ogledate dva nastala arhiva. Kot lahko vidite, je arhiv Linaro nekoliko večji, tako da ta veriga orodij dejansko naredi nekaj za mape bin in xbin. Tudi sama datoteka jedra je večja.
Vendar velikost datoteke ni najpomembnejša stvar. Namesto tega se osredotočimo na uspešnost. Za merjenje tega sem uporabil primerjalno merilo AnTuTu. Za večjo natančnost sem vsak test izvedel trikrat. Kot lahko vidite spodaj, je razlika precej velika. Vendar tem testom ne bi preveč slepo verjel, saj so se rezultati pri vsakem testu razlikovali. Kljub temu je bil Linaro nekaj točk boljši od GCC, vendar AnTuTu ni tako zanesljiv, kot si morda mislite.
GCC
Linaro
Naslednji testi so bili izvedeni s 3DMark, da bi ugotovili, ali lahko veriga orodij vpliva na grafično zmogljivost. Razlika je bila še večja kot pri Antutu. Z GCC lahko pridobite nekaj FPS, vendar je na splošno gladkost boljša z Linaro. Tudi ocena je nekoliko višja.
GCC
Linaro
Zadnji test je bil izveden z igro Asphalt 8: Airborne. Spodaj si lahko ogledate dva videa igre, ki teče na obeh orodnih verigah. Prvi je bil narejen z Linaro, drugi pa z GCC. Osebno menim, da je Linaro nekoliko bolj gladek kot GCC, vendar je to morda le placebo učinek, saj to ni bil dvojno slepi test. Obe jedri sta bili na zalogi in brez popravkov, overclockinga in drugih modnih popravkov za izboljšanje zmogljivosti.
//www.youtube.com/embed/BZRZenaNr9A
Torej je Linaro boljši?
Čeprav sem bil sprva skeptičen, moram priznati, da se zdi Linaro boljša izbira kot GCC, vsaj glede moje konfiguracije strojne opreme. Operacijski sistem se je zdel bolj odziven in hitrejši kot takrat, ko je bil izdelan z GCC. Vendar je GCC še vedno trden, tako da je morda najboljša izbira, če potrebujete popolno stabilnost.
V naslednjih epizodah bom poskušal primerjati druge verige orodij, kot sta SaberMod in Linaro 4.8. Sporočite nam svoje najljubše orodne verige v spodnjih komentarjih. In če želite, da preizkusimo katero koli drugo orodno verigo, prosim povejte!