מקרים לדוגמה
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 שילבה את השיפור הזה בתהליך ההפצה שלה כדי לשמור על השיפורים האלה לאורך זמן. "אנחנו מפעילים את יצירת פרופיל הבסיס בכל יום חול (לפני הפעלת הבנייה היומית שלנו) ומבצעים את השינויים האחרונים אחרי שהיא מסתיימת", מסביר נומאייר.
התעדכנות בפיתוח מודרני של אפליקציות ל-Android
הניסיון של Monzo מראה מה אפשר להשיג כשמקפידים על ההמלצות לגבי כלי בנייה ל-Android. אפליקציות מדור קודם מתקשות בדרך כלל בשימוש מורכב ברפלקציה, אבל ב-Monzo מצאו שהמעבר פשוט כי הם תיעדו את כללי Keep בצורה נכונה. "אנחנו תמיד מוסיפים תגובה שמסבירה למה יש כללים ב-Keep, כדי שנדע מתי אפשר להסיר את הכללים", מציין נומאייר.
העצה של נומאייר לצוותים אחרים? בודקים באופן קבוע את השיטות שבהן אתם משתמשים בהשוואה לסטנדרטים הנוכחיים: "כדאי לעיין בהמלצות האחרונות של Google לגבי ביצועי האפליקציה ולבדוק אם אתם פועלים לפי כל העצות העדכניות".
כדי להתחיל ולהבין יותר על R8, אפשר לעבור לכתובת https://d.android.com/r8
להמשך הקריאה
-
מקרים לדוגמה
במהלך העבודה עם צוות Android Developer Relations, צוות ההנדסה ב-Reddit השתמש בציון ביצועי האפליקציה כדי להעריך את האפליקציה.
Ben Weiss • משך הקריאה: 4 דקות
-
מקרים לדוגמה
טיקטוק היא פלטפורמה גלובלית של סרטונים קצרים, שידועה בבסיס המשתמשים העצום שלה ובתכונות החדשניות שלה.
Ben Trengrove, Ajesh Pai • משך הקריאה: 2 דקות
-
מקרים לדוגמה
בעולם הדינמי של הרשתות החברתיות, תשומת הלב של המשתמשים נמשכת או נעלמת במהירות. האפליקציות של Meta (פייסבוק ואינסטגרם) הן בין הפלטפורמות החברתיות הגדולות בעולם, והן משרתות מיליארדי משתמשים ברחבי העולם.
Mayuri Khinvasara Khabya • משך הקריאה: 4 דקות
כדאי תמיד להיות בעניינים
רוצים לקבל טיפים עדכניים לפיתוח Android ישירות לאימייל כל שבוע?