כברירת מחדל, המיקרו-בנצ'מרקים מספקים מידע על התזמון וההקצאות של הקוד שהופעל. אם רוצים לבדוק למה הקוד שנמדד פועל לאט, אפשר לבדוק את מעקב השיטה – שמתועד כברירת מחדל בגרסאות נתמכות של מערכת ההפעלה – או לבחור הגדרות אחרות של פרופילים.
כדי לבחור את ההגדרה של כלי הפרופיל, מוסיפים את הארגומנט של מפעיל המכשור 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" } }
כשיוצרים פרופיל של מדד השוואה, קובץ הפלט .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
- מספר הדגימות של המקבץ שצריך לצלם בכל שנייה.
- סוג הארגומנט: מספר שלם
- ברירת המחדל היא 1,000 דגימות לשנייה.
androidx.benchmark.profiling.sampleDurationSeconds
- משך ההשוואה לשוק.
- סוג הארגומנט: מספר שלם
- ברירת המחדל היא 5 שניות.
androidx.benchmark.profiling.skipWhenDurationRisksAnr
- מדלג על מעקב אחר שיטות אם סביר להניח שהוא יגרום ל-ANR. מומלץ להשאיר את האפשרות הזו מופעלת להרצות CI, כי שגיאות ANR עלולות לגרום לבעיות במהלך הרצות CI ארוכות.
- סוג הארגומנט: Boolean (בוליאני)
- ברירת המחדל היא
true
ללא
הארגומנט הזה לא מתעד קובץ פרופיל. עדיין נמדדים נתונים על התזמון וההקצאות.
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- ארגומנטים של מכשור למיקרו-מדדים
- הרצת נקודות השוואה באינטגרציה רציפה