Важливість оптимізованого інструментарію є однією з найактуальніших тем у світі розробників Android. Багато з вас, можливо, чули про GCC і Linaro, які є двома найбільшими проектами такого типу. GCC — це стара рука, яка спочатку була випущена в 1987 році, тоді як Linaro — відносно молодий гравець, якому лише чотири роки.
Давайте спочатку зануримося в історію цих двох проектів. Як я вже говорив раніше, колекція компіляторів GNU застаріла. Протягом багатьох років він використовувався для компіляції різних проектів, включаючи Android. Google вирішив використовувати версії 4.6 і 4.7 як стандартні інструменти, і я хотів би зосередитися на версії 4.7 у цій серії тестів.
Linaro було запущено в 2010 році та оптимізовано для архітектур ARM. І, звичайно, ARM використовується в переважній більшості смартфонів і планшетів на базі Android. Ви можете знайти Linaro як інструментарій, який використовується для компіляції ядер або цілих ПЗУ, і багато розробників стверджують, що цей інструментарій швидший і потужніший, ніж 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 здається кращим вибором, ніж GCC, принаймні щодо моєї апаратної конфігурації. ОС стала більш чуйною та швидшою, ніж коли її створювали за допомогою GCC. Однак GCC все ще надійний, тому, якщо вам потрібна максимальна стабільність, це може бути найкращим вибором.
У наступних епізодах я спробую порівняти інші інструменти, такі як SaberMod і Linaro 4.8. Будь ласка, повідомте нам про ваші улюблені інструменти в коментарях нижче. І якщо ви бажаєте, щоб ми протестували будь-які інші інструментальні ланцюги, скажіть про це!