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