מגדירים את ההתנהגות של Microbenchmark באמצעות הארגומנטים הבאים של המדידה. אפשר להוסיף אותם להגדרות של Gradle או להחיל אותם ישירות כשמריצים את המדידה בשורת הפקודה. כדי להגדיר את הארגומנטים האלה לכל הרצות הבדיקה ב-Android Studio ובשורת הפקודה, מוסיפים אותם ל-testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
אפשר גם להגדיר ארגומנטים של מכשירי מדידה כשמריצים את מדדי הביצועים מ-Android Studio. כדי לשנות את הארגומנטים:
- כדי לערוך את הגדרות ההרצה, לוחצים על Edit ובוחרים את ההגדרות שרוצים לערוך.
איור 1. עורכים את הגדרות ההרצה. - כדי לערוך את הארגומנטים של המדידה, לוחצים על
איור 2. עורכים את הארגומנט של המדידה.
לצד השדה Instrumentation arguments.
- לוחצים על
איור 3. מוסיפים את הארגומנט של המדידה.
ומוסיפים את הארגומנט הנדרש לכלי למדידת ביצועים.
אם מריצים את בדיקת הביצועים משורת הפקודה, משתמשים ב--P
android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling
אם מפעילים את הפקודה am instrument ישירות (כפי שעשוי לקרות בסביבות בדיקה של CI), מעבירים את הארגומנט ל-am instrument
באמצעות -e
:
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
מידע נוסף על הגדרת מדדי ביצועים ב-CI זמין במאמר השוואה לשוק ב-CI
additionalTestOutputDir
הגדרת המיקום במכשיר שבו יישמרו דוחות של מדדי ביצועים בפורמט JSON ותוצאות של ניתוח פרופיל.
- סוג הארגומנט: מחרוזת של נתיב קובץ
- ברירת המחדל: הספרייה החיצונית של קובץ ה-APK לבדיקה
androidx.benchmark.cpuEventCounter.enable (ניסיוני)
ספירת אירועי המעבד שצוינו ב-androidx.benchmark.cupEventCounter.events
.
נדרשת הרשאת root.
- סוג הארגומנט: בוליאני
- ברירת המחדל: false
androidx.benchmark.cpuEventCounter.events (ניסיוני)
קובע אילו סוגים של אירועי מעבד ייספרו. כדי להשתמש בארגומנט הזה, צריך להגדיר את androidx.benchmark.cpuEventCounter.enable
לערך true
.
- סוג הארגומנט: רשימה של מחרוזות מופרדות בפסיקים
- האפשרויות הזמינות:
Instructions
CPUCycles
L1DReferences
L1DMisses
BranchInstructions
BranchMisses
L1IReferences
L1IMisses
- ברירת המחדל:
Instructions
, CpuCycles
, BranchMisses
androidx.benchmark.dryRunMode.enable
מאפשרת להריץ מדדי ביצועים בלולאה אחת כדי לוודא שהם פועלים כראוי.
מה זה אומר?
- שגיאות הגדרה לא נאכפות (לדוגמה, כדי שיהיה קל יותר להריץ בדיקות תקינות רגילות במהדמנים)
- בדיקת הביצועים מפעילה רק לולאה אחת, ללא חימום
- כדי לקצר את זמן הריצה, לא מתועדים מדידות ומעקבים.
כך אפשר לבצע אופטימיזציה של תעבורת הנתונים בבדיקה ותיקוף הלוגיקה של מדדי הביצועים במקום לבדוק את תקינות ה-build והמדידה.
- סוג הארגומנט: בוליאני
- ברירת המחדל היא:
false
androidx.benchmark.iterations
מבטלים את העלויות של חזרות היעד שמבוססות על זמן, כדי להבטיח כמות עבודה עקבית. בדרך כלל, כדאי להשתמש באפשרות הזו רק כשפרופיל מופעל, כדי לוודא שמתבצעת כמות עקבית של עבודה במסגרת המעקב אחרי הפרופיל כשמשווים בין הטמעות או הפעלות שונות. בתרחישים אחרים, סביר להניח שהפעולה הזו תפחית את הדיוק או היציבות של המדידות.
- סוג הארגומנט: מספר שלם
- ברירת המחדל: לא צוין
androidx.benchmark.junit4.SideEffectRunListener
אם יתבצע עיבוד ברקע לא קשור בזמן הריצה של מדד הביצועים, יכול להיות שתקבלו תוצאות לא עקביות.
כדי להשבית את העבודה ברקע במהלך בדיקת הביצועים, מגדירים את listener
סוג הארגומנט של המדידה לandroidx.benchmark.junit4.SideEffectRunListener
.
- סוג הארגומנט: מחרוזת
- האפשרויות הזמינות:
androidx.benchmark.junit4.SideEffectRunListener
- ברירת המחדל: לא צוין
androidx.benchmark.output.enable
מאפשרת לכתוב את קובץ ה-JSON של התוצאה לאחסון חיצוני.
- סוג הארגומנט: בוליאני
- ברירת המחדל היא:
true
androidx.benchmark.profiling.mode
מאפשרת לתעד קובצי מעקב בזמן הרצת מדדי הביצועים. אפשרויות נוספות מפורטות במאמר יצירת פרופיל של בדיקת מיקרו-ביצועים.
חשוב לדעת שגרסאות מסוימות של מערכת ההפעלה Android לא תומכות במעקב אחר שיטות בלי להשפיע על המדידות הבאות. כדי למנוע זאת, ה-microbenchmark יוצר חריגה. לכן, צריך להשתמש בארגומנט ברירת המחדל כדי לתעד את הטרייסים של השיטות רק כשבטוח לעשות זאת. אפשר לעיין בבעיה מס' 316174880.
- סוג הארגומנט: מחרוזת
- האפשרויות הזמינות:
MethodTracing
StackSampling
None
- ברירת המחדל: גרסה בטוחה של
MethodTracing
, שמתעדת את ה-method trace רק אם המכשיר יכול לעשות זאת בלי להשפיע על המדידות.
androidx.benchmark.suppressErrors
הפונקציה מקבלת רשימה של שגיאות מופרדות בפסיקים, שרוצים להפוך לאזהרות.
- סוג הארגומנט: רשימה של מחרוזות
- האפשרויות הזמינות:
DEBUGGABLE
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- ברירת המחדל: רשימה ריקה
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- ארגומנטים של מכשירי המדידה של Macrobenchmark
- יצירת פרופיל של מיקרו-בדיקה
- יצירת פרופילים בסיסיים {:#creating-profile-rules}