מגדירים את ההתנהגות של 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
מאפשרת לתעד קובצי מעקב בזמן הרצת מדדי הביצועים. אפשרויות נוספות מפורטות במאמר יצירת פרופיל של בדיקת מיקרו-ביצועים.
- סוג הארגומנט: מחרוזת
- האפשרויות הזמינות:
MethodTracing
StackSampling
None
- ברירת המחדל היא:
None
androidx.benchmark.suppressErrors
המערכת מקבלת רשימה של שגיאות מופרדות בפסיקים כדי להפוך אותן לאזהרות.
- סוג הארגומנט: רשימה של מחרוזות
- האפשרויות הזמינות:
DEBUGGABLE
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- ברירת המחדל: רשימה ריקה
androidx.benchmark.startupMode.enable (הוצא משימוש)
הגדרה מחדש של התנהגות הלולאה כדי לתמוך בבדיקה השוואתית של קוד במהלך ההפעלה. בדיקות הביצועים מתבצעות ללא לולאה של התקנת תוכנה לצורך התחממות, במשך 10 מדידות. כדי למזער את התקורה במבחני מיקרו-ביצועים, חישוב הממוצע של הלולאה מושבת.
- סוג הארגומנט: בוליאני
- ברירת המחדל היא:
false
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- ארגומנטים של מכשירי המדידה של Macrobenchmark
- יצירת פרופיל של מיקרו-בדיקה
- יצירת פרופילי Baseline {:#creating-profile-rules}