ארגומנטים של מכשירי מדידה למדדי מיקרו

מגדירים את ההתנהגות של Microbenchmark באמצעות הארגומנטים הבאים של המדידה. אפשר להוסיף אותם להגדרות של Gradle או להחיל אותם ישירות כשמריצים את המדידה בשורת הפקודה. כדי להגדיר את הארגומנטים האלה לכל הרצות הבדיקה ב-Android Studio ובשורת הפקודה, מוסיפים אותם לקובץ testInstrumentationRunnerArguments:

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

אפשר גם להגדיר ארגומנטים של מכשירי מדידה כשמריצים את מדדי הביצועים מ-Android Studio. כדי לשנות את הארגומנטים:

  1. כדי לערוך את הגדרות ההרצה, לוחצים על Edit ובוחרים את ההגדרות שרוצים לערוך.
    איור 1. עורכים את הגדרות ההרצה.
  2. כדי לערוך את הארגומנטים של המדידה, לוחצים על לצד השדה Instrumentation arguments.
    איור 2. עורכים את הארגומנט של המדידה.
  3. לוחצים על ומוסיפים את הארגומנט הנדרש לכלי למדידת ביצועים.
    איור 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.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