מקרים לדוגמה

Monzo משפרת את מדדי הביצועים בשיעור של עד 35% באמצעות עדכון פשוט של R8

משך הקריאה: 2 דקות

‫Monzo הוא בנק דיגיטלי בבריטניה עם 15 מיליון לקוחות, והמספר הזה ממשיך לגדול. ככל שהאפליקציה גדלה, צוות ההנדסה זיהה שזמן ההפעלה של האפליקציה הוא תחום קריטי לשיפור, אבל חשש שזה ידרוש שינויים משמעותיים בבסיס הקוד.

הפעלת כל האופטימיזציות של R8 אפשרה ל-Monzo להפחית ב-35% את שיעור מקרי ה-ANR (האפליקציה לא מגיבה). השינוי הפשוט הזה הוכיח שאופטימיזציות משמעותיות לא תמיד דורשות מאמצי פיתוח מורכבים.

שיפור הביצועים באופן נרחב באמצעות מצב מלא של R8

ב-Monzo זיהו את המצב המלא של R8 כתיקון קל ששווה לנסות, וזה עבד. הביצועים השתפרו בכל התחומים:

  • אמינות ההפעלה: שיפור של 30% בהפעלות במצב התחלתי (cold start), של 24% בהפעלות במצב ביניים (warm start) ושל 14% בהפעלות מתוך הזיכרון (hot start).
  • מהירות ההפעלה: זמני ההפעלה של P50 השתפרו ב-11% וזמני ההפעלה של P90 השתפרו ב-12%.
  • יעילות: הגודל הכולל של האפליקציה הצטמצם ב-9%.
  • יציבות: ירידה של 35% במקרי ה-ANR.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

הפעלת אופטימיזציות באמצעות שינוי אחד

הרבה אפליקציות ל-Android משתמשות בקובץ תצורה מיושן שמוגדר כברירת מחדל, שמשבית את רוב הפונקציונליות של כלי האופטימיזציה R8. השינוי העיקרי שבוצע ב-Monzo כדי לשפר את הביצועים היה להחליף את קובץ ברירת המחדל proguard-android.txt בקובץ proguard-android-optimize.txt. השינוי הזה מסיר את ההוראה -dontoptimize ומאפשר ל-R8 לפעול כמו שצריך.

buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

אחרי השינוי הזה, כדאי לבדוק את קובצי התצורה של Keep. הקבצים האלה מציינים ל-R8 אילו חלקים בקוד לא לשנות (בדרך כלל כי הם נקראים באופן דינמי או על ידי ספריות חיצוניות). אם תסירו כללי שמירה מיותרים, R8 יוכל לעשות יותר.

שיפור ביצועי הגלילה באמצעות פרופילים של Baseline

כדי לשפר עוד יותר את חוויית המשתמש, Monzo הטמיעה פרופילים של Baseline, במיוחד כדי לשפר את ביצועי הגלילה והעיבוד בפיד הראשי. האסטרטגיה הזו הבטיחה שהתהליכים הנפוצים ביותר שעוברים המשתמשים – פתיחת האפליקציה וגלילה בפיד – עברו אופטימיזציה מלאה. ההשפעה על העיבוד הייתה משמעותית: ביצועי הגלילה של P90 השתפרו ב-71%, וביצועי הגלילה של P95 השתפרו ב-87%. עכשיו הגלילה באפליקציה חלקה יותר מבעבר.

ב-Monzo שילבו את זה בתהליך ההשקה כדי לשמור על השיפורים האלה לאורך זמן. "אנחנו מפעילים את היצירה של פרופיל Baseline בכל יום חול (לפני הפעלת גרסאות ה-build האוטומטיות שלנו) ומאשרים את השינויים האחרונים לאחר השלמת התהליך", מסביר נוימאייר.

התעדכנות ב-Modern Android Development

הניסיון של Monzo מראה מה אפשר לעשות כשמקפידים להתעדכן בהמלצות לכלי פיתוח ל-Android. אפליקציות מדור קודם מתקשות לפעמים עם שימוש מורכב ב-Reflection, אבל ב-Monzo גילו שהמעבר פשוט אם מתעדים את כללי ה-Keep כמו שצריך. "אנחנו תמיד מוסיפים הערה שמסבירה למה כללי השמירה קיימים, כדי שנדע מתי אפשר להסיר אותם בבטחה", מציין נוימאייר.

מה העצה של נוימאייר לצוותים אחרים? בודקים באופן קבוע את שיטות העבודה שלכם בהשוואה לסטנדרטים הנוכחיים: "כדאי לעיין בהמלצות העדכניות של Google לגבי ביצועי האפליקציה ולבדוק אם אתם פועלים לפי כל העצות העדכניות".

כדי להתחיל ולקבל מידע נוסף על R8, אפשר להיכנס לכתובת https://d.android.com/r8

כותב/ת המסמך:
להמשך קריאה