Die Bedeutung einer optimierten Toolchain ist eines der heißesten Themen in der Android-Entwicklerwelt. Viele von Ihnen haben vielleicht von GCC und Linaro gehört, den beiden größten Projekten dieser Art. GCC ist ein alter Hase, der erstmals 1987 veröffentlicht wurde, während Linaro mit nur vier Jahren ein relativ junger Spieler ist.
Lassen Sie uns zunächst in die Geschichte dieser beiden Projekte eintauchen. Wie ich bereits sagte, ist die GNU Compiler Collection alt. Im Laufe der Jahre wurde es zum Kompilieren verschiedener Projekte verwendet, darunter auch Android. Google hat sich entschieden, die Versionen 4.6 und 4.7 als Standard-Toolchains zu verwenden, und ich möchte mich in dieser Testreihe auf Version 4.7 konzentrieren.
Linaro wurde 2010 eingeführt und für ARM-Architekturen optimiert. Und natürlich wird ARM in der überwiegenden Mehrheit der Android-Smartphones und -Tablets verwendet. Sie finden Linaro als Toolchain zum Kompilieren von Kerneln oder ganzen ROMs, und viele Entwickler behaupten, diese Toolchain sei schneller und leistungsfähiger als GCC.
Inspiriert von unserem Entwickler-Administrator Pulser_G2 habe ich beschlossen, diesem Mythos eine Chance zu geben und zu sehen, ob diese Behauptungen wahr sind. Dazu habe ich zunächst die AOSP-Quelle heruntergeladen. Ich habe eine gebaut aosp_mako-eng Ziel für mein Nexus 4 unter Verwendung des Standardsatzes vorgefertigter Elemente von Google. Nach ein OTA-Paket erstellen, Ich habe eine 183115481 Byte große ZIP-Datei zum Flashen bereit. Danach habe ich die Linaro 4.7.4-Toolchain heruntergeladen und GCC ersetzt prebuilts/gcc/linux-86. Ich habe die notwendigen Änderungen vorgenommen, um die Optimierungsstufe O3 festzulegen. Da AOSP nur vorgefertigte Kernel (ohne Änderungen) unterstützt, habe ich mit Linaro selbst einen Kernel erstellt und den Kernel im Mako-Kernel durch meinen eigenen Blob ersetzt.
Unten sehen Sie die beiden resultierenden Archive. Wie Sie sehen können, ist das Linaro-Archiv etwas größer, sodass diese Toolchain tatsächlich etwas mit den Ordnern bin und xbin macht. Auch die Kerneldatei selbst ist größer.
Aber die Dateigröße ist nicht das Wichtigste. Konzentrieren wir uns stattdessen auf die Leistung. Um dies zu messen, habe ich den AnTuTu-Benchmark verwendet. Um die Präzision zu erhöhen, habe ich jeden Test dreimal durchgeführt. Wie Sie unten sehen können, ist der Unterschied ziemlich groß. Allerdings würde ich diesen Tests nicht zu sehr blind vertrauen, da die Ergebnisse bei jedem Test unterschiedlich ausfielen. Allerdings war Linaro ein paar Punkte besser als GCC, aber AnTuTu ist nicht so zuverlässig, wie Sie vielleicht denken.
GCC
Linaro
Die folgenden Tests wurden mit 3DMark durchgeführt, um zu sehen, ob eine Toolchain Auswirkungen auf die Grafikleistung haben kann. Der Unterschied war noch deutlicher als bei Antutu. Mit GCC können Sie möglicherweise nur wenige FPS gewinnen, aber mit Linaro ist die Laufruhe insgesamt besser. Auch die Punktzahl ist etwas höher.
GCC
Linaro
Der letzte Test wurde mit dem Spiel Asphalt 8: Airborne durchgeführt. Unten sehen Sie zwei Videos des Spiels, das auf beiden Toolchains läuft. Der erste wurde mit Linaro hergestellt, der zweite mit GCC. Persönlich denke ich, dass sich Linaro etwas sanfter anfühlt als GCC, aber das könnte nur der Placebo-Effekt sein, da es sich nicht um einen Doppelblindtest handelte. Beide Kernel waren serienmäßig und ohne Optimierungen, Übertaktung oder andere ausgefallene Optimierungen zur Leistungsverbesserung.
//www.youtube.com/embed/BZRZenaNr9A
Ist Linaro also besser?
Obwohl ich zunächst skeptisch war, muss ich zugeben, dass Linaro zumindest hinsichtlich meiner Hardwarekonfiguration die bessere Wahl zu sein scheint als GCC. Das Betriebssystem fühlte sich reaktionsschneller und schneller an als bei der Erstellung mit GCC. Allerdings ist GCC immer noch absolut stabil. Wenn Sie also höchste Stabilität benötigen, ist es möglicherweise immer noch die beste Wahl.
In den nächsten Folgen werde ich versuchen, andere Toolchains wie SaberMod und Linaro 4.8 zu vergleichen. Bitte teilen Sie uns in den Kommentaren unten Ihre bevorzugten Toolchains mit. Und wenn Sie möchten, dass wir weitere Toolchains testen, sagen Sie es uns bitte!