יצירת פרופיל Microbenchmark

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

כדי לבחור את ההגדרה של הכלי למעקב ביצועים, מוסיפים את הארגומנט androidx.benchmark.profiling.mode של הכלי למעקב ביצועים עם אחד מהארגומנטים MethodTracing,‏ StackSampling או None, כפי שמוצג בקטע הקוד הבא.

מידע נוסף על האפשרויות זמין במאמר בחירת הגדרת הקלטה. הערך MethodTracing הוא המקביל ל-Trace Java Methods, והערך StackSampling הוא המקביל ל-Sample Java Methods כפי שהוגדר במסמך הזה.

Groovy

android {
    defaultConfig {
        // must be one of: 'None', 'StackSampling', or 'MethodTracing'
        testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling'
    }
}

Kotlin

android {
    defaultConfig {
        // must be one of: 'None', 'StackSampling', or 'MethodTracing'
        testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling"
    }
}

כשאתם יוצרים פרופיל של מדד ביצועים, קובץ הפלט .trace מועתק למארח בתיקייה לצד תוצאות ה-JSON. כדי לבדוק את תוצאות הניתוח ב-CPU Profiler ב-Android Studio, בוחרים באפשרות File (קובץ) > Open (פתיחה). מידע נוסף על קריאה והבנה של נתוני מעקב זמין במאמר בדיקת נתוני מעקב.

MethodTracing

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

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

StackSampling

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

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

ב-Android 10 (API 29) ואילך, הדגימה של סטאק מתבצעת באמצעות Simpleperf כדי לדגום סטאקי קריאות של אפליקציות, כולל קוד C++‎. ב-Android 9 (API 28) ובגרסאות ישנות יותר, המערכת משתמשת ב-Debug.startMethodTracingSampling כדי לתעד דוגמאות של סטאק.

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

  • androidx.benchmark.profiling.sampleFrequency

    • מספר הדגימות של ה-stack שרוצים לצלם בכל שנייה.
    • טיפוס הארגומנט: integer
    • ערך ברירת המחדל הוא 1,000 דגימות לשנייה.
  • androidx.benchmark.profiling.sampleDurationSeconds

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

ללא

הארגומנט הזה לא מתעד קובץ פרופיל. עדיין מתבצע מדידה של מידע על תזמון והקצאות.