מגדירים את ההתנהגות של Microbenchmark באמצעות הארגומנטים הבאים של המדידה. אפשר להוסיף אותם להגדרות של Gradle או להחיל אותם ישירות כשמריצים את המדידה בשורת הפקודה. כדי להגדיר את הארגומנטים האלה לכל הרצות הבדיקה ב-Android Studio ובשורת הפקודה, מוסיפים אותם לקובץ testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
אפשר גם להגדיר ארגומנטים של מכשירי מדידה כשמריצים את מדדי הביצועים מ-Android Studio. כדי לשנות את הארגומנטים:
- כדי לערוך את הגדרות ההרצה, לוחצים על Edit ובוחרים את ההגדרות שרוצים לערוך.
- כדי לערוך את הארגומנטים של המדידה, לוחצים על לצד השדה Instrumentation arguments.
- לוחצים על ומוסיפים את הארגומנט הנדרש לכלי למדידת ביצועים.
אם מריצים את בדיקת הביצועים משורת הפקודה, משתמשים ב--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.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
- ברירת המחדל: רשימה ריקה
androidx.benchmark.startupMode.enable (הוצא משימוש)
הגדרה מחדש של התנהגות הלולאה כדי לתמוך בבדיקה השוואתית של קוד במהלך ההפעלה. בדיקות הביצועים מתבצעות ללא לולאה של התקנת תוכנה לצורך התחממות (warmup) במשך 10 מדידות. כדי למזער את התקורה במבחני מיקרו-ביצועים, האפשרות של חישוב ממוצע לולאה מושבתת.
- סוג הארגומנט: בוליאני
- ברירת המחדל היא:
false
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- ארגומנטים של מכשירי המדידה של Macrobenchmark
- יצירת פרופיל של מיקרו-בדיקה
- יצירת פרופילים בסיסיים {:#creating-profile-rules}