מדדים הם סוג המידע העיקרי שאפשר לחלץ מהשוואות לשוק. הם
מועברים אל measureRepeated
הפונקציה בתור List
, שמאפשרת
כמה מדדים נמדדים בו-זמנית. כדי להריץ את מדד הביצועים, נדרש לפחות סוג אחד של מדד.
קטע הקוד הבא מתעד את תזמון המסגרות ומדדים מותאמים אישית של קטעי המעקב:
Kotlin
benchmarkRule.measureRepeated( packageName = TARGET_PACKAGE, metrics = listOf( FrameTimingMetric(), TraceSectionMetric("RV CreateView"), TraceSectionMetric("RV OnBindView"), ), iterations = 5, // ... )
Java
benchmarkRule.measureRepeated( TARGET_PACKAGE, // packageName Arrays.asList( // metrics new StartupTimingMetric(), new TraceSectionMetric("RV CreateView"), new TraceSectionMetric("RV OnBindView"), ), 5, // Iterations // ... );
בדוגמה הזו, RV CreateView
ו-RV OnBindView
הם המזהים של בלוקים שניתן לעקוב אחריהם שמוגדרים
RecyclerView
. קוד המקור של השיטה createViewHolder()
הוא דוגמה לאופן שבו אפשר להגדיר בלוקים שניתן לעקוב אחריהם בקוד שלכם.
StartupTimingMetric
TraceSectionMetric
,
FrameTimingMetric
ו-PowerMetric
מכוסים
בהמשך המסמך הזה.
התוצאות של ההשוואה לשוק נשלחות ל-Android Studio, כפי שמוצג באיור 1. אם מוגדרים כמה מדדים, כולם משולבים בפלט.

TraceSectionMetric
ו-FrameTimingMetric
.StartupTimingMetric
המדד StartupTimingMetric
מתעד מדדים של תזמון ההפעלה של האפליקציה עם הערכים הבאים:
timeToInitialDisplayMs
: משך הזמן שעובר מהרגע שהמערכת מקבלת כוונת הפעלה כשהיא מעבדת את הפריים הראשון של היעדActivity
.timeToFullDisplayMs
: משך הזמן מהרגע שבו המערכת מקבלת כוונה להפעלה ועד שהאפליקציה מדווחת על ציור מלא באמצעות השיטהreportFullyDrawn()
. המדידה נעצרת בסיום העיבוד של המסגרת הראשונה אחרי קריאה ל-reportFullyDrawn()
או שמכילה אותה. הזה יכול להיות שאי אפשר יהיה לבצע מדידה ב-Android 10 (רמת API 29) ובגרסאות קודמות.
הפונקציה StartupTimingMetric
מפיקה את הערכים המינימלי, החציוני והמקסימלי מהחזרות של ההפעלה. כדי להעריך את השיפור בזמן ההפעלה, כדאי להתמקד בערכי החציון, כי הם מספקים את האומדן הטוב ביותר של זמן ההפעלה הממוצע. למידע נוסף על הגורמים שמשפיעים על זמן ההפעלה של האפליקציה, ראו זמן ההפעלה של האפליקציה.

StartupTimingMetric
תוצאות.FrameTimingMetric
הפונקציה FrameTimingMetric
מתעדת את פרטי התזמון מסגרות שנוצרו על ידי מדד ביצועים, כמו גלילה או אנימציה, ומפיקה את הערכים הבאים:
frameOverrunMs
: משך הזמן שבמהלכו תמונה מסוימת מפספסת את המועד האחרון שנקבע. מספרים חיוביים מעידים על נפילה על הפריים ועל תזוזות או רחיפה גלויים. מספרים שליליים מציינים את המהירות הרבה יותר גבוהה של פריים מאשר מועד ההגשה. הערה: התכונה הזו זמינה רק ב-Android 12 (רמת API 31) ואילך.frameDurationCpuMs
: כמה זמן עובר תהליך הפקה של הפריים את המעבד (CPU) גם ב-thread של ממשק המשתמש וגם ב-RenderThread
.
נתוני המדידה האלה נאספים בהתפלגות של ה-50, ה-90, ה-95 וה-99 אחוזון.
למידע נוסף על זיהוי פריימים איטיים ושיפור שלהם, ראו עיבוד איטי.

FrameTimingMetric
תוצאות.TraceSectionMetric
TraceSectionMetric
מתעד את מספר הפעמים שקטע מעקב תואם לפרמטר sectionName
שצוין
ומשך הזמן שנדרש לו. בזמן, הפונקציה מפיקה את הזמנים המינימלי, החציוני והמקסימלי באלפיות השנייה. קטע המעקב מוגדר על ידי קריאת הפונקציה trace(sectionName)
או על ידי הקוד בין Trace.beginSection(sectionName)
ל-Trace.endSection()
, או על ידי הגרסאות האסינכרוניות שלהם. תמיד נבחר המופע הראשון של קטע המעקב שצולם במהלך המדידה. כברירת מחדל, הפונקציה מפיקה רק קטעי מעקב מהחבילה. כדי לכלול תהליכים מחוץ לחבילה, צריך להגדיר את הערך targetPackageOnly = false
.
למידע נוסף על נתוני המעקב, ראו סקירה כללית של המערכת פרטי מעקב והגדרה של מעקב בהתאמה אישית אירועים.

TraceSectionMetric
תוצאות.PowerMetric
המשתנה PowerMetric
מתעד את השינוי בעוצמה או באנרגיה במהלך הבדיקה, בקטגוריות העוצמה שצוינו.
כל קטגוריה שנבחרה מחולקת לרכיבי המשנה המדדים שלה, וקטגוריות שלא נבחרו מתווספות למדד 'לא נבחר'.
המדדים האלה מודדים לצריכה בכל המערכת, ולא לצריכה לכל אפליקציה, והם מוגבלים במכשירי Pixel 6, Pixel 6 Pro ואילך:
power<category>Uw
: כמות האנרגיה שצרכת במהלך התקופה בקטגוריה הזאת.energy<category>Uws
: כמות האנרגיה שהועברה ליחידת זמן משך הבדיקה בקטגוריה זו.
הקטגוריות כוללות:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
בקטגוריות מסוימות, כמו CPU
, יכול להיות שיהיה קשה להפריד בין עבודה שבוצעה על ידי תהליכים אחרים לבין עבודה שבוצעה על ידי האפליקציה שלכם. כדי למזער את ההפרעה, כדאי להסיר או להגביל אפליקציות וחשבונות מיותרים.

PowerMetric
תוצאות.מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- יצירת פרופילים בסיסיים {:#Creating-profile-כללים}
- כתיבה של נקודת מאקרו בנצ'מרק
- ניתוח והתאמה אישית של הפעלת האפליקציה {:#app-startup-analysis-optimization}