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.
הפעלת אופטימיזציות באמצעות שינוי אחד
הרבה אפליקציות ל-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
-
מקרים לדוגמה Grab מפחיתה את שגיאות ה-ANR ב-32% ומשפרת את זמן ההפעלה ב-35% באמצעות R8 ואופטימיזציה מבוססת-פרופיל
Grab היא אפליקציית-העל המובילה בדרום-מזרח אסיה, שמציעה משלוחים, ניידות ושירותים פיננסיים למיליוני משתמשים בשמונה מדינות באמצעות אפליקציה אחת.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • משך הקריאה: 5 דקות -
מקרים לדוגמהוואטסאפ היא פלטפורמת ההודעות הגדולה בעולם, עם מיליארדי משתמשים ברחבי העולם. היא כלי התקשורת שמשמש כברירת מחדל אנשים באזורים שונים, ומחברת בין משתמשים באמצעות הודעות פרטיות, אמינות ומאובטחות.
Niharika Arora, Tracy Agyemang, Mayank Jain • משך הקריאה: 8 דקות -
מקרים לדוגמההמטרה של טינדר היא לעודד ולעורר השראה ליצירת קשרים אמיתיים, על ידי הפיכת המפגש לקל ומהנה לכל דור חדש של רווקים ורווקות.
Ajesh Pai, Ulises Uriel Verduzco Díaz , Tracy Agyemang • משך הקריאה: 4 דקות
רוצים לקבל טיפים עדכניים לפיתוח Android ישירות לאימייל כל שבוע?