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

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

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

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

מגניב

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"
    }
}

כשמבצעים תיעוד של השוואה (benchmark), קובץ הפלט .trace מועתק למארח בספרייה לצד תוצאות JSON. כדי לבדוק את תוצאות הפרופילים ב-Android Studio, בוחרים בקישור Method Trace או Stack Sampling Trace בתוצאות של המיקרו-בנצ'מרק.

MethodTracing

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

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

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

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

StackSampling

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

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

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

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

  • androidx.benchmark.profiling.sampleFrequency

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

    • משך הזמן של הערכת הביצועים להרצה.
    • סוג הארגומנט: מספר שלם
    • ברירת המחדל היא 5 שניות.
  • androidx.benchmark.profiling.skipWhenDurationRisksAnr

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

ללא

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