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

מגדירים את ההתנהגות של 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

מאפשרת לתעד קובצי מעקב בזמן הרצת מדדי הביצועים. אפשרויות נוספות מפורטות במאמר יצירת פרופיל של בדיקת מיקרו-ביצועים.

  • סוג הארגומנט: מחרוזת
  • האפשרויות הזמינות:
    • MethodTracing
    • StackSampling
    • None
  • ברירת המחדל היא: None

androidx.benchmark.suppressErrors

המערכת מקבלת רשימה של שגיאות מופרדות בפסיקים כדי להפוך אותן לאזהרות.

  • סוג הארגומנט: רשימה של מחרוזות
  • האפשרויות הזמינות:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • ברירת המחדל: רשימה ריקה

androidx.benchmark.startupMode.enable (הוצא משימוש)

הגדרה מחדש של התנהגות הלולאה כדי לתמוך בבדיקה השוואתית של קוד במהלך ההפעלה. בדיקות הביצועים מתבצעות ללא לולאה של התקנת תוכנה לצורך התחממות, במשך 10 מדידות. כדי למזער את התקורה במבחני מיקרו-ביצועים, חישוב הממוצע של הלולאה מושבת.

  • סוג הארגומנט: בוליאני
  • ברירת המחדל היא: false