בדיקת ביצועים היא דרך לבדוק ולעקוב אחרי הביצועים של האפליקציה. אפשר להריץ בדיקות ביצועים באופן קבוע כדי לנתח ולפתור בעיות בביצועים, וכדי לוודא שלא יהיו נסיגות בביצועים בעקבות שינויים שבוצעו לאחרונה.
ב-Android יש שתי ספריות למדדי ביצועים ושני גישות לניתוח ולבדיקה של מצבים שונים באפליקציה: Macrobenchmark ו-Microbenchmark.
Macrobenchmark
הספרייה Macrobenchmark מודדת אינטראקציות גדולות יותר של משתמשי קצה, כמו הפעלה, אינטראקציה עם ממשק המשתמש ואנימציות. הספרייה מספקת שליטה ישירה על סביבת הביצועים שבודקים. הוא מאפשר לכם לשלוט בתהליך הידור הקוד, להפעיל ולהפסיק את האפליקציה ולמדוד ישירות את ההפעלה או הגלילה בפועל של האפליקציה.
ספריית Macrobenchmark מחדירה אירועים ועוקבת אחרי התוצאות מאפליקציית בדיקה שמורכבת מהבדיקות שלכם. לכן, כשכותבים את נקודות השוואה, לא קוראים ישירות לקוד של האפליקציה, אלא מנווטים באפליקציה כמשתמשים.
בנצ'מרק מיקרו
הספרייה Microbenchmark מאפשרת לבצע בדיקת ביצועים של קוד האפליקציה ישירות בלולאה. המדד הזה מיועד למדידת העבודה של המעבד, שמאפשר להעריך את הביצועים הטובים ביותר – כמו חימום של JIT (Just in Time) וגישה לדיסק במטמון – שעשויים להתרחש בלולאה פנימית או בפונקציה פופולרית ספציפית. הספרייה יכולה למדוד רק את הקוד שאפשר להפעיל ישירות בנפרד.
אם האפליקציה שלכם צריכה לעבד מבנה נתונים מורכב, או שיש לה אלגוריתם ספציפי שמבוסס על חישובים כבדים שנקרא מספר פעמים במהלך הפעלת האפליקציה, אלה יכולים להיות מקרים טובים לבדיקת ביצועים. אפשר גם למדוד חלקים בממשק המשתמש. לדוגמה, אפשר למדוד את העלות של קישור הפריט RecyclerView
, את משך הזמן הנדרש להנפת פריסה או את מידת הדרישה של שלב הפריסה והמדידה של הכיתה View
מבחינת ביצועים.
עם זאת, אי אפשר למדוד את התרומה של המקרים להשוואה לחוויית המשתמש הכוללת. בחלק מהתרחישים, בדיקת הביצועים לא מאפשרת לדעת אם אתם משתפרים בנקודת צווארון בקבוק, כמו תנודות חדות או זמן הפעלה של האפליקציה. לכן, חשוב קודם לזהות את צווארי הבקבוק האלה באמצעות Android Profiler. אחרי שמוצאים את הקוד שרוצים לבדוק ולבצע בו אופטימיזציה, אפשר להריץ את הלולאה שנבדקה שוב ושוב בצורה מהירה וקלה יותר כדי ליצור תוצאות עם פחות רעשי רקע, וכך להתמקד בתחום אחד לשיפור.
ספריית המיקרובנצ'מרק מדווחת רק על מידע על האפליקציה, ולא על המערכת באופן כללי. לכן עדיף לנתח את הביצועים של מצבים ספציפיים לאפליקציה, ולא של מצבים שקשורים לכל הבעיות במערכת.
השוואת ספריות של נקודות השוואה
Macrobenchmark | מיקרו-בנצ'מרק | |
---|---|---|
גרסת ממשק API | 23 ואילך | 14 ומעלה |
פעולה | מודדים נקודות כניסה או אינטראקציות ברמה גבוהה, כמו השקת פעילות או גלילה ברשימה. | למדוד פונקציות נפרדות. |
היקף | בדיקה מחוץ לתהליך של האפליקציה המלאה. | בדיקה בזמן אמת של עבודה של מעבד (CPU). |
מהירות | מהירות איטרציה בינונית. הוא יכול להימשך יותר מדקה. | מהירות איטרציה מהירה. לעיתים קרובות פחות מ-10 שניות. |
מבצע מעקב | התוצאות מגיעות עם עקבות של יצירת פרופילים. | מעקב ודגימה של שיטות אופציונליות. |
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- יצירת פרופילים בסיסיים {:#creating-profile-rules}
- ספריית JenkStats
- סקירה כללית על מדידת ביצועי האפליקציה