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

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

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

מידע נוסף על האפשרויות זמין במאמר תיעוד שיטות Java/Kotlin. MethodTracing הוא המקבילה ל-tracing, ו-StackSampling הוא המקבילה ל-sampling כפי שהם מוגדרים במסמך הזה.

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. כדי לבדוק את תוצאות הפרופיל ב-Android Studio, בוחרים בקישור Method Trace או Stack Sampling Trace בתוצאות של מיקרו-בדיקת הביצועים.

MethodTracing

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

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

מעקב אחר שיטות מופעל כברירת מחדל.

הערה: בגרסאות מסוימות של Android OS ו-ART, מעקב אחר שיטות מושבת כברירת מחדל. במקרים כאלה, מערכת Android Studio תציג אזהרה.

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 שניות.
  • androidx.benchmark.profiling.skipWhenDurationRisksAnr

    • דילוג על מעקב אחר שיטות כשסביר להניח שהוא יגרום ל-ANR. מומלץ להשאיר את ההגדרה הזו מופעלת להרצות של CI, כי שגיאות ANR עלולות לגרום לבעיות במהלך הרצות ארוכות של CI.
    • טיפוס הארגומנט: boolean
    • ברירת המחדל היא true

ללא

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