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