Jetpack Compose מספק ביצועים מצוינים מחוץ לקופסה. כדי להימנע מטעויות נפוצות ולשפר את הביצועים של אפליקציית Compose, מומלץ להגדיר את האפליקציה באמצעות שיטות מומלצות.
השוואה לשוק ב-Jetpack Compose
כדי לאמת את הביצועים של Jetpack Compose בהשוואה ל-Views, אנחנו משתמשים במדדי ביצועים מרכזיים – מדדי ביצועים שמתמקדים בתרחישי שימוש חשובים מהעולם האמיתי, כמו הפעלה ראשונית של אפליקציה או גלילה ברשימה או ברשת עם תמונות. אנחנו מבצעים את ההשוואה הזו באמצעות אפליקציית הקוד הפתוח Pokedex, ומשווים בין ההטמעות של Views ושל Compose.
המדדים האלה מראים שגרסה Compose 1.9 ואילך תואמת לביצועי Views מבחינת jank בזמן גלילה.
מדדים נוספים ומידע על המתודולוגיות שלנו זמינים במאמר השוואות לשוק.
מושגים מרכזיים
אלה כמה מהמושגים המרכזיים שקשורים לביצועים ב-Compose:
- שלבים: כדי לייעל את האופן שבו Compose מעדכן את ממשק המשתמש, חשוב להבין את שלבי הקומפוזיציה, הפריסה והציור.
- פרופילים של Baseline: הפרופילים האלה מבצעים קומפילציה מראש של קוד חיוני, וכך משיגים הפעלה מהירה יותר של האפליקציה ואינטראקציות חלקות יותר.
- יציבות: שיפור היציבות של האפליקציה כדי לדלג בצורה יעילה יותר על קומפוזיציות מיותרות, וכך לשפר את הביצועים.
הגדרת האפליקציה בצורה נכונה
אם הביצועים של האפליקציה נמוכים, יכול להיות שיש בעיה בהגדרות. מומלץ להתחיל בבדיקת אפשרויות ההגדרה הבאות:
- בנייה במצב הפצה באמצעות R8: נסו להריץ את האפליקציה במצב הפצה. מצב ניפוי הבאגים שימושי לזיהוי בעיות רבות, אבל הוא פוגע בביצועים ויכול להקשות על זיהוי בעיות אחרות. כדאי גם להפעיל אופטימיזציה וכיווץ באמצעות קומפיילר R8 כדי להבטיח שגרסת ה-build להפצה תהיה יעילה ובעלת ביצועים טובים.
- שימוש בפרופילים של Baseline: פרופילים של Baseline משפרים את הביצועים על ידי קומפילציה מראש של קוד לתהליכי משתמשים קריטיים. Compose כולל פרופיל ברירת מחדל, אבל מומלץ ליצור גם פרופיל ספציפי לאפליקציה. מידע נוסף על פרופילים של Baseline במסמכי הביצועים הכלליים של Android
כלים
כדאי להכיר את חבילת הכלים שעומדת לרשותכם כדי למדוד ולנתח את הביצועים של אפליקציית Compose.
שיטות מומלצות
כשמפתחים אפליקציה באמצעות Compose, חשוב לזכור את השיטות המומלצות הבאות:
- לא מבצעים חישובים יקרים: משתמשים בפונקציה
rememberכדי לשמור במטמון את התוצאות של חישובים יקרים. - עזרה לפריסות עצלות: כדי למזער את מספר ההרכבות מחדש המיותרות, צריך לספק מפתחות יציבים לפריסות עצלות באמצעות הפרמטר
key. - הגבלת הרכבות מחדש לא נחוצות: אפשר להשתמש ב-
derivedStateOfכדי להגביל הרכבות מחדש כשמבצעים שינויים מהירים במצב. - דחיית קריאות של מצב: דוחים את הקריאות של מצב כמה שאפשר על ידי הוספתן לפונקציות למבדה.
- שימוש במאפייני lambda לשינוי מצב: כדאי להשתמש במאפייני lambda כמו
Modifier.offset { ... }לשינוי משתני מצב לעיתים קרובות. - הימנעות מכתיבה לאחור: אל תכתבו לעולם למצב שכבר נקרא בקומפוזיציה.
מידע נוסף זמין במדריך שיטות מומלצות.
צפיות
אם אתם עובדים עם Views במקום עם Compose, כדאי לעיין במדריך הייעודי בנושא שיפור הביצועים של פריסת הרכיבים.
מקורות מידע נוספים
- מדריך לביצועי האפליקציה: כאן תמצאו שיטות מומלצות, ספריות וכלים לשיפור הביצועים ב-Android.
- בדיקת הביצועים: בדיקת ביצועי האפליקציה.
- השוואה לשוק: השוואה של ביצועי האפליקציה לשוק.
- הפעלת האפליקציה: אופטימיזציה של הפעלת האפליקציה.
- פרופילים של Baseline: הסבר על פרופילים של Baseline.