יצירת פרופיל 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

ללא

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