החשיבות של שרשרת כלים מותאמת היא אחד הנושאים החמים ביותר בעולם המפתחים של אנדרואיד. רבים מכם אולי שמעו על GCC ו-Linaro, שהם שני הפרויקטים הגדולים מסוג זה. GCC הוא יד ותיקה שיצאה בתחילה ב-1987, בעוד Linaro הוא שחקן צעיר יחסית בגיל ארבע בלבד.
בואו נצלול תחילה אל ההיסטוריה של שני הפרויקטים הללו. כפי שאמרתי קודם, אוסף המהדר של GNU ישן. במהלך השנים הוא שימש להידור של פרויקטים שונים, כולל אנדרואיד. גוגל החליטה להשתמש בגרסאות 4.6 ו-4.7 בתור שרשרת הכלים המוגדרת כברירת מחדל, ואני רוצה להתמקד בגרסה 4.7 בסדרת הבדיקות הזו.
Linaro הושק בשנת 2010, והוא עבר אופטימיזציה עבור ארכיטקטורות ARM. וכמובן, ARM נמצא בשימוש ברוב המכריע של הסמארטפונים והטאבלטים המופעלים על ידי אנדרואיד. אתה יכול למצוא את Linaro כשרשרת כלים המשמשת להידור ליבות או ROM שלמים, ומפתחים רבים טוענים ששרשרת הכלים הזו מהירה וחזקה יותר מ-GCC.
בהשראת מנהל המפתח שלנו Pulser_G2, החלטתי לנסות את המיתוס הזה ולראות אם הטענות האלה אמיתיות. לשם כך, הורדתי תחילה את מקור ה-AOSP. בניתי א aosp_mako-eng היעד עבור ה-Nexus 4 שלי באמצעות ערכת ברירת המחדל של פריטים מוקדמים מ-Google. לאחר
לעשות otapackage, יש לי קובץ zip של 183115481 בתים מוכן להבהב. לאחר מכן, הורדתי את שרשרת הכלים Linaro 4.7.4 והחלפתי את GCC ב prebuilts/gcc/linux-86. ביצעתי את השינויים הדרושים להגדרת רמת O3 של אופטימיזציה. מכיוון ש-AOSP תומך רק בליעינים מובנים מראש (ללא שינויים), בניתי ליבה לבד עם Linaro והחלפתי את הקרנל ב-mako-kernel ב-blob שלי.להלן תוכלו לראות את שני הארכיונים שנוצרו. כפי שאתה יכול לראות, ארכיון Linaro מעט גדול יותר, כך ששרשרת הכלים הזו למעשה עושה משהו לתיקיות bin ו-xbin. גם קובץ הליבה עצמו גדול יותר.
אבל גודל הקובץ הוא לא הדבר החשוב ביותר. במקום זאת, בואו נתמקד בביצועים. כדי למדוד זאת, השתמשתי ב-AnTuTu benchmark. למען דיוק מוגבר, רצתי כל מבחן שלוש פעמים. כפי שניתן לראות להלן, ההבדל הוא די גדול. עם זאת, לא הייתי נותן יותר מדי אמון עיוור בבדיקות הללו, מכיוון שהתוצאות היו שונות בכל בדיקה. עם זאת, Linaro היה טוב בכמה נקודות מ-GCC אבל AnTuTu לא כל כך אמין כפי שאתה עשוי לחשוב.
GCC
לינארו
הבדיקות הבאות בוצעו עם 3DMark כדי לראות אם שרשרת כלים יכולה להשפיע על הביצועים הגרפיים. ההבדל היה אפילו יותר משמעותי מאשר עם Antutu. אתה עשוי להרוויח מעט FPS עם GCC, אבל החלקות הכללית טובה יותר עם Linaro. הציון גם קצת יותר גבוה.
GCC
לינארו
המבחן הסופי נערך באמצעות המשחק Asphalt 8: Airborne. למטה תוכלו לראות שני סרטונים של המשחק שפועלים בשני רשתות הכלים. הראשון נעשה עם Linaro, ואילו השני עם GCC. באופן אישי, אני חושב שלינארו מרגיש קצת יותר חלק מ-GCC, אבל זה יכול להיות רק אפקט הפלצבו מכיוון שזו לא הייתה בדיקה כפולה סמיות. שני הגרעינים היו מלאים וללא שינויים, אוברקלוקינג וכל תיקון מפואר אחר כדי לשפר את הביצועים.
//www.youtube.com/embed/BZRZenaNr9A
אז לינרו טוב יותר?
למרות שהייתי סקפטי בהתחלה, אני חייב להודות שלינארו נראה כבחירה טובה יותר מ-GCC לפחות בתצורת החומרה שלי. מערכת ההפעלה הרגישה מגיבה ומהירה יותר מאשר כשהיא נבנתה באמצעות GCC. עם זאת, GCC עדיין מוצק, כך שאם אתה זקוק ליציבות אולטימטיבית, ייתכן שזו עדיין הבחירה הטובה ביותר.
בפרקים הבאים אנסה להשוות בין שרשרת כלים אחרת כמו SaberMod ו-Linaro 4.8. אנא ספר לנו על שרשרת הכלים המועדפת עליך בהערות למטה. ואם תרצו שנבדוק שרשרת כלים אחרת, אנא אמרו זאת!