XDA Разбивачи на митове: Linaro 4.7.4 срещу. GCC 4.7

Значението на оптимизираната верига от инструменти е една от най-горещите теми в света на разработчиците на Android. Много от вас може би са чували за GCC и Linaro, които са двата най-големи проекта от този тип. GCC е стара ръка, която първоначално беше пусната през 1987 г., докато Linaro е сравнително млад играч само на четири години.

Нека първо се потопим в историята на тези два проекта. Както казах по-рано, GNU Compiler Collection е стара. През годините той е бил използван за компилиране на различни проекти, включително Android. Google реши да използва версии 4.6 и 4.7 като вериги от инструменти по подразбиране и бих искал да се съсредоточа върху версия 4.7 в тази серия от тестове.

Linaro стартира през 2010 г. и е оптимизиран за ARM архитектури. И разбира се, ARM се използва в по-голямата част от смартфоните и таблетите с Android. Можете да намерите Linaro като инструментална верига, използвана за компилиране на ядра или цели ROM, и много разработчици твърдят, че тази инструментална верига е по-бърза и по-мощна от GCC.

Вдъхновен от нашия администратор на програмист Pulser_G2, реших да пробвам този мит и да видя дали тези твърдения са реални. За да направя това, първо изтеглих източника на AOSP. Построих aosp_mako-англ цел за моя Nexus 4, използвайки стандартния набор от предварително компилирани от Google. След направи otapackage, Имам 183115481-байтов zip файл, готов за флашване. След това изтеглих инструменталната верига Linaro 4.7.4 и замених GCC prebuilts/gcc/linux-86. Извърших необходимите промени, за да задам ниво O3 на оптимизация. Тъй като AOSP поддържа само предварително изградени ядра (без модификации), изградих ядро ​​сам с Linaro и замених ядрото в mako-kernel с моя собствена петна.

 По-долу можете да видите двата получени архива. Както можете да видите, архивът на Linaro е малко по-голям, така че тази верига от инструменти всъщност прави нещо с папките bin и xbin. Самият файл на ядрото също е по-голям.

Но размерът на файла не е най-важното. Вместо това нека се съсредоточим върху производителността. За да измеря това, използвах AnTuTu бенчмарк. За по-голяма прецизност проведох всеки тест три пъти. Както можете да видите по-долу, разликата е доста голяма. Въпреки това, не бих се доверявал твърде много на тези тестове, тъй като резултатите се различават при всеки тест. Въпреки това Linaro беше с няколко точки по-добър от GCC, но AnTuTu не е толкова надежден, колкото си мислите.

GCC

Линаро

Следните тестове бяха извършени с 3DMark, за да се види дали инструменталната верига може да повлияе на графичната производителност. Разликата беше дори по-съществена, отколкото при Antutu. Може да спечелите малко FPS с GCC, но като цяло плавността е по-добра с Linaro. Резултатът също е малко по-висок.

GCC

Линаро

Последният тест беше проведен с помощта на играта Asphalt 8: Airborne. По-долу можете да видите два видеоклипа на играта, работеща на двете вериги инструменти. Първият е направен с Linaro, а вторият с GCC. Лично аз смятам, че Linaro се усеща малко по-гладко от GCC, но това може да е просто плацебо ефектът, тъй като това не беше двойно-сляп тест. И двете ядра бяха стандартни и без настройки, овърклок и всякакви други фантастични настройки за подобряване на производителността.

//www.youtube.com/embed/BZRZenaNr9A

По-добър ли е Linaro?

Въпреки че бях скептичен в началото, трябва да призная, че Linaro изглежда е по-добър избор от GCC поне за моята хардуерна конфигурация. ОС се чувстваше по-отзивчива и по-бърза, отколкото когато беше създадена с помощта на GCC. GCC обаче все още е стабилен, така че ако се нуждаете от максимална стабилност, той може да бъде най-добрият избор.

В следващите епизоди ще се опитам да сравня други вериги инструменти като SaberMod и Linaro 4.8. Моля, уведомете ни за любимите си вериги с инструменти в коментарите по-долу. И ако искате да тестваме други вериги с инструменти, моля, кажете го!