כברירת מחדל, במדדי 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
מעקב אחר שיטות שימושי כשמנסים לבצע אופטימיזציה של הקוד, כי הוא יכול לעזור לזהות את השיטות שהרצה שלהן נמשכת זמן רב יותר מאשר של שיטות אחרות. לאחר מכן תוכלו להתמקד באופטימיזציה של השיטות שמשפיעות בצורה המשמעותית ביותר על הביצועים.
יצירת הפרופיל מתבצעת ברצף אחרי מדידת הקוד, כך שהבדיקה מניבה גם תוצאות פרופיל וגם תזמון מדויק.
מעקב אחר שיטות מופעל כברירת מחדל.
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
ללא
הארגומנט הזה לא מתעד קובץ פרופיל. עדיין מתבצע מדידה של מידע על תזמון והקצאות.
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- ארגומנטים של מכשירי מדידה למדדי ביצועים מיקרו
- הרצת מדדי ביצועים באינטגרציה רציפה (CI)