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

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

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

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

מגניב

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

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

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

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 שניות.

ללא

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