Monzo משפרת את מדדי הביצועים בשיעור של עד 35% באמצעות עדכון פשוט של R8
משך קריאה: 2 דקות
Monzo הוא בנק דיגיטלי בבריטניה עם 15 מיליון לקוחות, והמספר הזה ממשיך לגדול. כשהאפליקציה גדלה, צוות ההנדסה זיהה את זמן ההפעלה של האפליקציה כנקודה קריטית לשיפור, אבל חשש שיידרשו שינויים משמעותיים בבסיס הקוד.
הפעלת האופטימיזציות של R8 באופן מלא אפשרה לחברת Monzo להשיג ירידה משמעותית של 35% בשיעור מקרי ה-ANR (האפליקציה לא מגיבה). השינוי הפשוט הזה הוכיח שאופטימיזציות משמעותיות לא תמיד דורשות מאמצי תכנות מורכבים.
שיפורים משמעותיים בביצועים באמצעות המצב המלא של R8
ב-Monzo זיהו שמצב מלא של R8 הוא פתרון פשוט שכדאי לנסות, והוא עבד. הביצועים השתפרו בכל התחומים:
- מהימנות ההפעלה: הפעלות במצב התחלתי (cold start) השתפרו ב-30%, הפעלות במצב ביניים (warm start) ב-24% והפעלות מתוך הזיכרון (hot start) ב-14%.
- מהירות ההשקה: זמני ההשקה של 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
-
מקרים לדוגמהKarrot היא אפליקציה של זירת מסחר בין עמיתים (P2P) שמבוססת על קהילה מקומית. האפליקציה מאפשרת למשתמשים לקנות, למכור ולסחור בפריטים עם משתמשים מאומתים אחרים. מאז ההשקה בדרום קוריאה בשנת 2015, הפלטפורמה התרחבה לשווקים גלובליים וצברה יותר מ-43 מיליון משתמשים רשומים.
Thomas Ezan, Tracy Agyemang • משך הקריאה: 2 דקות -
מקרים לדוגמהבעולם הדינמי של הרשתות החברתיות, תשומת הלב של המשתמשים נמשכת או נעלמת במהירות. האפליקציות של Meta (פייסבוק ואינסטגרם) הן בין הפלטפורמות החברתיות הגדולות בעולם, והן משרתות מיליארדי משתמשים ברחבי העולם.
Mayuri Khinvasara Khabya, Tracy Agyemang • משך הקריאה: 4 דקות -
מקרים לדוגמהכשמפתחים אפליקציית Android למכשיר לביש, העבודה האמיתית מתחילה כשהמסך כבוי.
Breana Tate, Tracy Agyemang • משך הקריאה: 4 דקות
רוצים לקבל טיפים עדכניים לפיתוח Android ישירות לאימייל כל שבוע?