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

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

כדי לבחור את הגדרת הפרופילr, יש להוסיף את האינסטרומנטציה ארגומנט מפעיל 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 > פתיחה. מידע נוסף על קריאה והבנה של עקבות, ראו בדיקת מעקבים.

מעקב שיטה

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

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

דגימת מקבץ

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

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

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

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

  • androidx.benchmark.profiling.sampleFrequency

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

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

ללא

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