כברירת מחדל, ב-Microbenchmarks מוצג מידע על התזמון וההקצאות של הקוד שבוצע. אם רוצים לבדוק למה הקוד שנמדד פועל לאט, אפשר להריץ את אמות המידה עם הכלי למעקב אחרי מעבדים.
כדי לבחור את ההגדרה של הכלי למעקב ביצועים, מוסיפים את הארגומנט androidx.benchmark.profiling.mode
של הכלי למעקב ביצועים עם אחד מהארגומנטים MethodTracing
, StackSampling
או None
, כפי שמוצג בקטע הקוד הבא.
מידע נוסף על האפשרויות זמין במאמר בחירת הגדרת הקלטה.
הערך MethodTracing
הוא המקביל ל-Trace Java Methods, והערך StackSampling
הוא המקביל ל-Sample Java Methods כפי שהוגדר במסמך הזה.
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. כדי לבדוק את תוצאות הניתוח ב-CPU Profiler ב-Android Studio, בוחרים באפשרות File (קובץ) > Open (פתיחה). מידע נוסף על קריאה והבנה של נתוני מעקב זמין במאמר בדיקת נתוני מעקב.
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 שניות.
ללא
הארגומנט הזה לא מתעד קובץ פרופיל. עדיין מתבצע מדידה של מידע על תזמון והקצאות.
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- ארגומנטים של מכשירי מדידה למדדי ביצועים מיקרו
- הרצת מדדי ביצועים באינטגרציה רציפה (CI)