הגדרת ההתנהגות של הספרייה באמצעות האינסטרומנט הבא
ארגומנטים. אפשר להוסיף את הפרטים האלה להגדרות של Gradle או להחיל אותם
ישירות כשמריצים אינסטרומנטציה משורת הפקודה. כדי להגדיר
ארגומנטים לכל הרצת בדיקה של Android Studio ובדיקת שורת פקודה, מוסיפים אותם
testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
ניתן גם להגדיר ארגומנטים של אינסטרומנטציה כשמריצים את נקודות ההשוואה מ- ב-Android Studio. כדי לשנות את הארגומנטים:
- כדי לערוך את הגדרות ההרצה, לוחצים על Edit (עריכה) ואז על הגדרה אישית.
- כדי לערוך את הארגומנטים של האינסטרומנטציה, לוחצים על עוד מאת ארגומנטים של אינסטרומנטציה.
- כדי להוסיף את ארגומנט האינסטרומנטציה הנדרש, לוחצים על הוספה בקטע אינסטרומנטציה פרמטרים נוספים.
כדי להתקשר ישירות משורת הפקודה, צריך להשתמש ב--P
android.testInstrumentationRunnerArguments.[name of the argument]
.
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
androidx.benchmark.compilation.enabled
ההגדרה הזו מאפשרת להשבית את ההידור בין כל איטרציה של נקודת ההשוואה. על ידי
כברירת מחדל, אפליקציית היעד מותקנת מחדש ועוברת הידור מחדש בין
כנקודת השוואה, כדי לכבד את CompilationMode
שמועבר
measureRepeated
השבתת ההגדרה הזו מאפשרת לדלג על שניהם
התקנה מחדש והידור אם, לדוגמה, רוצים לבצע הידור מלא של היעד
את האפליקציה פעם אחת לפני הפעלת חבילת הבדיקות ולהריץ את כל נקודות ההשוואה בכל המדדים שלה
היעד שנקבע.
- סוג הארגומנט: בוליאני
- ברירת המחדל היא:
true
androidx.benchmark.dryRunMode.enable
מאפשרת להריץ נקודות השוואה בלולאה אחת כדי לוודא שהן פועלות בצורה תקינה. אפשר להשתמש בה בבדיקות רגילות כחלק מהאימות.
- סוג הארגומנט: בוליאני
- ברירת המחדל היא:
false
androidx.benchmark.enabledRules
מאפשר הפעלת סינון לסוג אחד של בדיקה בלבד: יצירת פרופיל בסיס או בדיקת מאקרובנצ'מרק. יש תמיכה גם ברשימות מופרדות בפסיקים.
- סוג הארגומנט: מחרוזת
- האפשרויות הזמינות:
Macrobenchmark
BaselineProfile
- ברירת המחדל היא: לא צוין
androidx.benchmark.junit4.SidePartyRunListener
יכול להיות שתוצאות ההשוואה לשוק לא עקביות אם יתקבלו עבודות ברקע שלא קשורות בזמן שנקודת ההשוואה פועלת.
כדי להשבית עבודה ברקע במהלך ההשוואה לשוק, צריך להגדיר את listener
סוג הארגומנט של אינסטרומנטציה
androidx.benchmark.junit4.SideEffectRunListener
.
- סוג הארגומנט: מחרוזת
- האפשרויות הזמינות:
androidx.benchmark.junit4.SideEffectRunListener
- ברירת המחדל היא: לא צוין
androidx.benchmark.fullTracing.enable
המדיניות מפעילה androidx.tracing.perfetto
נקודות מעקב, כמו Jetpack Compose
אחר זיהוי הרכב.
עליך להגדיר את הפרויקט כדי שתוכל לתעד מעקב אחר הרכב מנקודות השוואה. מידע נוסף זמין במאמר תיעוד מעקב באמצעות Jetpack נקודת מאקרובנצ'מרק.
- Argument type (סוג הארגומנט): בוליאני
- ברירת המחדל היא:
false
androidx.benchmark.profiling.mode
ההרשאה הזו מאפשרת לתעד קובצי מעקב בזמן הרצת השוואה לשוק. האפשרויות הזמינות זהות לאלה של ספריית המיקרובנצ'מרק - לקבלת מידע נוסף, את התיאורים יצירת פרופיל ל-Microbenchmark
- סוג הארגומנט: מחרוזת
- האפשרויות הזמינות:
MethodTracing
StackSampling
None
- ברירת המחדל היא:
None
androidx.benchmark.startupProfiles.enable
מאפשרת להשבית את היצירה של פרופילים של הפעלה בזמן ההשוואה לשוק.
- Argument type (סוג הארגומנט): בוליאני
- ברירת המחדל היא:
true
androidx.benchmark.suppressErrors
מקבל רשימת שגיאות מופרדת בפסיקים כדי להפוך לאזהרות.
- סוג הארגומנט: רשימת מחרוזות
האפשרויות הזמינות:
DEBUGGABLE
השגיאה
DEBUGGABLE
מציינת שחבילת היעד פועלת עםdebuggable=true
במניפסט שלו, מה שמקטין משמעותית את זמן הריצה ביצועים לתמיכה בתכונות לניפוי באגים. כדי להימנע מהשגיאה הזו, הפעילו את נקודות השוואה עםdebuggable=false
. הארגומנט שניתן לניפוי באגים משפיע מהירות הביצוע בדרכים שבאמצעותן ייתכן שהשיפורים המקובלים בשוק לא ישפיעו על או חוויית משתמש אמיתית, או שביצועי הגרסה יקבלו רגרסיה.LOW-BATTERY
כשהסוללה חלשה, מכשירים בדרך כלל מפחיתים את הביצועים כדי לחסוך כסף שנותר סוללה, למשל על ידי השבתת ליבות גדולות. הדבר מתרחש גם כאשר המכשירים מחוברים. לבטל את השגיאה רק אם התכוונתם לעשות זאת באופן מכוון. ליצור פרופיל של האפליקציה שרמת הביצועים שלה נמוכה.
EMULATOR
השגיאה
EMULATOR
מציינת שהבנצ'מרק פועל אמולטור שלא מייצג מכשירים של משתמשים אמיתיים. אמולטור ייתכן שהשיפורים המקובלים בשוק לא ישתקפו בחוויית המשתמש האמיתי או לבצע רגרסיה של ביצועי המכשיר בפועל. צריך להשתמש את המכשיר לתמחור בתעשייה. כדי למנוע שגיאה זו בזהירות רבה.NOT-PROFILEABLE
חבילת היעד
$packageName
פועלת ללא<profileable shell=true>
. חובה להוסיף אפשרות פרופיל ב-Android מגרסה 10 ו-11 כדי לאפשר ל-Macrobenchmark לתעד נתוני מעקב מפורטים מהיעד מסוים, כמו קטעים של מעקב מערכת שמוגדרים באפליקציה או של הספריות. כדי למנוע שגיאה זו בזהירות רבה.METHOD-TRACING-ENABLED
בהרצת מאקרובנצ'מרק של האפליקציה שמשמשת להשוואת ביצועים יש נתוני מעקב בשיטת מופעל. זה גורם ל-VM לפעול לאט יותר מהרגיל, לכן את המדדים מקובצי המעקב במונחים יחסיים — לדוגמה, בהשוואה למהירות של הריצה הראשונה לעומת ההרצה השנייה. אפשר להסיר את זה עלולה לגרום לקבלת תוצאות לא מדויקות אם תשוו בין נקודות השוואה עבור עם אפשרויות שונות של מעקב.
ברירת המחדל היא: רשימה ריקה
moreTestOutputDir
הגדרת המיקום שבו נשמרים דוחות בנצ'מרק של JSON ותוצאות פרופיילינג במכשיר.
- סוג הארגומנט: מחרוזת נתיב
- ברירת המחדל היא: בדיקת הספרייה החיצונית של ה-APK
מומלץ עבורך
- הערה: טקסט הקישור מוצג כאשר JavaScript מושבת
- ארגומנטים אינסטרומנטציה של מיקרובנצ'מרק
- יצירת פרופילים בסיסיים
- ספריית JenkStats