XDA Myth Busters: Linaro 4.7.4 vs. GCC 4.7

Η σημασία μιας βελτιστοποιημένης αλυσίδας εργαλείων είναι ένα από τα πιο καυτά θέματα στον κόσμο των προγραμματιστών Android. Πολλοί από εσάς μπορεί να έχετε ακούσει για το GCC και το Linaro, που είναι τα δύο μεγαλύτερα έργα αυτού του τύπου. Το GCC είναι ένα παλιό χέρι που κυκλοφόρησε αρχικά το 1987, ενώ ο Linaro είναι ένας σχετικά νέος παίκτης μόλις τεσσάρων ετών.

Ας βουτήξουμε πρώτα στην ιστορία αυτών των δύο έργων. Όπως είπα νωρίτερα, η συλλογή GNU Compiler είναι παλιά. Με τα χρόνια, έχει χρησιμοποιηθεί για τη μεταγλώττιση διαφόρων έργων, συμπεριλαμβανομένου του Android. Η Google αποφάσισε να χρησιμοποιήσει τις εκδόσεις 4.6 και 4.7 ως τις προεπιλεγμένες αλυσίδες εργαλείων της και θα ήθελα να εστιάσω στην έκδοση 4.7 σε αυτήν τη σειρά δοκιμών.

Το Linaro κυκλοφόρησε το 2010 και έχει βελτιστοποιηθεί για αρχιτεκτονικές ARM. Και φυσικά, το ARM χρησιμοποιείται στη συντριπτική πλειοψηφία των smartphone και tablet με Android. Μπορείτε να βρείτε το Linaro ως μια αλυσίδα εργαλείων που χρησιμοποιείται για τη μεταγλώττιση πυρήνων ή ολόκληρων ROM, και πολλοί προγραμματιστές ισχυρίζονται ότι αυτή η αλυσίδα εργαλείων είναι ταχύτερη και πιο ισχυρή από το GCC.

Με έμπνευση από τον διαχειριστή προγραμματιστή Pulser_G2, αποφάσισα να δώσω μια ευκαιρία σε αυτόν τον μύθο και να δω αν αυτοί οι ισχυρισμοί είναι αληθινοί. Για να γίνει αυτό, κατέβασα πρώτα την πηγή AOSP. έχτισα ένα aosp_mako-eng στόχος για το Nexus 4 μου χρησιμοποιώντας το προεπιλεγμένο σύνολο προκατασκευασμένων από την Google. Μετά φτιάξτε ένα πακέτο, Έλαβα αρχείο zip 183115481 byte έτοιμο να αναβοσβήνει. Μετά, κατέβασα την αλυσίδα εργαλείων Linaro 4.7.4 και αντικατέστησα το GCC στο prebuilts/gcc/linux-86. Έκανα τις απαραίτητες αλλαγές για να ορίσω το επίπεδο O3 της βελτιστοποίησης. Καθώς το AOSP υποστηρίζει μόνο προκατασκευασμένους πυρήνες (χωρίς τροποποιήσεις), έχτισα μόνος μου έναν πυρήνα με το Linaro και αντικατέστησα τον πυρήνα στο mako-kernel με το δικό μου blob.

 Παρακάτω μπορείτε να δείτε τα δύο αρχεία που προέκυψαν. Όπως μπορείτε να δείτε, το αρχείο Linaro είναι ελαφρώς μεγαλύτερο, επομένως αυτή η αλυσίδα εργαλείων κάνει κάτι στους φακέλους bin και xbin. Το ίδιο το αρχείο του πυρήνα είναι επίσης μεγαλύτερο.

Αλλά το μέγεθος του αρχείου δεν είναι το πιο σημαντικό πράγμα. Αντίθετα, ας εστιάσουμε στην απόδοση. Για να το μετρήσω αυτό, χρησιμοποίησα το σημείο αναφοράς AnTuTu. Για μεγαλύτερη ακρίβεια, έκανα κάθε δοκιμή τρεις φορές. Όπως μπορείτε να δείτε παρακάτω, η διαφορά είναι αρκετά μεγάλη. Ωστόσο, δεν θα πίστευα πολύ τυφλή σε αυτά τα τεστ, καθώς τα αποτελέσματα διέφεραν σε κάθε τεστ. Τούτου λεχθέντος, το Linaro ήταν λίγους βαθμούς καλύτερο από το GCC, αλλά το AnTuTu δεν είναι τόσο αξιόπιστο όσο νομίζετε.

GCC

Λινάρο

Οι ακόλουθες δοκιμές πραγματοποιήθηκαν με το 3DMark για να διαπιστωθεί εάν μια αλυσίδα εργαλείων μπορεί να επηρεάσει την απόδοση των γραφικών. Η διαφορά ήταν ακόμη πιο σημαντική από ό, τι με τον Antutu. Μπορεί να κερδίσετε λίγα FPS με το GCC, αλλά η συνολική ομαλότητα είναι καλύτερη με το Linaro. Η βαθμολογία είναι επίσης λίγο μεγαλύτερη.

GCC

Λινάρο

Η τελική δοκιμή εκτελέστηκε χρησιμοποιώντας το παιχνίδι Asphalt 8: Airborne. Παρακάτω μπορείτε να δείτε δύο βίντεο του παιχνιδιού που τρέχει και στις δύο αλυσίδες εργαλείων. Το πρώτο έγινε με Linaro, ενώ το δεύτερο με GCC. Προσωπικά, πιστεύω ότι το Linaro αισθάνεται λίγο πιο ομαλό από το GCC, αλλά αυτό μπορεί να είναι απλώς το φαινόμενο εικονικού φαρμάκου, καθώς αυτό δεν ήταν ένα διπλό τυφλό τεστ. Και οι δύο πυρήνες ήταν απόθεμα και δεν είχαν τροποποιήσεις, overclocking και οποιεσδήποτε άλλες φανταχτερές τροποποιήσεις για τη βελτίωση της απόδοσης.

//www.youtube.com/embed/BZRZenaNr9A

Είναι λοιπόν καλύτερο το Linaro;

Αν και ήμουν δύσπιστος στην αρχή, πρέπει να παραδεχτώ ότι το Linaro φαίνεται να είναι καλύτερη επιλογή από το GCC τουλάχιστον όσον αφορά τη διαμόρφωση του υλικού μου. Το λειτουργικό σύστημα είχε μεγαλύτερη απόκριση και ταχύτερη από ό, τι όταν κατασκευάστηκε με χρήση του GCC. Ωστόσο, το GCC εξακολουθεί να είναι στερεό, οπότε αν χρειάζεστε απόλυτη σταθερότητα, μπορεί να εξακολουθεί να είναι η καλύτερη επιλογή.

Στα επόμενα επεισόδια, θα προσπαθήσω να συγκρίνω άλλες αλυσίδες εργαλείων όπως το SaberMod και το Linaro 4.8. Ενημερώστε μας για τις αγαπημένες σας αλυσίδες εργαλείων στα παρακάτω σχόλια. Και αν θέλετε να δοκιμάσουμε άλλες αλυσίδες εργαλείων, πείτε το!