הוספת ארגומנטים של אינסטרומנטציה

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

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

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

  1. כדי לערוך את הגדרות ההרצה, לוחצים על Edit (עריכה) ואז על הגדרה אישית.
    עריכה של הגדרת ההרצה
    איור 1. עורכים את ההגדרות של ההרצה.
  2. כדי לערוך את הארגומנטים של האינסטרומנטציה, לוחצים על עוד מאת ארגומנטים של אינסטרומנטציה.
    לערוך את הארגומנטים של האינסטרומנטציה
    איור 2. עריכת האינסטרומנטציה ארגומנטים.
  3. כדי להוסיף את ארגומנט האינסטרומנטציה הנדרש, לוחצים על הוספה בקטע אינסטרומנטציה פרמטרים נוספים.
    הוספת ארגומנט נדרש של אינסטרומנטציה
    איור 3. הוספת האינסטרומנטציה הנדרשת ארגומנט.

כדי להתקשר ישירות משורת הפקודה, צריך להשתמש ב--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