אירועים ותוכניות

אופטימיזציה מלאה: סיכום שבוע ההדגשה של הביצועים

3 דקות קריאה
לצפייה בפרופיל של בן וייס צפייה בפרופיל של צ'ארלס מאנגר
Ben Weiss & Sara Hamilton

במהלך השבוע האחרון התמקדנו בשיתוף שיטות מומלצות והנחיות שיעזרו לכם ליצור אפליקציות ל-Android מהירות, קטנות ויציבות יותר. התחלנו עם היכולות הבסיסיות של כלי האופטימיזציה R8 ושל אופטימיזציות מבוססות פרופיל,המשכנו לשיפורים בביצועים באמצעות Jetpack Compose, וסיימנו במדריך חדש לשיפור הביצועים של האפליקציה. כלומר, כיסינו את הכלים שנדרשים כדי ליצור אפליקציה עם ביצועים טובים, שהם פשוטים לשימוש ומניבים תוצאות משמעותיות.

הפוסט הזה הוא מעין אינדקס ומפת דרכים שיעזרו לכם לחזור למקורות המידע האלה בכל פעם שתרצו לבצע אופטימיזציה. אלו חמש המסקנות העיקריות מהמסע המשותף שלנו.

שימוש ב-R8 Optimizer כדי להאיץ את האפליקציה

השינוי הכי משמעותי שתוכלו לבצע בלי להתאמץ יותר מדי הוא הפעלה מלאה של R8 Optimizer. הכלי לא רק מקטין את גודל האפליקציה, אלא גם מבצע אופטימיזציות מעמיקות בכל התוכנית כדי לשכתב את הקוד בצורה יעילה. כדאי לעיין שוב בכללי Keep ולהחזיר את R8 למשימות ההנדסיות.

התיעוד המעודכן והמורחב שלנו בנושא R8 Optimizer יעזור לכם.

ב-Reddit דיווחו על קיצור של 40% בזמן הטעינה של האפליקציה במצב התחלתי (cold start) ועל ירידה של 30% במספר השגיאות מסוג ANR אחרי שהפעילו את המצב המלא של R8.

אפשר לקרוא את המקרה לדוגמה המלא בבלוג שלנו.

image.png

מהנדסים ב-Disney+ משקיעים בביצועים של האפליקציה ומבצעים אופטימיזציה של חוויית המשתמש באפליקציה. לפעמים אפילו שינויים שנראים קטנים יכולים להשפיע באופן משמעותי. במהלך הבדיקה של הגדרות R8, הצוות גילה שהדגל -dontoptimize היה בשימוש. אחרי שהסירו את הדגל הזה והפעילו אופטימיזציות, צוות Disney+ הבחין בשיפורים משמעותיים בביצועים של האפליקציה.

image.png

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

מידע נוסף זמין בפוסט בבלוג בנושא היום הראשון: שימוש ב-R8 כדי לצמצם, לבצע אופטימיזציה ולהאיץ את האפליקציה

עזרה בשיפור הביצועים

פרופילים של Baseline מייתרים את הצורך בקימפול Just in Time, וכך משפרים את מהירות ההפעלה, הגלילה, האנימציה וביצועי העיבוד הכוללים. פרופילים להפעלה הופכים את הפעלת האפליקציה לקלה עוד יותר, כי הם מסדרים בצורה חכמה את קובצי ה-classes.dex של האפליקציה.

כדי להבין עד כמה פרופילים של Baseline חשובים לביצועי האפליקציה, אפשר לקרוא את בלוג ההנדסה של Meta שבו הם שיתפו איך פרופילים של Baseline שיפרו מדדי ביצועים קריטיים שונים בשיעור של עד 40% באפליקציות שלהם.

אנחנו ממשיכים לשפר את הביצועים של Jetpack Compose ב-Jetpack Compose 1.10. תכונות כמו השהיית ההרכבה וחלון המטמון שניתן להתאמה אישית הן חיוניות לשמירה על ביצועים חלקים של גלילה כשעובדים עם פריטים מורכבים ברשימה.אפשר לצפות בפרק האחרון של #TheAndroidShow כדי לקבל הסבר מפורט יותר.

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום רביעי: שיקולים מעמיקים יותר לגבי ביצועים

מדידת הביצועים יכולה להיות פשוטה כמו 1, 2, 3

אי אפשר לנהל את מה שלא מודדים. מדריך לשיפור הביצועים מחלק את תהליך המדידה לחמישה שלבים, החל מנתונים שזמינים בקלות ועד לכלים מקומיים מתקדמים.

ברמה 1, נלמד אתכם איך להשתמש בנתונים שזמינים בקלות מ-Android Vitals, שכולל נתונים מהשטח לגבי ANR, קריסות ושימוש מוגזם בסוללה.

בנוסף, נלמד אתכם איך לעלות רמה. לדוגמה, נראה איך מגיעים לרמה 3 באמצעות בדיקת ביצועים מקומית עם Jetpack Macrobenchmark וממשק ה-API החדש UiAutomator 2.4 כדי למדוד ולאמת בצורה מדויקת כל שינוי בביצועים של האפליקציה.

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום חמישי: [Link to Thursday's Blog: Leveling Guide for your Performance Journey]

שדרוג של ניפוי באגים בביצועים

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

Automatic Logcat Retrace

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

צמצום הכללים של Keep

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

בנוסף, יש ב-Android Studio Otter 3 Feature Drop בדיקת lint חדשה לכללי שמירה רחבים, כך שגם כאן יש לכם פתרון.

image.png

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

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום שלישי: הגדרה ופתרון בעיות של כללי שמירה ב-R8

עבודה ברקע

שיתפנו הנחיות לניפוי באגים בתרחישים נפוצים שאתם עשויים להיתקל בהם כשאתם מתזמנים משימות באמצעות WorkManager.

Background Task Inspector מספק ייצוג חזותי ותצוגת גרף של משימות WorkManager, ועוזר לנפות באגים כדי להבין למה עבודה מתוזמנת מתעכבת או נכשלת. בנוסף, בדף הנחיתה של המסמכים המעודכנים בנושא עבודה ברקע מודגשים ממשקי API ספציפיים למשימות שעברו אופטימיזציה לתרחישי שימוש מסוימים, כדי לעזור לכם להשיג ביצועים אמינים יותר.
 

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום רביעי: שיקולים לגבי ביצועים של עבודות ברקע

אופטימיזציה של הביצועים היא תהליך מתמשך

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

סיימנו את השבוע עם סשן שאלות ותשובות בשידור חי #AskAndroid Live, שבו מהנדסים ענו על השאלות הכי קשות שלכם בנושא R8, אופטימיזציות מבוססות פרופיל ועוד. פספסתם? חפשו את השידור החוזר!

תודה שהצטרפת אלינו! עכשיו אפשר להתחיל ליצור ולשמור על המומנטום.

נכתב על ידי:
להמשך קריאה