השוואה לשוק

מדידת הביצועים של הקוד במדויק ב-Android Studio.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
13 בנובמבר 2024 1.3.3 - - 1.4.0-alpha05

הצהרת יחסי תלות

כדי להוסיף תלות ב-Benchmark, צריך להוסיף את מאגר Google Maven לפרויקט. למידע נוסף, קראו את המאמר מאגר Maven של Google.

Macrobenchmark

כדי להשתמש ב-Macrobenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של מודול macrobenchmark:

מגניב

dependencies {
  androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0"
}

Kotlin

dependencies {
  androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0")
}

מיקרו-בנצ'מרק

כדי להשתמש ב-Microbenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של מודול ה-microbenchmark:

מגניב

dependencies {
    androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0"
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Kotlin

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0")
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

ספריית Microbenchmark מספקת גם פלאגין של Gradle לשימוש עם מודול המיקרובנצ'מרק. הפלאגין הזה מגדיר ברירות מחדל של תצורת build עבור המודול, ומגדיר העתקת הפלט למארח, ומספק את משימה אחת (./gradlew lockClocks).

כדי להשתמש בפלאגין, צריך לכלול את השורה הבאה בבלוק 'Plugins' (יישומי פלאגין) ברמה העליונה קובץ build.gradle:

מגניב

plugins {
  id 'androidx.benchmark' version '1.3.0' apply false
}

Kotlin

plugins {
  id("androidx.benchmark") version "1.3.0" apply false
}

לאחר מכן מחילים את הפלאגין על קובץ build.gradle של מודול ההשוואה לשוק

מגניב

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 1.4

גרסה 1.4.0-alpha05

13 בנובמבר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha05 משוחרר. גרסת 1.4.0-alpha05 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה ב-API מגרסה 34 ואילך, שבה ל-CompilationMode.None() היו ביצועים לא עקביים שלא מייצגים את הביצועים הראשוניים בתרחיש הכי גרוע. כך ניתן לעקוף שינוי בפלטפורמה שמאפשר למצב הידור verify של ART לבצע הידור חלקי של אפליקציות (שמשפיע רק על טעינת הכיתות) זמן קצר אחרי ההפעלה הראשונה. (Ie48d0)
  • תוקנה בעיה שבה יכול להיות שתתועדו נתוני מעקב (במיוחד קצרים) שלא ידווחו על מדידה ממדדים מובנים של Macrobenchmark, בגלל ששם התהליך קוצר בנתוני המעקב של Perfetto. עכשיו, macrobenchmark פותר את הבעיה הזו על ידי חיפוש שם החבילה המקוצר בכל השאילתות המובנות, בנוסף לשם החבילה הצפוי. הערה: הטמעות מותאמות אישית של TraceMetric או גורמים אחרים שמפעילים את PerfettoSession.query ישירות יכולים להטמיע את אותו התנהגות על ידי שינוי הערך של process.name LIKE "$packageName" בשאילתה של Perfetto ל-(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))"). (I5bf01, b/377565760)

גרסה 1.4.0-alpha04

30 באוקטובר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha04 משוחרר. גרסת 1.4.0-alpha04 מכילה את ההוספות האלה.

תכונות חדשות

  • (ניסיוני) הפעלת יצירת פרופיל בסיס והשוואה לאפליקציות שמותקנות אצל משתמש משני, למשל כל אפליקציה במכשירי Android Auto ללא צג. התמיכה הזו נבדקה בתרחישים מסוימים, אבל אם היא לא עובדת אצלכם, תוכלו לדווח לנו על באג. (I9fcbe, ‏ b/356684617, ‏ b/373641155)

תיקוני באגים

  • עכשיו תמיד מתבצעת החלפה של isProfileable בגרסאות build למדדי השוואה, וגם של isDebuggable בגרסאות build למדדי השוואה וגם בגרסאות build מסוג nonMinified (צילום פרופיל בסיס). (I487fa, ‏ b/369213505)
  • תיקון לזיהוי הידור במכשירים פיזיים מסוימים לפני API 28 – משפיע על json context.compilationMode, וגם על ההתנהגות של androidx.benchmark.requireAot=true (שכבר לא מחזיר שגיאה באופן שגוי) (Ic3e08, ‏ b/374362482)
  • במדדים של CpuEventCounter, המערכת תשליך שגיאה אם יתגלו מדידות לא חוקיות (למשל, instructions/cpucycles==0) (I8c503)

גרסה 1.4.0-alpha03

16 באוקטובר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha03 משוחרר. גרסת 1.4.0-alpha03 כוללת את ההוספות האלה.

שינויים ב-API

  • Macrobenchmark: הבדיקה הזו מוסיפה את ArtMetric, שאפשר להשתמש בו כדי לבדוק את הכיסוי של הפרופיל או את הביצועים הכלליים של Android RunTime. הנתון מתעד את המספר ואת משך הזמן הכולל של JIT, של יצירת הכיתה (אם האפשרות הזו זמינה) ושל אימות הכיתה. בנוסף, השינויים ב-CaptureInfo כוללים גרסה אופציונלית של ART mainline עם ברירת מחדל. (I930f7)
  • מוסיפים את coefficientOfVariation לפלט ה-JSON של Benchmark כדי להציג יציבות במהלך הרצה נתונה של Benchmark. (Ib14ea)

תיקוני באגים

  • תוקנה בעיה ב-CollectBaselineProfileTask כשיש רווחים במכשיר AVD. (Ia0225, ‏ b/371642809)
  • תיקון משוערים לשגיאות מחריגות מסוג StartupMode.COLD: Package <packagename> must not be running prior to cold start!. עכשיו, MacrobenchmarkScope.killProcess() (כולל הפעולה שפועלת לפני כל חזרה על תהליך, שמשמשת להטמעת ההתנהגות של StartupMode.COLD) תמתין כדי לוודא שכל התהליכים של האפליקציה הפסיקו לפעול. (I60aa6, ‏ b/351582215)
  • תוקנה בעיה שבה השגיאה UNLOCKED_ הופיעה במהלך שימוש במהדמרים מסוימים עם הרשאת root. (Ic5117)
  • הספרייה הזו משתמשת עכשיו בהערות של JSpecify לגבי ערכים null, שהן שימוש בסוגים. מפתחי Kotlin צריכים להשתמש בארגומנטים הבאים של המהדר כדי לאכוף שימוש נכון: -Xjspecify-annotations=strict, ‏ -Xtype-enhancement-improvements-strict-mode (I7104f, ‏ b/326456246)

גרסה 1.4.0-alpha02

2 באוקטובר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha02 משוחרר. גרסה 1.4.0-alpha02 מכילה את ההוספות האלה.

שינויים ב-API

  • משימות Gradle‏ lockClocks ו-unlockClocks הועברו לפרויקטים למדדי ביצועים, במקום להיות זמינות ברמה העליונה. השינוי הזה היה הכרחי כי לצערנו אין דרך לרשום אותן כפעולות ברמה העליונה בלי לשבור את בידוד הפרויקט. (I02b8f, ‏ b/363325823)

תיקוני באגים

  • BaselineProfileRule אוסף עכשיו פרופילים לאפליקציות עם כמה תהליכים, על ידי שליחת אות לכל תהליך שפועל בסוף הבלוק כדי למחוק את הפרופילים. אם אוסף מבוסס-פרופיל אף פעם לא מוצא תהליך להעברה אליו, האוסף ייכשל כי לא צפוי שיכללו בו נתוני פרופיל. בנוסף, הוספנו ארגומנט לכלי למדידת ביצועים כדי לשלוט במשך ההמתנה לדמפ: androidx.benchmark.saveProfileWaitMillis (I0f519, ‏ b/366231469)
  • מ-Benchmark 1.3.2: תוקנה בעיה ב-Firebase Test Lab‏ (FTL) שבה לא ניתן היה למשוך קבצים של תוצאות Baseline Profile או Macrobenchmark מהתוסף Baseline Profile Gradle. (I2f678, b/285187547)

כדי להשתמש ב-FTL, מחילים את הפלאגין על מודול פרופיל הבסיס בבלוק הפלאגין, באמצעות:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

ולאחר מכן מגדירים את Firebase Test Lab באמצעות:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

בנוסף, צריך להוסיף את מכשיר ה-FTL שנוצר לתוסף של פרופיל הבסיס:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

גרסה 1.4.0-alpha01

18 בספטמבר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha01 משוחרר. גרסת 1.4.0-alpha01 כוללת את ההוספות האלה.

תכונה חדשה – תובנות לגבי הפעלת אפליקציות

  • אפשר להפעיל את הגרסה הראשונית של התובנות לגבי הפעלת האפליקציה ב-Macrobenchmark. (09fae38)

כדי להפעיל את המדד בסטארט-אפ:

  @Test
  fun startup {
      macrobenchmarkRule.measureRepeated(
          
          packageName = "com.example.my.application.id"
          metrics = listOf(StartupTimingMetric()),
          iterations = 5,
          startupMode = StartupMode.COLD,
          compilationMode = CompilationMode.None(),
          experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
          ) {
          scope.startActivityAndWait(...)
      }
  }

לאחר מכן, הפעלת מדד הביצועים של סטארט-אפ תנתח את המעקב כדי לחפש בעיות נפוצות, ותדפיס אותן אחרי המדדים בתוצאת הבדיקה של Studio בכרטיסייה benchmark (מדד ביצועים), לדוגמה:

StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│   ├──   timeToFullDisplayMs                min  1,147.2,   median  1,208.8,   max  1,307.4
│   └──   timeToInitialDisplayMs             min  1,147.2,   median  1,208.8,   max  1,307.4
├── App Startup Insights
│   ├── App in debuggable mode (expected: false)
│   │   └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│   ├── Potential CPU contention with another process (expected: < 100000000ns)
│   │   └── seen in iterations: 4(105022546ns)
│   └── Main Thread - Binder transactions blocked (expected: false)
│       └── seen in iterations: 7(true)
└── Traces
    └── Iteration 0 1 2 3 4 5 6 7 8 9

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

תכונות חדשות

  • הוספנו את מאפיין ה-gradle androidx.baselineprofile.suppressWarnings כדי לדכא את כל האזהרות בפרופיל הבסיסי. (314153a)
  • מדדי Microbench מוצגים עכשיו ב-Perfetto traces כמספרים. (3214854)
  • הוספת סקריפטים ניסיוניים להשבתת jit (נדרשת הרשאת root או הפעלה מחדש בסביבת זמן הריצה) ולאיפוס מצב הביצועים או מצב הבדיקה של המכשיר. כרגע, הן לא מתפרסמות כמשימות gradle. (7c3732b)
  • נוספה ארגומנטים של מדדי ביצועים כדי לדלג על בדיקות כשמריצים במהדורת הדמיה. כשגרסת build של automaticGenerationDuring מופעלת, גם אבני דרך יגרמו ליצירת פרופיל בסיס. אם משתמשים במהדמרים, הפעולה הזו תיכשל. עם הארגומנט החדש skipBenchmarksOnEmulator, אפשר לדלג על הבדיקה. (0c2ddcd)
  • שינוי הלוגיקה להפעלת אירועי ביצועים כך שתופעל ב-API מגרסה 23 ואילך (2550048)

שינויים ב-API

  • הארגומנט הניסיוני הקיים PerfettoConfig ל-MacrobenchmarkRule.measureRepeated() הועבר לאובייקט ExperimentalConfig החדש.

תיקוני באגים

  • הגדלת מספר הניסיונות החוזרים של lockClocks.sh (99e9dac)
  • אם כבר קיימים סוגים של nonMinified ו-benchmark build, אל תיצרו אותם. בגלל באג, גם אם סוגים של גרסאות build של nonMinified ושל מדדי ביצועים היו קיימים, הם היו נוצרים מחדש. (e75f0a5)
  • התכונה מתעלמת מפלחים שלא מסתיימים בתוצאות של TraceSectionMetric. (a927d20)
  • בדיקה משופרת של המהדר, שמביאה בחשבון את הקידומת sdk_. (1587de8)
  • חבילות שלא פועלות נחשבות כמאושרות ב-FrameTimingGfxInfoMetric. (35cc79c)
  • תיקון של androidx.benchmark.cpuEventCounter שמייצר ערכים פגומים באירועים שאינם אירועי הוראה. (06edd59)
  • תיקון של resumeTiming/runWithTimingDisabled כדי לכבד את סדר העדיפויות של המדדים, ולצמצם באופן משמעותי את ההשפעה של השהיה/המשך של מדד בעל עדיפות נמוכה יותר על תוצאות של מדד בעל עדיפות גבוהה יותר. לדוגמה, אם משתמשים בספירת ביצועים של מעבדים באמצעות הארגומנט של המדידה cpuEventCounter.enable, הערך של timeNs לא יורד באופן משמעותי יותר כשמתרחשים השהיות או הפעלות מחדש. (5de0968)

גרסה 1.3

גרסה 1.3.3

16 באוקטובר 2024

androidx.benchmark:benchmark-*:1.3.3 משוחרר. גרסת 1.3.3 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה ב-CollectBaselineProfileTask כשיש רווחים במכשיר AVD (Ia0225, ‏ b/371642809)

גרסה 1.3.2

2 באוקטובר 2024

androidx.benchmark:benchmark-*:1.3.2 משוחרר. גרסה 1.3.2 מכילה את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה ב-Firebase Test Lab‏ (FTL) שבה לא ניתן היה למשוך קבצי תוצאות של Baseline Profile או של Macrobenchmark מפלאגין Baseline Profile Gradle. (I2f678, b/285187547)

כדי להשתמש ב-FTL, מחילים את הפלאגין על מודול פרופיל הבסיס בבלוק הפלאגין, באמצעות:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

ולאחר מכן מגדירים את Firebase Test Lab באמצעות:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

בנוסף, צריך להוסיף את מכשיר ה-FTL שנוצר לתוסף של פרופיל הבסיס:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

גרסה 1.3.1

18 בספטמבר 2024

androidx.benchmark:benchmark-*:1.3.1 משוחרר. גרסת 1.3.1 מכילה את ההוספות האלה.

תיקוני באגים

  • הוספנו את מאפיין ה-gradle androidx.baselineprofile.suppressWarnings כדי לדכא את כל האזהרות בפרופיל הבסיסי (I7c36e, ‏ b/349646646)
  • תוקן פלאגין Gradle של פרופיל בסיס כדי להשתמש ב-nonMinified… וב-benchmark… קיימים אם הם נוצרו על ידי האפליקציה, במקום ליצור עטיפות. (Ia8934, ‏ b/361370179)
  • תוקן הבאג ב-java.lang.AssertionError: ERRORS (not suppressed): EMULATOR כש-automaticGenerationDuringBuild מופעל במהדמנים. במקום זאת, נעשה שימוש בארגומנט חדש כדי לדלג על הבדיקה. (If3f51, ‏ b/355515798)
  • צמצום של מיקרו-בדיקות ביצועים – שמירה של תת-כיתות של org.junit.runner.notification.RunListener ב-ProGuard של ספריית נקודות השוואה (Ic8ed5, ‏ b/354264743)
  • תיקון TraceSectionMetric כדי להתעלם מפלחים שלא מסתיימים. בעבר, לאירועים האלה היה משך זמן של -1, למשל במהלך סיכום או חיפוש משך הזמן המינימלי. (If74b7)
  • תוקנה בעיה ב-FrameTimingGfxInfoMetric שבה הפעלת המדד גרמה לקריסה אם התהליך עדיין לא פועל. (I6e412)

גרסה 1.3.0

21 באוגוסט 2024

androidx.benchmark:benchmark-*:1.3.0 משוחרר. גרסת 1.3.0 כוללת את ההוספות האלה.

שינויים ב-Microbenchmark מאז גרסה 1.2.0

  • מעקב אחר שיטות מופעל כברירת מחדל במבחני מיקרו-ביצועים כשהם פועלים ברוב המכשירים
    • מעקב אחר שיטות פועל בשלב נפרד, אחרי המדידות – כך אפשר לקבל מדידות מדויקות ומעקב אחר שיטות כפלט מרצף בדיקות ביצועים אחד
    • מעקב אחר שיטות בגרסאות מסוימות של מערכת ההפעלה Android ו-ART ישפיע על שלבי המדידה המאוחרים יותר – בגרסאות האלה, מעקב אחר שיטות מושבת כברירת מחדל ומופיעה אזהרה בפלט של Studio
  • נקודות השוואה ומקרי ANR ב-thread הראשי
    • הוספנו את measureRepeatedOnMainThread למדדי ביצועים של חוטי UI (למשל, אלה שמקיימים אינטראקציה עם ממשקי UI של Compose/View) כדי למנוע אירועי ANR כשהאפליקציה פועלת במשך כמה שניות.
    • אם קיימת סבירות גבוהה שהמעקב אחר השיטה יעלה על המועד האחרון למניעת ANR, המערכת תדלג על המעקב. כדי להשבית את ההתנהגות הזו, מגדירים את androidx.benchmark.profiling.skipWhenDurationRisksAnr לערך false (לא מומלץ להגדיר את הערך הזה להרצות CI, כי מקרי ANR עלולים לגרום לבעיות בהרצות CI ארוכות).
  • הקטנה
    • כללי Proguard מוטמעים לשיפור מיקרו-ביצועים כשהצמצום מופעל
    • כדי לבצע אופטימיזציה לעומס (minification) או R8 במודול ספרייה, צריך AGP 8.3. אפשר להפעיל את התכונות האלה באמצעות android.buildTypes.release.androidTest.enableMinification ב-build.gradle
    • נוספה גרסה ניסיונית של BlackHole.consume() API כדי למנוע חיסול של קוד לא פעיל (If6812, ‏ b/286091643)
  • מדדים
    • תכונה ניסיונית של מונה אירועים של מעבד (מדדים מ-perf_event_open, שדורשים הרשאת root ברוב הגרסאות של הפלטפורמה), גישה דרך InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (ניתן להגדיר ל-true) ואפשר להגדיר את androidx.benchmark.cpuEventCounter.events למשל ל-(Instructions,CpuCycles). התכונה הזו אמורה לקבל תמיכה במהדמרים מסוימים של userdebug, אבל התמיכה לא נבדקה בכל המהדמרים הזמינים

שינויים ב-MACRObenchmark מאז גרסה 1.2.0

  • שינוי יסודי במעקב אחר שיטות למדדי ביצועים ברמת המאקרו.
    • עכשיו, מעקב הנתונים של השיטות מוגבל למשך הזמן של measureBlock, והוא יכול לתעד כמה סשנים אם התהליך מתחיל כמה פעמים.
    • בעבר, מעקב אחר שיטות עבד רק למדדי השוואה של StartupMode.COLD, ולא תיעד שום דבר לגבי measureBlocks שלא הפעיל מחדש את תהליך היעד
    • תיקון של שטיפת נתוני מעקב אחר שיטות במבחן ביצועים ברמת המאקרו, כך שנתוני המעקב אחר השיטות יתועדו במלואם ויתאימו לשימוש, גם במכשירים איטיים יותר. (I6349a, ‏ b/329904950)
  • כדי שהמדידות של CompilationMode.Partial(warmup=N) יהיו מדויקות יותר, צריך לבצע גרסת dump נכונה של פרופיל ה-ART במהלך חזרות warmUp בודדות כשהתהליך מושמד. (I17923)
  • הודעה על כישלון בשידור של Drop Shader
    • נוספו הצעות לניפוי באגים להודעה על כישלון בשידור של שובר שגיאות
    • מוסיפים שני ארגומנטים של מכשור כדי לשנות את התנהגות השמטת ה-shader, כדי לעקוף קריסות כשמבצעים בדיקת ביצועים של אפליקציות בלי ProfileInstaller 1.3:
      • androidx.benchmark.dropShaders.enable=true/false : אפשר להשתמש בה כדי לדלג על כל השמטת שגיאות בקוד שקשורות לשיפור איכות התמונה (כולל השמטות שגיאות בקוד שקשורות להשקות של StartupMode.Cold), במיוחד כשבודקים את הביצועים של אפליקציות שעדיין לא משתמשות ב-profileinstaller 1.3
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : אפשר להשתמש בו כדי לסבול כשלים בניסיון להסיר שגיאות, למשל כשבודקים אפליקציות ללא profileinstaller 1.3 (I4f573)
  • נוספה וריאנט MacrobenchmarkRule#measureRepeated ניסיוני שמקבל PerfettoConfig מותאם אישית להקלטת נתוני Perfetto בהתאמה אישית מלאה. חשוב לזכור שהגדרות לא נכונות עשויות לגרום לכשל בכיתות מובנות של מדדים. (Idfd3d, ‏ b/309841164, ‏ b/304038384)
  • כדי לצמצם את ההפרעות, צריך לבטל את משימות ה-dexopt ברקע לפני שמריצים את Macrobenchmark. (I989ed)
  • Macrobenchmark ממתין עכשיו לשנייה אחת עד שהאפליקציה היעד תנקה את פרופיל ה-ART (בעבר הוא המתין 500 אלפיות השנייה). (I85a50, ‏ b/316082056)
  • שינוי משמעותי ב-TraceSectionMetric
    • הערה: השינויים הבאים ב-TraceSectionMetric עשויים להשפיע על הפלט בשימוש ב-CI, ויכולים ליצור הפסקות או לשבור את הניתוח
    • הסכום הוא עכשיו ברירת המחדל, כי רוב השימוש במדד הזה הוא באירועים חוזרים, ובמקרים כאלה המערכת תשליך נתונים בשלב הראשון.
    • השינויים האלה נועדו לאפשר התאמה אישית רחבה יותר של התכונה, עם יותר מצבים זמינים
    • שמות המצבים מוטמעים עכשיו בשם הפלט של המדד (ב-Studio וב-JSON)
    • עכשיו יש תמיכה בפלחים שנוצרו באמצעות Trace.{begin|end}AsyncSection.
  • מדדים
    • כוח – נוספו PowerMetric.deviceSupportsHighPrecisionTracking, ‏ PowerMetric.deviceBatteryHasMinimumCharge() ו-PowerMetric.deviceSupportsPowerEnergy()
    • השם של Metric.getResult השתנה ל-getMeasurements כדי להתאים לסוג ההחזרה
    • נוספו תוויות log.w / exception לכל הכישלונות בזיהוי בזמן ההפעלה. השינוי הזה לא משנה את ההתנהגות הנוכחית (כך שחלק מהשגיאות יושלחו, וחלק אחר לא יזהו את האפליקציה בזמן ההפעלה), אלא רק מאפשר להבין אותה טוב יותר. בדרך כלל, אלה שהערך שלהם הוא Log.w() ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם פריימים. חריגות מתרחשות כשמתגלה הפעלה, מלבד מידע על תזמון הפריימים (מפלחים של UI/RT). (Id240f, ‏ b/329145809)
    • הוספנו את המדידה frameCount ל-FrameTimingMetric כדי לעזור לכם לזהות תרחישים שבהם המדידות משתנות בגלל שינוי במספר הפריימים שנוצרו (נוספו אנימציות חדשות, תוקנו בעיות של ביטול תוקף). (I1e5aa)
    • הבהרנו ש-frameOverrunMs הוא המדד המועדף למעקב כשהוא זמין במסמכים, ומסבירנו למה. (I18749, ‏ b/329478323)
    • תוקנה בעיה שבה יכול להיות שפריימים ללא סיומת בתחילת המעקב ובסופו ישויכו יחד, מה שעלול לגרום לדיווח שגוי על פריים אחד ארוך במיוחד. (I39353, b/322232828)
    • שיפור השגיאה FrameTimingMetric כשלא נוצרים פריימים, ותמיד פלט קישור למעקב אחרי הבעיה כשהניתוח של המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9)
    • תוקנה קריסה ב-FrameTimingMetric שנגרמה מאי-ניתוח של מזהה המסגרת, במיוחד במכשירים מסוימים של יצרני ציוד מקורי. (Ia24bc, ‏ b/303823815, ‏ b/306235276)
    • הוספת פרטים נוספים להודעות השגיאה והקלה על הדרישות של הבדיקות ב-FrameMetrics. (Iadede)

שינויים בתיעוד פרופיל Baseline או בפלאגין Gradle מאז גרסה 1.2.0

  • הגרסה המומלצת המקסימלית של AGP הוגדלה ל-9.0.0-alpha01.
  • חשוב לוודא שהמשימות mergeArtProfile ו-mergeStartupProfile תמיד מחכות ליצירת פרופיל בסיס. (I623d6, ‏ b/343086054)
  • לאחר יצירת פרופיל בסיס, יופיע סיכום של השינויים (I824c8,‏ b/269484510)
  • נוספה אפשרות להשתמש ב-DSL כדי להשבית אזהרות (Ic4deb, ‏ b/331237001)
  • תיקון כדי לוודא שבדוחות השוואה נעשה שימוש בפרופילים בסיסיים שנוצרו כשהאפשרות automaticGenerationDuringBuild מושבתת (Ic144f, ‏ b/333024280)
  • תיקון של החלפות ברירת המחדל של מאפייני הפלאגין BaselineProfile ב-Gradle, כדי לאפשר יצירת פרופיל בסיס ובדיקת ביצועים כשמתאימים אישית סוג build של nonMinified או של בדיקת ביצועים. (Ib8f05, ‏ b/324837887)
  • תיקון להכללת פרופילים בסיסיים של ספריות ב-AAR לפני AGP 8.3.0-alpha15. (I1d2af, ‏ b/313992099)
  • תוקנה כתובת ה-URL של הפלט של פרופיל ה-startup והבסיס בסוף המשימה ליצירה. (I802e5, ‏ b/313976958)

שינויים משמעותיים אחרים מאז גרסת 1.2.0

  • תיעוד נתוני מעקב
    • שגיאת EXITCODE 2 הופחתה כשמפעילים את perfetto משגיאה לאזהרה ביומן
    • הפעלת מעקב AIDL כברירת מחדל בבדיקות השוואה(נדרשת גרסה 28 של API) (Ia0af2, ‏ b/341852305)
    • הפעלת מעקב אחר תגים של Porter כברירת מחדל בבדיקות השוואה. לדוגמה, המערכת מתעדת נקודות מעקב של wakelock. (Icfe44, ‏ b/286551983)
    • הזמן הקצוב לתפוגה של תחילת צילום המעקב הוגדל כדי למנוע קריסות כשמתחילים את המעקב במכשירים איטיים יותר (I98841, ‏ b/329145808)
    • הוספנו ממשקי API PerfettoTraceProcessor.Session.queryMetrics ציבוריים עם וריאנטים של JSON,‏ textproto ו-proto binary (לא מפוענח). הם מאפשרים להריץ שאילתות לגבי מדדים שמובנים ב-TraceProcessor (I54d7f, ‏ b/304038382)
    • הפעלת התחלה חסומה ברשומת המעקב של Perfetto כדי לצמצם את הסיכון לנתונים חסרים בתחילת המעקב. התכונה נתמכת רק ב-API מגרסה 33 ואילך. (Ie6e41, ‏ b/310760059)
  • פלט JSON
    • נוספו פרטים נוספים בהקשר של מדד השוואה בפלט ה-JSON:
      • context.artMainlineVersion – גרסה של מספר שלם של מודול Art הראשי (אם הוא נמצא במכשיר, -1 אחרת)
      • context.build.id – שווה ל-android.os.Build.ID
      • context.build.version.codename – שווה ל-android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename – תואם לאות הראשונה של הכינוי של גרסת ה-pre-release (כולל בגרסאות build של גרסאות זמינות) (Ie5020)
    • הוספנו את הרשימה profilerOutput לפלט ה-JSON כדי להקל על שימוש בכלים לניתוח נתוני פרופיל (למשל Perfetto, ‏ Method traces) (I05ddd, ‏ b/332604449)
    • הוספנו אזהרה כשמשתמשים ב-Android Test Orchestrator במודולים של מדדי ביצועים, כי הפעולה הזו תגרום לכתיבה חוזרת של קובצי JSON של פלט לכל מודול. (Ia1af6, b/286899049)
    • הבעיה מתרחשת כששמות הקבצים ארוכים מ-200 תווים, כדי למנוע קריסות לא ברורות בזמן כתיבת קבצים או לאחר עיבוד שלהם. (I4a5ab)

גרסה 1.3.0-rc01

7 באוגוסט 2024

androidx.benchmark:benchmark-*:1.3.0-rc01 משוחרר. גרסת 1.3.0-rc01 כוללת את ההוספות האלה.

תיקוני באגים

  • תיקון של androidx.benchmark.cpuEventCounter שמייצר ערכים פגומים באירועים שאינם הוראות (I7386a, ‏ b/286306579)
  • תיקון resumeTiming/runWithTimingDisabled כדי לכבד את סדר העדיפויות של המדדים, ולצמצם באופן משמעותי את ההשפעה של השהיה/המשך של מדד בעל עדיפות נמוכה יותר על תוצאות של מדד בעל עדיפות גבוהה יותר. לדוגמה, אם משתמשים בספירת ביצועים של מעבדים באמצעות הארגומנט של המדידה cpuEventCounter.enable, הערך של timeNs לא יורד באופן משמעותי יותר כשמתרחשים השהיות או הפעלות מחדש. (I39c2e, ‏ b/286306579, ‏ b/307445225)
  • צמצום הסיכוי שדגימת הסטאק תגרום ל-measureRepeatedOnMainThread להגיע לזמן קצוב קפדני לתפוגה בשרשור הראשי, על ידי העברת ההמרה של דגימת הסטאק מהשרשור הראשי. (I487a8, ‏ b/342237318)
  • הסרנו את התיאור הידני של הגישה לממשקי API חדשים של פלטפורמות, כי זה קורה באופן אוטומטי באמצעות בניית מודלים של API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל, R8 גרסה 3.3) ובכל גרסאות ה-build כשמשתמשים ב-AGP 8.1 ואילך (למשל, D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלצים לעדכן ל-D8 בגרסה 8.1 ואילך. למידע נוסף, מומלץ לעיין במאמר הזה. (I9496c, ‏ b/345472586)
  • הוספנו בדיקה של גרסת agp כדי לשלוח את שם החבילה כארגומנטים של instr. בגרסאות קודמות של AGP 8.4.0, לא ניתן לשלוח את שם החבילה של אפליקציית היעד לאפליקציית המדידה באמצעות ארגומנטים של המדידה. (0c72a3f)

גרסה 1.3.0-beta02

10 ביולי 2024

androidx.benchmark:benchmark-*:1.3.0-beta02 משוחרר. גרסת 1.3.0-beta02 כוללת את ההוספות האלה.

תיקוני באגים

  • טיפול מושלם ב-EXITCODE 2 כשמפעילים את Perfetto כדי לתעד אזהרה, אבל להמשיך.

גרסה 1.3.0-beta01

‫12 ביוני 2024

androidx.benchmark:benchmark-*:1.3.0-beta01 משוחרר. גרסת 1.3.0-beta01 כוללת את ההוספות האלה.

שינויים ב-API

  • השם של MethodTracing.affectsMeasurementOnThisDevice שונה ל-AFFECTS_MEASUREMENT_ON_THIS_DEVICE כדי לשמור על עקביות. (I1bdfa)
  • נוספה ממשק API ניסיוני של BlackHole.consume() כדי למנוע חיסול של קוד לא פעיל בבדיקות מיקרו-ביצועים. (If6812, ‏ b/286091643)
  • מעכשיו, בדיקת הביצועים ברמת המיקרו תגרום לזריקת שגיאה בצורה נכונה כדי למנוע מעקב אחר שיטות שיפריע למדידות. המצב הזה מתרחש במכשירים מסוימים כשמפעילים את מעקב ה-method (באמצעות ארגומנטים של מכשירי מדידה או MicrobenchmarkConfig), ואם מתבצעת ניסיון מדידה אחרי מעקב אחר method. המכשירים המושפעים פועלים עם API 26-30 או עם גרסאות מסוימות של מודולים ראשיים של ART שהושפעו מההפרעה הזו, וניתן לזהות אותם בסביבת זמן הריצה באמצעות ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92, ‏ b/303660864)

תיקוני באגים

  • הגרסה המקסימלית המומלצת של agp שופרה ל-9.0.0-alpha01. (I5bbb0)
  • נוספה מצב הידור להקשר של מדד הביצועים (If5612, ‏ b/325512900)
  • הפעלת מעקב AIDL כברירת מחדל (נדרש API 28) (Ia0af2, ‏ b/341852305)
  • נוספו פרטים נוספים בהקשר של מדד השוואה בפלט ה-JSON:
    • context.artMainlineVersion – גרסה של מספר שלם של מודול Art הראשי (אם הוא נמצא במכשיר, -1 אחרת)
    • context.build.id – שווה ל-android.os.Build.ID
    • context.build.version.codename – שווה ל-android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename – תואם לאות הראשונה של הכינוי של גרסת המקור (גם בגרסאות build של גרסאות זמינות) (Ie5020)
  • תיקון של StackSampling כך שיכבד את androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • משנים את macro->common dependency ל-api(), כדי שיהיה קל יותר להשתמש, למשל, ב-PerfettoTrace וב-PerfettoConfig. (Icdae3, ‏ b/341851833)
  • חשוב לוודא שהמשימות mergeArtProfile ו-mergeStartupProfile תמיד מחכות ליצירת פרופיל בסיס. (I623d6, ‏ b/343086054)
  • כשמחליטים אם להפעיל וריאנט, כדאי להביא בחשבון את מצב ההפעלה שלו. (I5d19e, ‏ b/343249144)
  • הגדלת ברירת המחדל של זמן הקצאת הזמן לתפוגה להתחלה של מעבד המעקב של Perfo. (I87e8c, ‏ b/329145808)

גרסה 1.3.0-alpha05

14 במאי 2024

androidx.benchmark:benchmark-*:1.3.0-alpha05 משוחרר. גרסת 1.3.0-alpha05 כוללת את ההוספות האלה.

תיקוני באגים

  • הוספת חריגה ברורה יותר כשמדד macrobench מחזיר ערכים אפס לכל החזרות (Iab58f, ‏ b/314931695)
  • נוספו כללי פתרון חלופיים לכללי Proguard של microbench, כולל תמיכה בכללי מאזין ואזהרות או שגיאות אחרות שנצפו. (I14d8f, ‏ b/329126308, ‏ b/339085669)
  • מעקב אחר שיטות פועל בשלב נפרד במהלך בדיקת Macrobenchmark, והוא כבר לא משפיע על המדידות. (If9a50, ‏ b/285912360, ‏ b/336588271)
  • נוספו הצעות נוספות לניפוי באגים להודעה על כישלון בשידור של שגיאת Shader. (I5efa6, ‏ b/325502725)

גרסה 1.3.0-alpha04

1 במאי 2024

androidx.benchmark:benchmark-*:1.3.0-alpha04 משוחרר. גרסת 1.3.0-alpha04 מכילה את ההוספות האלה.

שינויים ב-API

  • נוספה וריאנט MacrobenchmarkRule#measureRepeated ניסיוני שמקבל PerfettoConfig מותאם אישית להקלטת נתוני Perfetto בהתאמה אישית מלאה. חשוב לזכור שהגדרות לא נכונות עשויות לגרום לכשל בכיתות מובנות של מדדים. (Idfd3d, ‏ b/309841164, ‏ b/304038384)
  • שינוי השם של PowerMetric.deviceSupportsPowerEnergy ל-PowerMetric.deviceSupportsHighPrecisionTracking לשם הבהרה (I5b82f)
  • הוספנו את PowerMetric.deviceBatteryHasMinimumCharge() ו-PowerMetric.deviceSupportsPowerEnergy() כדי לאפשר שינוי או דילוג על אמות המידה על סמך יכולת מדידת צריכת האנרגיה של המכשיר. (I6a591, ‏ b/322121218)

תיקוני באגים

  • נוספה השוואה לפרופיל הבסיס הקודם (I824c8, ‏ b/269484510)
  • נוספה אפשרות להשתמש ב-DSL כדי להשבית אזהרות (Ic4deb, ‏ b/331237001)
  • שינוי חריג ביומן המידע כשוריאציות של מדדי השוואה מושבתות (I8a517, ‏ b/332772491)
  • קל יותר לתעד את ה-traces של ה-method עבור Macrobenchmark שמוגדר להיקף של משך הזמן של ה-measureBlock() בפועל. בעבר, הוא הופעל עם הפעלת תהליך היעד ותומך רק בהפעלות במצב התחלתי (cold start) (Iee85a, ‏ b/300651094)
  • מניעת קריסה כשעיבוד המעקב של Perforto מתחיל לאט (I98841, ‏ b/329145808)

גרסה 1.3.0-alpha03

17 באפריל 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 משוחרר. גרסת 1.3.0-alpha03 מכילה את ההוספות האלה.

תכונות חדשות

  • הוספת ממשקי API PerfettoTraceProcessor.Session.queryMetrics ציבוריים עם וריאנטים של JSON,‏ textproto ו-proto binary (לא מפוענח). הם מאפשרים להריץ שאילתות על מדדים שמובנים ב-TraceProcessor (I54d7f, ‏ b/304038382)
  • הוספנו את profilerOutput לפלט ה-JSON כדי להקל על שימוש בכלים לניתוח נתוני פרופיל (למשל, perfetto,‏ method traces). (I05ddd, ‏ b/332604449)
  • הוספנו תג צריכת חשמל למדד השוואה של הגדרת Perfetto. לדוגמה, המערכת מתעדת נקודות מעקב של wakelock. (Icfe44, ‏ b/286551983)
  • הוספה של ארגומנטים inst‏ androidx.benchmark.profiling.skipWhenDurationRisksAnr, אפשר להגדיר ל-false כדי להימנע מדילוג על מעקב אחר שיטות כשמשך הזמן הצפוי עלול לגרום ל-ANR – מומלץ מאוד להימנע מכך בהרצות CI.
  • נוספה ארגומנטים ניסיוניים של inst‏ androidx.benchmark.profiling.perfCompare.enable, צריך להגדיר את הערך הזה כ-true כדי להריץ את תזמון ההשוואה בין שלבי המדידה לבין שלבי היצירה של פרופיל. שימושי למשל להערכת התקורה של מעקב אחר שיטות. (I61fb4, ‏ b/329146942)

שינויים ב-API

  • שינינו את TraceSectionMetric.Mode לכיתה אטומה כדי לאפשר הרחבה עתידית בלי לשבור את הצהרות ה-when המקיפות (I71f7b)
  • הוספנו את TraceSectionMetric.Mode.Average ו-.Count, וסידרנו מחדש את הארגומנטים כך שהארגומנט הנפוץ יותר (mode) יופיע מוקדם יותר ברשימת הארגומנטים, וכך הפחתנו את הצורך לציין שמות של פרמטרים. (Ibf0b0, ‏ b/315830077, ‏ b/322167531)
  • השם של Metric.getResult השתנה ל-getMeasurements כדי להתאים לסוג ההחזרה (I42595)

תיקוני באגים

  • תיקון כדי לוודא שבדוחות השוואה נעשה שימוש בפרופילים בסיסיים שנוצרו כשהאפשרות automaticGenerationDuringBuild מושבתת (Ic144f, ‏ b/333024280)
  • תיקון של החלפות ברירת המחדל של מאפייני הפלאגין BaselineProfile ב-Gradle, כדי לאפשר יצירת פרופיל בסיס ובדיקת ביצועים כשמתאימים אישית סוג build של nonMinified או של בדיקת ביצועים. (Ib8f05, ‏ b/324837887)
  • תיקון של שטיפת נתוני מעקב אחר שיטות במבחן ביצועים ברמת המאקרו, כך שנתוני המעקב אחר השיטות יתועדו במלואם ויתאימו לשימוש, גם במכשירים איטיים יותר. (I6349a, ‏ b/329904950)
  • הפעלת התחלה חסומה ברשומת המעקב של Perfetto כדי לצמצם את הסיכון לנתונים חסרים בתחילת המעקב. התכונה נתמכת רק ב-API מגרסה 33 ואילך. (Ie6e41, ‏ b/310760059)
  • הוספנו אזהרה כשמשתמשים ב-Android Test Orchestrator במודולים של מדדי ביצועים, כי הפעולה הזו תגרום לכתיבה חוזרת של קובצי JSON של פלט לכל מודול. (Ia1af6, b/286899049)
  • איך מגדירים פסיק (,) כמפריד אלפיות כדי לשמור על עקביות בפלט של Studio, בלי להתחשב באזור הזמן המקומי של המכשיר (I3e921, ‏ b/313496656)
  • מעכשיו יש תמיכה ב-TraceSectionMetric בפלחים שנוצרו באמצעות Trace.{begin|end}AsyncSection. (I91b32, ‏ b/300434906)
  • נוספו תוויות log.w / exception לכל הכישלונות בזיהוי בזמן ההפעלה. השינוי הזה לא משנה את ההתנהגות הנוכחית (כך שחלק מהשגיאות יושלחו, וחלק אחר לא יזהו את האפליקציה בזמן ההפעלה), אלא רק מאפשר להבין אותה טוב יותר. בדרך כלל, אלה שהערך שלהם הוא Log.w() ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם פריימים. חריגות מתרחשות כשמתגלה הפעלה, מלבד מידע על תזמון הפריימים (מפלחים של UI/RT). (Id240f, ‏ b/329145809)
  • כדי לצמצם את ההפרעות, צריך לבטל את משימות ה-dexopt ברקע לפני שמריצים את Macrobenchmark. (I989ed)
  • הוספנו את המדידה frameCount ל-FrameTimingMetric כדי לעזור לכם לזהות תרחישים שבהם המדידות משתנות בגלל שינוי במספר הפריימים שנוצרו (נוספו אנימציות חדשות, תוקנו בעיות של ביטול תוקף). (I1e5aa)
  • הבהרנו ש-frameOverrunMs הוא המדד המועדף למעקב כשהוא זמין במסמכים, ומסבירנו למה. (I18749, ‏ b/329478323)

גרסה 1.3.0-alpha02

‫20 במרץ 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 משוחרר. גרסת 1.3.0-alpha02 כוללת את ההוספות האלה.

תכונות חדשות

  • תמיכה ניסיונית ב-R8 ב-microbench באמצעות כללי Proguard מוטמעים. לתשומת ליבכם: התמיכה הזו היא ניסיונית, ונדרשת AGP 8.3 כדי לבצע אופטימיזציה למינימום של בדיקות מודול הספרייה. כדי להפעיל את המינימציה או האופטימיזציה של R8 ב-build.gradle של מודול נקודת השוואה, צריך להשתמש בקוד הבא. הפעולה הזו אמורה להוביל לשיפור משמעותי בביצועים, בהתאם לעומס העבודה. (I738a3, ‏ b/184378053)

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

תיקוני באגים

  • תוקנה אזהרה לגבי מעקב אחר שיטות, כך שהיא תופיע בשורה נפרדת מהפלט של מבחן ה-microbench. (I0455c, ‏ b/328308833)

גרסה 1.3.0-alpha01

21 בפברואר 2024

androidx.benchmark:benchmark-*:1.3.0-alpha01 משוחרר. גרסה 1.3.0-alpha01 כוללת את ההוספות האלה.

שינויים ב-API

  • השמות של הפרמטרים הבוליאניים MicrobenchmarkConfig שונו כדי להימנע מהמילה המיותרת 'צריך' (Ia8f00, ‏ b/303387299)
  • הוספנו את BenchmarkRule.measureRepeatedOnMainThread כדי שבדיקות השוואה של השרשור הראשי (למשל, בדיקות שמשפיעות על תצוגות או על ממשקי המשתמש של Compose) יוכלו להימנע מהפעלת שגיאות ANR, במיוחד במהלך חבילות גדולות ב-CI. (I5c86d)
  • נוספה FrameTimingGfxInfoMetric, הטמעה חלופית ניסיונית של FrameTimingMetric עם מדידות שמגיעות ישירות מהפלטפורמה, במקום להיחלץ מהמעקב של Perfetto. (I457cb, ‏ b/322232828)
  • נוספה היכולת לדגום פרופיל ART במהלך חזרות warmUp ספציפיות. (I17923)
  • כמה שינויים ב-API של TraceSectionMetric:
    • הוספה של Mode.Min, Mode.Max
    • הוספת ארגומנטים של תוויות כדי לשנות את שם הקטע כתוויות של מדדים
    • נוסף שם המצב לפלט כדי להבהיר את משמעות המדד
    • שינינו את ברירת המחדל לסכום, כי רוב השימוש במדד הזה הוא לאירועים חוזרים. חשוב לשים לב לשינויים האלה בשימוש ב-CI, כי הם עלולים ליצור הפסקות או לשבור את הניתוח. (Ic1e82, ‏ b/301892382, ‏ b/301955938)

תיקוני באגים

  • הודעת שגיאה משופרת בפלאגין של Gradle בפרופיל הבסיס, כשהמכשיר המנוהל שצוין לא קיים (Idea2b,‏ b/313803289)
  • תיקון שאפשר לכלול פרופיל בסיס של ספרייה ב-AAR לפני AGP 8.3.0-alpha15 (I1d2af, ‏ b/313992099)
  • תוקנה כתובת ה-URL של הפלט של פרופיל הבסיס ופרופיל האתחול בסוף המשימה ליצירה (I802e5, ‏ b/313976958)
  • שינינו את זמן הקצאת הזמן של מקורות הנתונים כדי לנסות לפתור את הבעיה ב-java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, ‏ b/323601788)
  • מוסיפים שני ארגומנטים של מכשור כדי לשנות את התנהגות השמטת ה-shader, כדי לעקוף קריסות כשמבצעים בדיקת ביצועים של אפליקציות בלי ProfileInstaller 1.3:
    • androidx.benchmark.dropShaders.enable=true/false : אפשר להשתמש בה כדי לדלג על כל השמטת שגיאות בקוד שקשורות לשיפור איכות התמונה (כולל השמטות שגיאות בקוד שקשורות להשקות של StartupMode.Cold), במיוחד כשבודקים את הביצועים של אפליקציות שעדיין לא משתמשות ב-profileinstaller 1.3
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : אפשר להשתמש בו כדי לסבול כשלים בניסיון להסיר שגיאות, למשל כשבודקים אפליקציות ללא profileinstaller 1.3 (I4f573)
  • דילוג על מעקב אחר שיטות בשרשור של ממשק המשתמש כשהפעולה צפויה להימשך יותר מכמה שניות, וניפוי של מעקב אחר שיטות כשמתבצעת הטלה. (I6e768)
  • הבעיה מתרחשת כששמות הקבצים ארוכים מ-200 תווים, כדי למנוע קריסות לא ברורות בזמן כתיבת קבצים או לאחר עיבוד שלהם. (I4a5ab)
  • תוקנה בעיה שבה יכול להיות שפריימים ללא סיומת בתחילת המעקב ובסופו ישויכו יחד, מה שעלול לגרום לדיווח שגוי על פריים אחד ארוך במיוחד. (I39353, b/322232828)
  • משתמשים ב---skip verification ב-API מגרסה 30 ואילך כשמתקינים מחדש חבילה ב-API מגרסה 30 עד 33 כדי לנקות את פרופילי ה-ART ב-builds של משתמשים. כך אפשר לעקוף אזהרות של Play Protect שגורמות לכשל בחלק מסוגי המכשירים. (Ic9e36)
  • משתמשים ב-am force-stop כדי לסגור אפליקציות שאינן אפליקציות מערכת, כמו System UI או Launcher. (I5e028)
  • Macrobenchmark ממתין עכשיו ל-1 second כדי שהאפליקציה היעד תנקה פרופיל ART (בעבר הוא חיכה ל-500 ms). (I85a50, ‏ b/316082056)
  • שיפור השגיאה FrameTimingMetric כשלא נוצרים פריימים, ותמיד פלט קישור למעקב אחרי הבעיה כשהניתוח של המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9)
  • תוקנה קריסה ב-FrameTimingMetric שנגרמה מאי-ניתוח של מזהה המסגרת, במיוחד במכשירים מסוימים של יצרני ציוד מקורי. (Ia24bc, ‏ b/303823815, ‏ b/306235276)
  • הוספת פרטים נוספים להודעות השגיאה והקלה על הדרישות של הבדיקות ב-FrameMetrics. (Iadede)

גרסה 1.2

גרסה 1.2.4

17 באפריל 2024

androidx.benchmark:benchmark-*:1.2.4 משוחרר. גרסת 1.2.4 מכילה את ההוספות האלה.

תיקוני באגים

  • תוקנה בעיה שבה לא הוגדר srcset בפרופיל הבקרה בגרסאות של מדדי הביצועים. תיקון גם של automaticGenerationDuringBuild בספריות שגורמות לתלות מעגלית. (I28ab7, ‏ b/333024280)
  • משתמשים ב-am force-stop כדי לסגור אפליקציות שאינן אפליקציות מערכת, כמו System UI או Launcher. התיקון הזה מתקן קריסה של אמות המידה של StartupMode.COLD בגלל השגיאה "Package $package must not be running prior to cold start!" (אסור שהחבילה $package תפעל לפני הפעלה מחדש) כתוצאה מכך שההוצאה משימוש של התהליך לא הושלמה. (I5e028)

גרסה 1.2.3

24 בינואר 2024

androidx.benchmark:benchmark-*:1.2.3 משוחרר. גרסה 1.2.3 מכילה את ההוספות האלה.

תיקוני באגים

  • הוסרה החרגה מפלאגין Gradle של פרופיל הבסיס כשגרסת AGP היא 8.3.0 ואילך.
  • תיקון להכללת פרופילים בסיסיים של ספריות ב-AAR לפני AGP 8.3.0-alpha15.

גרסה 1.2.2

1 בדצמבר 2023

androidx.benchmark:benchmark-*:1.2.2 משוחרר. גרסה 1.2.2 כוללת את השמירות האלה.

פרופילים Baseline

  • ביומני הביצוע יופיע נתיב קובץ הפלט של פרופיל הבסיס כמזהה URI של קובץ מקומי (aosp/2843918, ‏ aosp/2853665, ‏ b/313976958)

גרסה 1.2.1

15 בנובמבר 2023

androidx.benchmark:benchmark-*:1.2.1 משוחרר. גרסה 1.2.1 מכילה את השמירות האלה.

תכונות חדשות

  • שיפרנו את הודעת השגיאה שמופיעה כשמשתמש משבית וריאציות בדיקה (b/307478189)
  • נוספו מאפיינים שתומכים בשילוב של ריצות בדיקה של AS (b/309805233), (b/309116324)

גרסה 1.2.0

18 באוקטובר 2023

androidx.benchmark:benchmark-*:1.2.0 משוחרר. גרסה 1.2.0 מכילה את ההוספות האלה.

שינויים חשובים מאז גרסה 1.1.0

פרופילים Baseline

  • Plugin חדש ל-Gradle לפרופיל בסיס מאפשר תיעוד אוטומטי של פרופילים בסיסיים והכללתם בתהליך העבודה של הבדיקה וה-build.
  • BaselineProfileRule.collect עכשיו יציב, גרסה פשוטה ומודרנית של ממשק ה-API הניסיוני הקודם של BaselineProfileRule.collectBaselineProfile
    • פשוט מציינים את packageName ומקדמים את האפליקציה
  • בספריות שיוצרות פרופילים בסיסיים, עכשיו אפשר לסנן את הכללים שנוצרים בקוד (ארגומנט BaselineProfileRule.collect) או בצורה פשוטה יותר בפלאגין של gradle.
  • תיקונים
    • תיקון האיסוף של פרופיל הבסיס ב-Android U+‏ (Id1392, ‏ b/277645214)

Macrobenchmark

  • הידור
    • עכשיו, הכלי Macrobenchmark מאפס בצורה נכונה את מצב הידור בכל פעם שמתבצע הידור. לשם כך, צריך להתקין מחדש את קובץ ה-APK לפני Android 14. לכן מומלץ מאוד לבצע בדיקות ב-Android מגרסה 14 ואילך אם רוצים לשמור מצב (כמו התחברות של משתמש) במה שנמדד.
    • אפשר גם לעקוף את הבעיה הזו על ידי שליטה בנפרד בתהליך הידור האפליקציה, ודילוג על הידור באמצעות CompilationMode.Ignore() או ארגומנט של הטמעת מכשירי מעקב.
  • ארגומנטים של Instrumentation

    • תמיכה בארגומנט של מכשיר המדידה androidx.benchmark.dryRunMode.enable (כבר זמין ב-microbenchmark) להרצות אימות מהירות יותר (למשל, כשיוצרים את מדד הביצועים או לפני שליחת הקוד לבדיקה)
    • תמיכה ב-androidx.benchmark.profiling.mode=StackSampling וב-MethodTracing.
    • הוספנו את androidx.benchmark.enabledRules כדי לאפשר סינון של פרופיל בסיס בסביבת זמן ריצה לעומת בדיקות של כללי מאקרו-בדיקות
    • נוספה הארגומנט androidx.benchmark.perfettoSdkTracing.enable כדי להפעיל מעקב באמצעות tracing-perfetto, למשל Compose recomposition tracing. חשוב לזכור שבשימוש עם StartupMode.COLD, התזמון יושפע באופן משמעותי כי ספריית המעקב נטענת ומופעל במהלך הפעלת האפליקציה.
  • הדרישות

    • כדי להפעיל את האפשרויות 'צילום פרופיל' או 'איפוס פרופיל' וניקוי מטמון של שגיאות שרטוט, נדרש עכשיו ב-Macrobenchmark ProfileInstaller מגרסה 1.3.0 ואילך באפליקציית היעד.
  • Metrics API ניסיוניים חדשים

    • נוספה פונקציה ניסיונית TraceSectionMetric שמאפשרת לחלץ תזמון פשוט מבלוק trace("") {} באפליקציה, או TraceMetric שמאפשרת לנצל את יכולת השאילתות המלאה של Perfetto TraceProcessor.
    • נוספה PowerMetric ניסיונית כדי לתעד את נתוני צריכת החשמל
    • נוספה תכונה ניסיונית MemoryCountersMetric לספירת שגיאות בדפים
    • הוספנו ממשק API ניסיוני של PerfettoTraceProcessor, שמשמש באופן פנימי לחילוץ מדדים ממעקב אחר אירועים במערכת (נקרא גם מעקב אחר אירועים ב-Perfetto)
  • תיקונים

    • תוקנו קריסות בזמן התקנה או חילוץ של פרופילים מאפליקציה שמותקנת מכמה קובצי APK (למשל, מ-App Bundle).
    • תוקנה בעיה שבה FrameTimingMetric התעלם מסגרות עם מזהי מסגרות לא עקביים (בדרך כלל, מסגרות במהלך תנודות ב-API 31 ואילך) (I747d2, ‏ b/279088460)
    • תוקנו שגיאות ניתוח בנתוני מעקב (trace) גדולים מ-64MB (Ief831, ‏ b/269949822)
    • שגיאות בהירות יותר כשקובץ האימג' של מערכת ההפעלה של המכשיר (במיוחד של המהדמ) לא מוגדר כראוי למעקב או ל-compilation
    • דילוג על בדיקת רמת הטעינה של הסוללה במכשירים ללא סוללה (מיקרו ומאקרו)
    • שיפור בפלט הקבצים, עם שגיאות ברורות יותר לתיקיות פלט לא חוקיות ועם ברירות מחדל בטוחות יותר
    • שיפור היציבות של StartupMode.COLD על ידי ביטול עקבי של מטמון השיזרים (שמוצג גם דרך MacrobenchmarkScope.dropShaderCache)
    • תוקנה חלופה ל-leanback עבור startActivityAndWait.

Microbenchmark

  • תכונות
    • ניתוח הפרופיל הועבר לשלב נפרד, אחרי מדדים אחרים, כך שרצת בדיקה אחת יכולה להציג גם תוצאות מדויקות של תזמון וגם תוצאות של ניתוח פרופיל.
  • ממשקי API ניסיוניים
    • הוספנו ממשק API ניסיוני של MicrobenchmarkConfig להגדרת מדדים מותאמים אישית ולהגדרת מעקב ויצירת פרופילים. אפשר להשתמש בהם כדי לתעד מעקב אחר שיטות או כדי לתעד נקודות מעקב (אבל חשוב לזכור את העלויות הנלוות של המעקב).
    • נוספו ממשקי API ניסיוניים לצורך שליטה ב-BenchmarkState בנפרד מ-BenchmarkRule, ללא JUnit
    • הוספנו רשומה ניסיונית של PerfettoTrace כדי לאפשר תיעוד של נתוני Perfetto, עם הגדרה מותאמת אישית, בנפרד מממשקי ה-API למדדי ביצועים.
  • תיקונים
    • פתרון לבעיה של מרחבי ריק חסרים בהתחלה של פלט של בדיקת ביצועים ב-Android Studio.
    • תוקנה בעיה שבה יכול להיות שלא ניתן יהיה להדפיס אזהרות בפלט של מדדי הביצועים של Android Studio.
    • תוקנה קריסה של SampledProfiling ב-Android 13 (API 33) ואילך.
    • שיפור משמעותי בביצועים של dryRunMode על ידי דילוג על IsolationActivity ועל מעקב Perfetto (מצב ריצה ללא הפעלה מהיר פי 10 בגרסאות ישנות יותר של מערכת ההפעלה).

גרסה 1.2.0-rc02

6 באוקטובר 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 משוחרר. גרסה 1.2.0-rc02 כוללת את ההוספות האלה.

תיקוני באגים

  • תיקון הפלט של קובץ Benchmark כך שלא יגרום יותר לשיבושים בהעתקת קובצי הפלאגין של BaselineProfile. הקבצים נוצרו והועתק מהמכשיר, אבל השם שלהם השתנה כך שהפלאגין של gradle לא יראה אותם. (I8dbcc, ‏ b/303034735, ‏ b/296453339)
  • הבהרה לגבי הודעות השגיאה של טעינה של tracing-perfetto כשמזריקים ממודול של macrobenchmark לאפליקציית היעד.

גרסה 1.2.0-rc01

20 בספטמבר 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 משוחרר. גרסה 1.2.0-rc01 כוללת את ההוספות האלה.

תיקוני באגים

  • עכשיו מתרחשת זריקה של חריגה (עם הוראות לתיקון) כשהמעקב של Perfetto SDK נכשל בהפעלה ב-Benchmark. (I6c878, ‏ b/286228781)
  • תיקון קריסה של OOM במהלך המרה של מעקב אחר שיטות ART לפורמט של perfetto. (I106bd, ‏ b/296905344)
  • (Macrobenchmark) הבהרנו את התווית של מעקב אחר שיטות כשהיא מקושרת בפלט הבדיקה של Studio, ותיקנו את שמות הקובצים של מעקב אחר שיטות כך שיהיו ייחודיים במכשיר או במארח, כדי שלא יתבצע כתיבה מחדש שלהם כשמריצים יותר מבדיקה אחת. (I08e65, ‏ b/285912360)
  • מוודאת שהמכשיר פעיל בזמן צילום פרופיל בסיס. (I503fc)

גרסה 1.2.0-beta05

30 באוגוסט 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 משוחרר. גרסה 1.2.0-beta05 כוללת את השמירות האלה.

תכונות חדשות

  • פלאגין Baseline Profile Gradle תומך עכשיו ב-Android Gradle Plugin 8.3. (aosp/2715214)

גרסה 1.2.0-beta04

23 באוגוסט 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 משוחרר. גרסה 1.2.0-beta04 כוללת את ההצהרות האלה.

תכונות חדשות

  • פלאגין Baseline Profiles ל-Gradle תומך עכשיו ב-Android Gradle Plugin 8.3. (aosp/2715214)

תיקוני באגים

  • כדי לתקן כשלים בכתיבת קבצים, בהעברת קבצים ובשליפה שלהם (במיוחד קבצים מבדיקות עם פרמטרים), צריך לבצע סינון נוסף של שמות קובצי הפלט, ולהימנע משימוש בתווים '=' ו-':' בשמות קובצי הפלט. (I759d8)

גרסה 1.2.0-beta03

9 באוגוסט 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 משוחרר. גרסה 1.2.0-beta03 מכילה את ההצהרות האלה על ביצוע שינויים.

שינויים ב-API

  • הוספת ארגומנט למסנן TraceSectionMetric כך שיחול רק על חבילת היעד, מופעל כברירת מחדל (Ia219b, ‏ b/292208786)

תיקוני באגים

  • שינינו את השם של הארגומנט של המדידה fullTracing.enable ל-perfettoSdkTracing.enable כדי לשמור על עקביות עם שם הארטיפקט והפניות אחרות. fullTracing.enable ימשיך לפעול כגיבוי. (I7cc00)
  • נקודות מעקב פנימיות בספריית מדדי הביצועים (כולל מעקב אחר לולאות או שלבים של מיקרו-מדדי ביצועים) יופיעו עכשיו בתצוגת המעקב אחרי המערכת ב-Studio, ויוצגו ב-Perfetto מתחת לתהליך הנכון. (I6b2e7, ‏ b/293510459)
  • הוסר השגיאה NOT-PROFILEABLE ב-macrobenchmark ב-API 31 ואילך, והבדיקה של האפשרות ליצירת פרופיל הושמטה במכשירים עם הרשאת root ב-eng/userdebug. (I2abac, ‏ b/291722507)
  • כשמשתמשים באופטימיזציות של פריסה ב-Dex, כללי הפרופיל של האפליקציה שמופיעה בזמן ההפעלה נחשבים עכשיו גם לכללי פרופיל בסיסיים. (aosp/2684246, ‏ b/293889189)

גרסה 1.2.0-beta02

26 ביולי 2023

androidx.benchmark:benchmark-*:1.2.0-beta02 משוחרר. גרסה 1.2.0-beta02 מכילה את ההצהרות האלה.

שינויים ב-API

  • נוספו ממשקי API ניסיוניים למדדים מותאמים אישית ולהגדרות של מיקרו-בנק (למשל, פרופיל וניתוח נתונים). (I86101, ‏ b/291820856)

תיקוני באגים

  • דיווח על שגיאה ב-macrobench כשמערכת ההפעלה מוגדרת באופן שגוי למעקב, כפי שתוקנה לאחרונה במהדמרים של API 26/28 ARM64. (I0a328, b/282191686)
  • הוספנו פרטים לגבי כשל איפוס הידור כדי להציע לעדכן את הסימולטור, כי בחלק מהסימולטורים הבעיה הזו נפתרה לאחרונה. (I8c815, b/282191686)
  • הופכים את androidx.test.uiautomator:uiautomator:2.2.0 ל-api במקום ל-implementation. (I1981e)

גרסה 1.2.0-beta01

18 ביולי 2023

androidx.benchmark:benchmark-*:1.2.0-beta01 משוחרר. גרסה 1.2.0-beta01 כוללת את ההצהרות האלה.

תיקוני באגים

  • תיקון אזהרות שנמחקות לפעמים בפלט של Benchmark ב-Studio, ופתרון לבעיה של רווחים לבנים בתחילת הפלט של Benchmark שלא מוצגים ב-Studio (Ia61d0, ‏ b/227205461, ‏ b/286306579, ‏ b/285912360)
  • תגובה תוקנה עבור FrameTimingMetric. השם של מדד המשנה הוא frameDurationCpuMs. (Ib097f, ‏ b/288830934).

גרסה 1.2.0-alpha16

21 ביוני 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 משוחרר. גרסה 1.2.0-alpha16 מכילה את ההצהרות האלה.

שינויים ב-API

  • השם של ממשק ה-API BaselineProfileRule.collectBaselineProfile() השתנה ל-BaselineProfileRule.collect(). (I4b665)

תיקוני באגים

  • תמיכה ב-Macrobenchmark עבור androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, ‏ b/285912360)
  • יצירת הפרופיל של מיקרו-בדיקות הביצועים הועברה לשלב נפרד, כך שהיא מתבצעת ברצף אחרי המדידה, במקום להחליף אותה. קטעי המעקב של MethodTracing נכללים עכשיו גם בנתוני המעקב של Perfetto שצולמו, אם הם קיימים. (I9f657, ‏ b/285014599)
  • מוסיפים מדידת ספירה ל-TraceSectionMetric באמצעות Mode.Sum. (Ic121a, ‏ b/264398606)

גרסה 1.2.0-alpha15

7 ביוני 2023

androidx.benchmark:benchmark-*:1.2.0-alpha15 משוחרר. גרסה 1.2.0-alpha15 מכילה את ההצהרות האלה.

תכונות חדשות

  • נוספה פונקציית MemoryUsageMetric ניסיונית למעקב אחר השימוש בזיכרון של יישום יעד. (I56453, ‏ b/133147125, ‏ b/281749311)
  • הוספת תמיכה בהגדרות Perfetto בהתאמה אישית מלאה באמצעות PerfettoTrace.record (If9d75, ‏ b/280460183)
  • הוספת נכס כדי לדלג על יצירת פרופיל בסיס. שימוש: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, ‏ b/283447020)

שינויים ב-API

  • ממשק ה-API של collectBaselineProfile יוצר תמיד פרופילים בסיסיים יציבים. ממשק ה-API collectStableBaselineProfile הוסר, ובמקום זאת צריך להשתמש ב-collectBaselineProfile. (I17262, b/281078707)
  • שינינו את הארגומנט filterPredicate של BaselineProfileRule לערך שאינו null, עם ערך ברירת מחדל שווה ערך, כדי שהתנהגות ברירת המחדל של המסנן תהיה ברורה יותר במסמכים. (I3816e)

תיקוני באגים

  • כדי לשפר משמעותית את הביצועים, כדאי להשבית את IsolationActivity ואת המעקב של Perfetto ב-dryRunMode, כי הם היוו את רוב זמן הריצה. (Ie4f7d)
  • תמיכה במדגם של סטאק הקריאות בבדיקות מאקרו-ביצועים באמצעות ארגומנטים של בדיקת מכשור androidx.benchmark.profiling.mode=StackSampling ו-androidx.benchmark.profiling.sampleFrequency. (I1d13b, ‏ b/282188489)
  • תיקון קריסה כשמשחררים שיבושים ב-Android U‏ (API 34), וגם במהדמרים. (I031ca, ‏ b/274314544)

גרסה 1.2.0-alpha14

3 במאי 2023

androidx.benchmark:benchmark-*:1.2.0-alpha14 משוחרר. גרסה 1.2.0-alpha14 מכילה את ההצהרות האלה.

תיקוני באגים

  • תיקון של FrameTimingMetric שמתעלם ממסגרות עם מזהי מסגרות לא עקביים. כתוצאה מכך, חלק מהאנימציות בגרסאות הפלטפורמה האחרונות (API 31 ואילך) יתעלמו מפריימים רבים בזמן שהאנימציה של RenderThread מתבצעת (למשל, במהלך תנודות). (I747d2, ‏ b/279088460)
  • תוקנה בעיה בניתוח של מעבד המעקב לגבי מעקבים גדולים מ-64MB. (Ief831, b/269949822)
  • תוקנה בעיה ביצירת פרופיל בסיס ב-Android U בגלל הפלט השונה של הפקודה pm dump-profiles. (Id1392, ‏ b/277645214)
  • תיקון הסקריפט לנעילת שעון ה-GPU כדי להשוות בין מחרוזות בצורה נכונה (I53e54, ‏ b/213935715)

גרסה 1.2.0-alpha13

5 באפריל 2023

androidx.benchmark:benchmark-*:1.2.0-alpha13 משוחרר. גרסה 1.2.0-alpha13 מכילה את ההוספות האלה.

שינויים ב-API

  • הוספנו פרמטר של סוג פרופיל כשיוצרים פרופילים בסיסיים, כדי לתמוך בתכונה הקרובה של פרופיל סטארט-אפ (Ie20d7,‏ b/275093123)
  • הוספנו ממשק API ניסיוני חדש מסוג TraceMetric להגדרת מדדים מותאמים אישית לחלוטין על סמך התוכן של מעקב Perfetto. (I4ce31, ‏ b/219851406)
  • הוספת מדד ניסיוני כדי לקבוע את מספר שגיאות הדף במהלך בדיקת ביצועים. (I48db0)

גרסה 1.2.0-alpha12

22 במרץ 2023

androidx.benchmark:benchmark-*:1.2.0-alpha12 משוחרר. גרסה 1.2.0-alpha12 מכילה את ההוספות האלה.

תכונות חדשות

  • הפלאגין החדש של פרופיל הבסיס ב-Gradle זמין עכשיו בגרסת אלפא. הוא מאפשר ליצור פרופיל בסיס בקלות רבה יותר, ומפשט את תהליך העבודה של המפתחים.

שינויים ב-API

  • הסרנו את התמיכה במעקב של Perfetto ב-API 21 וב-API 22, כולל ב-Microbenchmarks ובממשקי ה-API הניסיוניים של PerfettoTrace. לפני הגרסה הזו, החיבורים של UiAutomation לא היו מהימנים במכשירים מסוימים. (I78e8c)
  • הוספנו ממשק API ניסיוני ציבורי ל-PerfettoTraceProcessor כדי לאפשר ניתוח של תוכן המעקב. זהו צעד נוסף לקראת מדדים מותאמים אישית לחלוטין שמבוססים על נתוני המעקב של Perfetto. (I2659e, ‏ b/219851406)

גרסה 1.2.0-alpha11

8 במרץ 2023

androidx.benchmark:benchmark-*:1.2.0-alpha11 משוחרר. גרסה 1.2.0-alpha11 מכילה את ההצהרות האלה.

תיקוני באגים

  • תוקנו קריסות ב-MacrobenchmarkRule וב-BaselineProfileRule במהלך התקנה מחדש או חילוץ פרופילים מחבילת אפליקציות עם כמה קובצי APK. (I0d8c8, ‏ b/270587281)

גרסה 1.2.0-alpha10

22 בפברואר 2023

androidx.benchmark:benchmark-*:1.2.0-alpha10 משוחרר. גרסה 1.2.0-alpha10 מכילה את ההצהרות האלה.

תכונות חדשות

  • ב-Android מגרסה 14 ואילך, Macrobenchmark כבר לא מתקין מחדש אפליקציות יעד כדי לאפס את מצב הידור, הודות לתכונה חדשה בפלטפורמה. בעבר היה צורך במכשיר עם הרשאת root, או לטפל בהסרה של כל מצב האפליקציה (למשל, התחברות של משתמש) לפני כל הרצת מדד ביצועים. (I9b08c, ‏ b/249143766)

תיקוני באגים

  • תיקון DryRunMode כדי שהתוכנה לא תקרוס יותר עם פרופיל ריק, בגלל דילוג על הידור. במקום זאת, הוא מפעיל חזרה אחת ומחלץ את הפרופיל כדי לוודא שמשהו מתועד. (I2f05d, ‏ b/266403227)
  • תיקון קריסה של PowerMetric בזמן בדיקה של נוכחות של powerstats ברמות API ישנות. (5faaf9, ‏ b/268253898)

גרסה 1.2.0-alpha09

11 בינואר 2023

androidx.benchmark:benchmark-*:1.2.0-alpha09 משוחרר. גרסה 1.2.0-alpha09 מכילה את ההצהרות האלה.

תיקוני באגים

  • הפעלנו העברה של None לארגומנט של המדידה androidx.benchmark.enabledRules כדי להשבית את כל יצירת הפרופילים של אמות המידה או של הבסיס. (I3d7fd, ‏ b/258671856)
  • תיקון של תיעוד PerfettoTrace במודולים של אפליקציות (כלומר, חבילות APK לבדיקה שלא כוללות כלי למדידה עצמית) (I12cfc)
  • תוקנה הסדר של הארגומנטים של adb pull בפרופיל הבסיס בתוצר של Studio (I958d1, ‏ b/261781624)
  • Arm emulator api 33 מזוהה עכשיו כראוי כאשר מנסים להריץ בדיקת ביצועים ברמת המאקרו, והאזהרה תודפס בצורה נכונה. (69133b,‏b/262209591)
  • דילוג על בדיקת רמת הטעינה של הסוללה במכשירים ללא סוללה ב-Macrobenchmark (fe4114, ‏ b/232448937)

גרסה 1.2.0-alpha08

7 בדצמבר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha08 משוחרר. גרסה 1.2.0-alpha08 מכילה את ההוספות האלה.

שינויים ב-API

  • נוספו ממשקי API חדשים וניסיוניים, PerfettoTrace.record {} ו-PerfettoTraceRule, כדי לתעד עקבות של Perfetto (שנקראים גם 'עקבות מערכת') כחלק מבדיקה, כדי לבדוק את ההתנהגות והביצועים של הבדיקה. (I3ba16)
  • עכשיו אפשר להשתמש ב-BaselineProfileRule עם תנאי סינון במקום עם רשימה של קידומות של חבילות. כך לבדיקה תהיה שליטה מלאה על הסינון. (I93240)
  • מוסיפים API ניסיוני BaselineProfileRule.collectStableBaselineProfile שממתין עד שפרופיל בסיס יהיה יציב במשך N חזרות. (I923f3)
  • נוספה האפשרות לציין תחילית של שם קובץ פלט כשיוצרים פרופילים בסיסיים באמצעות BaselineProfileRule. (I7b59f, ‏ b/260318655)

תיקוני באגים

  • שיפור הבטיחות של כתיבת פלט של קובץ, כדי למנוע מצב שבו קובצי פלט לא נכתבים או מצורפים ללא התראה, במיוחד ב-API 21/22. (If8c44, ‏ b/227510293)
  • מתקנים את פלט המעקב של simpleperf כדי ליצור את הקובץ ולמקם אותו בצורה נכונה. הפעולה הזו אמורה לפתור גם בעיות כלליות יותר שבהן gradle לא מצליח למשוך קובץ. (I12a1c, ‏ b/259424099)
  • שיפור הודעת השגיאה של profileinstaller שמודפסת כשהגרסה של profileinstaller ישנה מדי. עכשיו מוצגת הודעת עדכון לגרסה של profileinstaller‏ (1.2.1) למדידת פרופילים בסיסיים ב-API 31 עד 33, במקום הודעת אי-תמיכה. (Ia517f, ‏ b/253519888)
  • תיקון כמה כשלים בפקודות מעטפת בהודעת השגיאה Print needed API <=23, כולל כשלים בהגדרת הקלטה בינארית של perfetto וכשלים בהקלטת נתוני מעקב (Ib6b87, ‏ b/258863685)
  • מיון אוטומטי של כללי הפרופיל שנוצרו כדי לצמצם את מספר השינויים כשהם משתנים לאורך זמן (כשמבצעים צ'ק-אין של כללי הפרופיל במערכת בקרת הגרסאות). (Ie2509)
  • תוקנה קריסה בגרסאות build ללא הרשאת root בגרסאות Android מתחת ל-13 (API 33) עם ההודעה Expected no stderr from echo 3 > /proc/sys/vm/drop_caches (I6c245, ‏ b/259508183)

בעיות מוכרות - MacrobenchmarkScope.dropShaderCache() עלול לקרוס בגלל רישום שידור חסר במניפסט של הכלי להתקנת פרופילים, שעדיין לא פורסם. (I5c728, b/258619948) כדי לעקוף את הבעיה ב-profileinstaller:1.3.0-alpha02, מוסיפים את הקטע הבא לקובץ AndroidManifest.xml של האפליקציה (לא של אמת המידה):

  <!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
  <receiver
    android:name="androidx.profileinstaller.ProfileInstallReceiver"
    android:permission="android.permission.DUMP"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
    </intent-filter>
  </receiver>

גרסה 1.2.0-alpha07

9 בנובמבר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha07 משוחרר. גרסה 1.2.0-alpha07 מכילה את ההצהרות האלה.

שינויים ב-API

  • הוספנו את ממשק ה-API PowerMetric למדידת אנרגיה וחשמל בבדיקות ביצועים ברמת המאקרו. (Ife601, ‏ b/220183779)
  • תוקנה MacrobenchmarkScope.dropShaderCache() כדי למחוק את מטמון השיזוע בפועל. כך אפשר להסיר כ-20 אלפיות השנייה של רעש מנתוני השוואה (benchmarks) של StartupMode.COLD, כי עכשיו ה-shaders נמחקים באופן עקבי בכל חזרה (iteration). בעבר, הידור של Partial באמצעות איטרציות של התחממות דיווח על מספרים מהירים באופן שגוי, כי סביר יותר שהאחסון במטמון של שגיאות יתרחש במהלך התחממות. כדי לבצע את התיקון הזה, צריך מכשיר עם הרשאת root או להשתמש ב-profileinstaller:1.3.0-alpha02 באפליקציית היעד. לשינויים ב-API של ספריית ProfileInstaller, אפשר לעיין בדף ProfileInstaller 1.30-alpha02. (Ia5171, ‏ b/231455742)
  • הוספנו את TraceSectionMode("label", Mode.Sum), שמאפשר למדוד את משך הזמן הכולל שחלף במספר קטעי מעקב עם אותה תווית. לדוגמה, TraceSectionMetric("inflate", Mode.Sum) ידווח על המדד inflateMs לגבי משך הזמן הכולל במבחן הביצועים ברמת המאקרו שהושקע באינפלציה. כמו כן, הסרנו את הדרישה ל-API 29, כי TraceSectionMetric פועל בשילוב עם androidx.tracing.Trace חזרה לרמות API נמוכות יותר, באמצעות השימוש ב-forceEnableAppTracing באפליקציית היעד. (Id7b68, b/231455742)

תיקוני באגים

  • שיפור הבטיחות של כל הפקודות הפנימיות של המעטפת על ידי אימות כל הפלט או השגיאות. (I5984d, ‏ b/255402908, ‏ b/253094958)
  • מציינים את המכשיר בפקודה adb pull של פרופיל הבסיס, כדי שאפשר יהיה להעתיק בקלות את פקודת ה-pull אם יש כמה מכשירים מחוברים (עד אמולטור אחד) (I6ac6c, b/223359380)
  • הוספת שגיאה אם קובץ ה-apk לבדיקה של macrobenchmark לא מוגדר ככלי למדידת ביצועים עצמאי. השגיאה הזו מונעת ביצוע של בדיקות ביצועים ברמת המאקרו מתוך התהליך של אפליקציית היעד. בתהליך, macrobench לא יוכל לקמפל/להרוג/להפעיל מחדש את האפליקציה או לשלוט בהרשאות שלו (I4279b)
  • תוקנה בעיה ב-measureRepeated() שבה StartupMode.COLD לא הפסיק את תהליך היעד אחרי setupBlock. עכשיו, אינטראקציה של setupBlock עם האפליקציה לא תגרום להפעלה של תהליך האפליקציה, ולא תתקבל מדידה לא חוקית של הפעלה מחדש. (I8ebb7)

גרסה 1.2.0-alpha06

24 באוקטובר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha06 משוחרר. גרסה 1.2.0-alpha06 מכילה את ההצהרות האלה.

שינויים ב-API

  • לא צריך יותר הרשאת root כדי להשתמש ב-BaselineProfileRule ב-Android 13 (API 33), והיא כבר לא נחשבת לניסיונית. (Ie0a7d, ‏ b/250083467, ‏ b/253094958)
    • השינוי הזה גם מתקן את האופן שבו פרופילים מאפליקציה נמחקים מהדיסק במכשירים ללא הרשאת root, אבל נדרש עדכון של יחסי התלות של profileinstaller באפליקציית היעד.
    • כדי להשתמש ב-BaselineProfileRule או ב-CompilationMode.Partial(warmupIterations) במכשיר ללא הרשאת root, צריך גם לעדכן את אפליקציית היעד כך שתשתמש ב-androidx.profileinstaller.profileinstaller:1.3.0-alpha01. כך אפשר לשטוף את הפרופיל בדיסק בצורה נכונה, כדי שניתן יהיה לקמפל או לחלץ אותו.

תיקוני באגים

  • תיקון קריסה של SampledProfiling ב-API מגרסה 33 ואילך. (I40743, ‏ b/236109374)

גרסה 1.2.0-alpha05

5 באוקטובר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 משוחרר. גרסה 1.2.0-alpha05 מכילה את ההוספות האלה.

תיקוני באגים

  • תיקון של פירוט המסגרות ב'צפייה בנתוני המעקב של המערכת' ב-Studio עבור מעקבים שתועדו במדדי ביצועים (I3f3ae, ‏ b/239677443)
  • תיקון FrameTimingMetric כך שיציין ש-FrameOverrun מחייב API 31 במקום 29 (I716dd, ‏ b/220702554)
  • מגדירים את המחזור ב-BaselineProfileRule, ומעיפים שגיאה ברורה אם חבילת היעד לא מותקנת (הפעולה הזו כבר בוצעה עבור MacrobenchmarkRule). (Ic09a3, ‏ b/227991471)

גרסה 1.2.0-alpha04

21 בספטמבר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha04 משוחרר. גרסה 1.2.0-alpha04 מכילה את ההוספות האלה.

תכונות חדשות

  • נוספה תמיכה בארגומנט של מכשיר dryRunMode.enable למדד הביצועים ברמת המאקרו (כבר זמין ברמת המיקרו) כדי לאפשר פיתוח מקומי מהיר יותר ואימות של אוטומציה של אפליקציות (למשל, בשלב של שליחת הקוד לבדיקה). הפקודה הזו משנה את מספר החזרות ל-1, מדלגת על הידור, משביתה את כל שגיאות התצורה ומשביתה את הפלט של קובץ ה-JSON של המדידה. (Ib51b4, ‏ b/175149857)

    בשורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    בקובץ build.gradle:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

תיקוני באגים

  • תוקן StartupTimingMetric כך שלא יהיה צורך להפעיל פעילויות למעקב דרך MacrobenchmarkScope.startActivityAndWait(). המשמעות היא שהמדד יכול לזהות הפעלות, למשל, מהתראות, מ-Context.startActivity(), מהניווט מבוסס-הפעילות באפליקציה או מפקודות מעטפת. (Ia2de6, ‏ b/245414235)
  • תיקון באג שבו startActivityAndWait יפוג הזמן שלו בהמתנה להשלמת ההפעלה במהדמנים, על ידי הפחתת החומרה של זיהוי הפריימים. (Ibe2c6, ‏ b/244594339, ‏ b/228946895)

גרסה 1.2.0-alpha03

7 בספטמבר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 משוחרר. גרסה 1.2.0-alpha03 כוללת את ההוספות האלה.

תכונות חדשות

  • הוספנו ממשקי API ניסיוניים לשימוש ב-BenchmarkState בנפרד, ללא קשר ל-BenchmarkRule או ל-JUnit4. (Id478f, ‏ b/228489614)

תיקוני באגים

  • הוספנו חלופה ל-Leanback עבור startActivityAndWait. (01ed77, ‏ b/242899915)

גרסה 1.2.0-alpha02

24 באוגוסט 2022

androidx.benchmark:benchmark-*:1.2.0-alpha02 משוחרר. גרסה 1.2.0-alpha02 מכילה את ההוספות האלה.

שינויים ב-API

  • ברירת המחדל היא am force stop עבור MacrobenchmarkScope.killProcess(), גם כשיש גישה ל-root, מלבד במהלך יצירת פרופיל Baseline. אפשר לשנות את הערך הזה באמצעות ארגומנט בוליאני אופציונלי. (02cce9, b/241214097)

תיקוני באגים

  • תמיכה ביצירת פרופיל בסיס לאפליקציות מערכת. (I900b8, ‏ b/241214097)
  • תמיכה בבדיקת מדדי צריכת החשמל של ODPM במכשירים ללא הרשאת root. (a38c78, ‏ b/229623230)

גרסה 1.2.0-alpha01

27 ביולי 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 משוחרר. גרסה 1.2.0-alpha01 כוללת את ההוספות האלה.

תכונות חדשות

  • רכיב חדש של tracing-perfetto-common שמאפשר לכלים להפעיל מעקב של Perfetto SDK באפליקציה שמציגה אותו (I2cc7f)
  • נוספה ארגומנטים של מכשור androidx.benchmark.enabledRules כדי לאפשר סינון של הפעלות של מבחני ביצועים ברמת המאקרו רק למבחני ביצועים, או רק ליצירת פרופיל בסיס. מעבירים את הערך 'Macrobenchmark' או 'BaselineProfile' כדי להריץ רק סוג אחד של בדיקה, למשל כשמפעילים רק יצירת BaselineProfiles באמולטור. אפשר גם להשתמש ברשימת ערכים מופרדים בפסיקים. (I756b7, ‏ b/230371561)

    לדוגמה, בקובץ build.gradle של ה-macrobenchmark:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    או משורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

שינויים ב-API

  • נוספה PowerMetric חדשה למדידת משימות של אנרגיה וחשמל במדדי ביצועים. (I9f39b, ‏ b/220183779)
  • נוספה דרך חדשה להדרכה CompilationMode.Ignore כדי לדלג על איפוס הפרופיל וההדרכה. (Ibbcf8, ‏ b/230453509)
  • נוספו פרמטרים חדשים ל-BaselineProfileRule#collectBaselineProfile כדי לסנן את קובץ הפלט לפי שמות חבילות (If7338, ‏ b/220146561)
  • מאפשרת למפתחים לרוקן את המכשיר כדי למדוד את ניהול צריכת האנרגיה. (I6a6cb)
  • הוספנו את היכולת לנקות את מטמון השיזרים ב-MacrobenchmarkScope. (I32122)
  • מאפשרת למפתח להגדיר את תצוגת סוג המדד ולפרט את קטגוריות המשנה הרצויות. (I810c9)
  • בעבר, אם הבדיקה בוצעה במכשיר שלא נתמך, הופיעה הודעת השגיאה UnsupportedOperationException. עכשיו השגיאה UOE מתרחשת רק אם משתמשים במדד במכשיר שאינו נתמך (למשל: PowerMetric.configure). (I5cf20, ‏ b/227229375)
  • נוספו המדדים TotalPowerMetric ו-TotalEnergyMetric למדידת הכוח והאנרגיה הכוללים בכל קטגוריית מערכת בבדיקות המאקרו-מעבד. (I3b26b, ‏ b/224557371)

תיקוני באגים

  • תוקנה בעיה שבה שיטות מורכבות לא אופסו כראוי בין כל בדיקת ביצועים ברמת המאקרו בגרסאות build לא מותאמות ל-root. לצערנו, כדי לעשות זאת צריך להתקין מחדש את קובץ ה-apk בכל חזרה על התהליך, וכך ינוקו נתוני האפליקציה בכל בדיקת ביצועים ברמת המאקרו. (I31c74, ‏ b/230665435)
  • תיקון קריסה של הקלטת המעקב ב-API 21/22 (If7fd6, ‏ b/227509388, ‏ b/227510293, ‏ b/227512788)
  • שיפרנו את זיהוי השלמת ההפעלה של הפעילות כדי לפתור את החריגה 'לא ניתן לקרוא מדדים' בבדיקות המאקרו-ביצועים של סטארט-אפים. (Ia517c)

גרסה 1.1.1

גרסה 1.1.1

9 בנובמבר 2022

androidx.benchmark:benchmark-*:1.1.1 משוחרר. גרסה 1.1.1 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון בעיה ב-android.system.ErrnoException: open failed: EACCES שעלולה להתרחש בחלק ממכשירי Android11‏ (API 30 ואילך). זוהי תיקון שנבחר מתוך 1.2.0-alpha01. (aosp/2072249)

גרסה 1.1.0

גרסה 1.1.0

15 ביוני 2022

androidx.benchmark:benchmark-*:1.1.0 משוחרר. גרסה 1.1.0 כוללת את השמירות האלה.

  • הגרסה הזו זהה לגרסה androidx.benchmark:benchmark-*:1.1.0-rc03.

שינויים חשובים מאז גרסה 1.0.0

גרסה 1.1.0-rc03

1 ביוני 2022

androidx.benchmark:benchmark-*:1.1.0-rc03 משוחרר. גרסה 1.1.0-rc03 כוללת את ההוספות האלה.

תיקוני באגים

  • הימנעו מהתקנה מחדש של חבילת היעד בכל מחזור של בדיקת הביצועים. ( aosp/​​2093027, ‏ b/231976084)

  • מסירים את העיכוב 300ms מהחשבון pressHome(). (aosp/2086030, ‏ b/231322975)

  • שיפור מהירות המחזור של Macrobenchmark על ידי אופטימיזציה של פקודות המעטפת שנעשה בהן שימוש ברקע. (aosp/2086023, ‏ b/231323582)

  • תמיכה במכשירים בניהול Gradle בזמן יצירת פרופילים בסיסיים באמצעות Macrobenchmarks. (aosp/2062228, ‏ b/228926421)

גרסה 1.1.0-rc02

11 במאי 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 משוחרר. גרסה 1.1.0-rc02 כוללת את השמירות האלה.

  • חשוב לדעת שהגרסה הזו כוללת שינוי בהתנהגות, כי עכשיו האפליקציות מותקנות מחדש באופן מלא בין כל נקודת השוואה כדי להבטיח מדידות מדויקות.

תיקוני באגים/שינויים בהתנהגות

  • תוקנה בעיה שבה הידור האפליקציה לא אופס כראוי בין בדיקות ביצועים ברמת המאקרו, ולא אופס בכלל בגרסאות build ללא הרשאת root. כך ניתן לפתור מקרים רבים שבהם הפעלת כמה בדיקות תגרום לכך של-CompilationMode תהיה השפעה קטנה או אפסית על המדידות. כדי לעקוף את הבעיה הזו, אפליקציית היעד מתקינה מחדש באופן מלא כל שיטת בדיקה, וכך נתוני האפליקציה יימחקו בין כל בדיקת מאקרו-ביצועים. (I31c74, ‏ b/230665435)

  • מכיוון שהפעולה הזו מונעת מאפליקציות להגדיר מצב לפני הבדיקות, עכשיו אפשר לדלג על הידור או התקנה מחדש כדי לעקוף את הבעיה הזו. לדוגמה, אפשר לבצע הידור מלא של היעד באמצעות פקודת מעטפת cmd package compile -f -m speed <package>, ואז לעקוף את שלב הידור ה-macrobenchmark.

    לדוגמה, בקובץ build.gradle של ה-macrobenchmark:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    או משורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • הוספנו את הארגומנט androidx.benchmark.enabledRules לכלי למדידה, כדי שאפשר יהיה לשתף מודול בין בדיקות מאקרו-ביצועים לבין בדיקות ליצירת פרופיל בסיס. מעבירים את הערך 'Macrobenchmark' או 'BaselineProfile' כדי להריץ רק סוג אחד של בדיקה, למשל כשיוצרים את BaselineProfiles באמולטור. (I756b7, ‏ b/230371561)

    לדוגמה, בקובץ build.gradle של ה-macrobenchmark:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    או משורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

גרסה 1.1.0-rc01

20 באפריל 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 משוחרר. גרסה 1.1.0-rc01 כוללת את השמירות האלה.

תיקוני באגים

  • קישורי הפלט של פרופיל הבסיס ב-Android Studio כוללים עכשיו שם קובץ ייחודי. כך הפלט תמיד משקף את התוצאות העדכניות ביותר של השימוש ב-BaselineProfileRule. ( aosp/2057008, ‏ b/228203086 )

גרסה 1.1.0-beta06

6 באפריל 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 משוחרר. גרסה 1.1.0-beta06 כוללת את השמירות האלה.

תיקוני באגים

  • תיקון קריסה של הקלטת נתוני המעקב ב-API 21/22 (If7fd6, ‏ b/227509388)
  • שיפרנו את זיהוי השלמת ההפעלה של הפעילות כדי לפתור את החריגה 'לא ניתן לקרוא מדדים' בבדיקות המאקרו-ביצועים של סטארט-אפים. (Ia517c)
  • תיקון מדדי ההפעלה של בדיקות Macrobenchmarks כשמשתמשים ב-CompilationMode.None(). לפני השינוי הזה, CompilationMode.Partial() נראה איטי יותר מ-Compilation.None(). (611ac9).

גרסה 1.1.0-beta05

23 במרץ 2022

androidx.benchmark:benchmark-*:1.1.0-beta05 משוחרר. גרסה 1.1.0-beta05 כוללת את השמירות האלה.

תיקוני באגים

  • אפשר להפסיק את החבילה אחרי דילוג על התקנת הפרופיל כשמשתמשים ב-CompilationMode.None. (aosp/1991373)
  • תוקנה בעיה שבה Macrobenchmarks לא יכול לאסוף מדדי הפעלה בזמן השימוש ב-StartupMode.COLD. (aosp/2012227 b/218668335)

גרסה 1.1.0-beta04

23 בפברואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta04 משוחרר. גרסה 1.1.0-beta04 כוללת את ההצהרות האלה.

תיקוני באגים

  • תיקון של מדדים חסרים ב-Android 10, ושל השגיאה NoSuchElementException שנגרמת בגלל שמות תהליכים שלא מתועדים בצורה נכונה בנתוני המעקב. (Ib4c17, ‏ b/218668335)

  • משתמשים ב-PowerManager לזיהוי של הגבלת עומס תרמי בגרסה Q (API 29) ואילך. כך ניתן לצמצם באופן משמעותי את התדירות של תוצאות חיוביות שגויות בזיהוי של הגבלת הביצועים כתוצאה מהתחממות (ניסיון חוזר לבדיקת הביצועים אחרי תקופת צינון של 90 שניות), ולהאיץ באופן משמעותי את בדיקות הביצועים בגרסאות build של משתמשים. הוא גם מספק זיהוי של הגבלת מהירות גם כשהשעונים נעולים (אם הם נעולים על ערך גבוה מדי לסביבה הפיזית של המכשיר). (I9c027, ‏ b/217497678, ‏ b/131755853)

  • מסננים את פרופיל הדגימה של simpleperf לשרשור measureRepeated בלבד כדי לפשט את הבדיקה (Ic3e12, ‏ b/217501939)

  • תמיכה במדדים מתהליכי משנה של ממשק משתמש בעל שם באפליקציות עם תהליכים מרובים (Ice6c0, ‏ b/215988434)

  • סינון הכללים של פרופיל הבסיס לטירגוט ל-Android 9‏ (SDK 28). aosp/1980331 b/216508418

  • דילוג על התקנת הפרופיל כשמשתמשים ב-Compilation.None(). בנוסף, יש לדווח על אזהרות כשהאפליקציה משתמשת בגרסה ישנה יותר של androidx.profileinstaller ושל הפלאגין של Android Gradle. aosp/1977029

גרסה 1.1.0-beta03

9 בפברואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 משוחרר. גרסה 1.1.0-beta03 כוללת את ההצהרות האלה.

שינויים ב-API

  • הוספנו את AudioUnderrunMetric לספריית macrobenchmark עם דגל ניסיוני כדי לאפשר זיהוי של מחסור בנתוני אודיו (Ib5972)
  • BaselineProfileRule לא מקבל יותר בלוק setup כי הוא פועל כמו profileBlock. (Ic7dfe, ‏ b/215536447)

    לדוגמה:

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

תיקוני באגים

  • תוקנה בעיה שבה לא ניתן היה לעדכן את עקבות הפרופיל של microbench בהפעלות הבאות כשהם מקושרים בפלט של Studio (I5ae4d, ‏ b/214917025)
  • מניעת יצירת קובצי הידור של פקודות מעטפת ב-API 23 (Ice380)
  • השמות שונו מ-FrameCpuTime ל-FrameDurationCpu ומ-FrameUiTime ל-FrameDurationUi כדי להבהיר שמדובר באורך הזמן, ולא בחותמות זמן, וכדי להתאים לתחיליות. (I0eba3, ‏ b/216337830)

גרסה 1.1.0-beta02

26 בינואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 משוחרר. גרסה 1.1.0-beta02 כוללת את ההצהרות האלה.

תיקוני באגים

  • התוצאות של Microbenchmark Stack Sampling או של Method Tracing Profile מקושרות עכשיו בפלט של Studio, בדומה לפלטים אחרים של פרופיל, והן לא משביתות את מדד ההקצאה. (Idcb65, ‏ b/214440748, ‏ b/214253245)
  • עכשיו, הפקודה adb pull מודפסת ב-BaselineProfileRule ב-logcat ובפלט של Studio כדי למשוך את קובץ הטקסט של BaselineProfile שנוצר. (f08811)

גרסה 1.1.0-beta01

12 בינואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 משוחרר. גרסה 1.1.0-beta01 כוללת את ההצהרות האלה.

תיקוני באגים

  • תיקון של בעיה שבה המערכת התעלמה מהפעלת הארגומנט של הכלי למעקב בזמן אמת. (I37373, ‏ b/210619998)
  • הוסר CompliationModes שהוצא משימוש (I98186, ‏ b/213467659)
  • החלפת הארגומנט של פרופיל הבסיס CompilationMode.Partial למערך (enum) לשם הבהרה. (Id67ea)

גרסה 1.1.0-alpha13

15 בדצמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 משוחרר. גרסה 1.1.0-alpha13 מכילה את ההצהרות האלה.

שינויים ב-API

  • הוספת מעקב מערכת בעל עלות נמוכה לפלט של מבחן המיקרו ב-Android Q‏ (API מגרסה 29 ואילך). שימו לב: בשלב הזה לא מתבצע מעקב מותאם אישית (דרך ממשקי ה-API של Jetpack‏ android.os.Trace או androidx.tracing) כדי לא להשפיע על התוצאות. המעקב הזה יכול לעזור בזיהוי של אי-יציבות, במיוחד ממקורות מחוץ למדד. (I298be, ‏ b/205636583, ‏ b/145598917)
  • להבהיר את CompilationModes בשלושה סוגים – מלא, ללא, חלקי. בעבר, השמות שלהם לא היו עקביים והם נקראו לפי מאפיינים וארגומנטים של הידור (שאנחנו מתייחסים אליהם עכשיו כפרטי הטמעה). כך תוכלו להבין טוב יותר את הפשרות, השילובים האפשריים וההתנהגות בגרסאות השונות של הפלטפורמה. (I3d7bf, ‏ b/207132597)
  • ההגדרה והמדידה תמיד מופיעות עכשיו בזוגות, בסדר. עכשיו אפשר לשלוח שאילתה לגבי שם החבילה והחזרה על הפעולה (אבל יכול להיות שהחזרה על הפעולה תהיה null בתרחישי התחממות מסוימים). (Id3b68, ‏ b/208357448, ‏ b/208369635)

תיקוני באגים

  • תוקנה בעיה שבה CompilationMode.Speed הוגדר בטעות כ-None (I01137)

גרסה 1.1.0-alpha12

17 בנובמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha12 משוחרר. גרסה 1.1.0-alpha12 מכילה את ההוספות האלה.

תכונות חדשות

  • הוספת המדד הניסיוני TraceSectionMetric למדידת זמני אירועים בהתאמה אישית שמבוססים על נתוני מעקב. (I99db1, ‏ b/204572664)

תיקוני באגים

  • מפעילים את המכשיר בכל איטרציה כדי לוודא שאפשר לבדוק את ממשק המשתמש – צריך להשבית את מסך הנעילה. (Ibfa28, ‏ b/180963442)
  • תיקון מספר קריסות במצב פרופיל של דגימת סטאק במהדמנים ובמכשירים ללא הרשאת root (Icdbda, ‏ b/202719335)
  • הסרנו השהיה של 0.5 שניות בסוף כל חזרה – אם המדדים חסרים אחרי השינוי הזה, יש לדווח על באג. (Iff6aa)
  • הפחתת הסיכויים לנתונים שנמחקים, והקטנת יתרת הזיכרון שנדרשת למעקב (Id2544, ‏ b/199324831, ‏ b/204448861)
  • אפשר להקטין את גודל המעקב ב-40% בערך על ידי מעבר לפורמט אחסון קומפקטי של תזמון. (Id5fb6, ‏ b/199324831)
  • עדכנו את ההטמעות של מדדי ההפעלה כך שהן תמיד יסתיימו בסוף renderthread. כך הנתונים יהיו עקביים יותר בגרסאות השונות של הפלטפורמה, ויתאימו יותר למדידות באפליקציה. (Ic6b55)

גרסה 1.1.0-alpha11

3 בנובמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 משוחרר. גרסה 1.1.0-alpha11 מכילה את השמירות האלה.

שינויים ב-API

  • עכשיו ל-Macrobenchmark יש minSdkVersion של 23. (If2655)
  • הוספה של BaselineProfileRule ניסיוני חדש שיכול ליצור פרופילים בסיסיים של תהליך השימוש הקריטי באפליקציה. תיעוד מפורט יפורסם בהמשך. (Ibbefa, ‏ b/203692160)
  • הוסר הווריאנט של הממשק measureRepeated, שנוסף למבצעי קריאה מ-Java כי הוא גרם לאי-בהירות בהשלמה או בפתרון של השיטה. שוב, קוראים ב-Java יצטרכו להחזיר את Unit.Instance מ-measureRepeated. אם זה לא נוח לך, אפשר לדווח על באג ונוכל לבדוק את הנושא בגרסה עתידית. (Ifb23e, ‏ b/204331495)

גרסה 1.1.0-alpha10

27 באוקטובר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 משוחרר. גרסה 1.1.0-alpha10 מכילה את ההצהרות האלה.

שינויים ב-API

  • העברת StartupTimingMetric לגרסה קודמת כדי שתעבוד ב-API 23. ההטמעה החדשה הזו גם מטפלת טוב יותר ב-reportFullyDrawn() כדי להמתין עד שהתוכן התואם יומר. (If3ac9, ‏ b/183129298)
  • נוספו JvmOverloads לכמה שיטות של MacrobenchmarkScope למבצעי קריאה מ-Java. (I644fe, ‏ b/184546459)
  • יש לספק פונקציה חלופית של MacrobenchmarkRule.measureRepeated שמשתמשת ב-Consumer<MacrobenchmarkScope> לשימוש בסיסי בשפת Java. (If74ab, ‏ b/184546459)

תיקוני באגים

  • תיקון לבעיות שקשורות לכך שהמעקב לא מתחיל מוקדם מספיק ונתוני מדדים חסרים. הפעולה הזו אמורה לתקן את החריגות מסוג 'לא ניתן לקרוא מדדים כלשהם במהלך בדיקת הביצועים' שנגרמו על ידי הספרייה עצמה. (I6dfcb, ‏ b/193827052, ‏ b/200302931)
  • השם של FrameNegativeSlack שונה ל-FrameOverrun כדי להבהיר את המשמעות שלו – כמה הפריימים חורגים מתקציב הזמן שלהם. (I6c2aa, ‏ b/203008701)

גרסה 1.1.0-alpha09

13 באוקטובר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha09 משוחרר. גרסה 1.1.0-alpha09 מכילה את ההצהרות האלה.

תיקוני באגים

  • תמיכה בהסרת מטמון דפי הליבה ללא הרשאת root ב-API 31/S+, כדי לשפר את הדיוק של ההפעלות ב-StartupMode.COLD. (Iecfdb, ‏ b/200160030)

גרסה 1.1.0-alpha08

29 בספטמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha08 משוחרר. גרסה 1.1.0-alpha08 מכילה את ההצהרות האלה.

שינויים ב-API

  • הפעלת מבחני ביצועים מאקרו של גלילה כדי להריץ אותם חזרה ל-API 23 (If39c2, ‏ b/183129298)
  • הוספת סוג חדש של מדד לדגימה לממשק המשתמש ולפלט JSON, שמתמקד בפרמטרים של percentiles של כמה דגימות לכל מחזור. (I56247, ‏ b/199940612)
  • מעבר למדדים של נקודה צפה בכל ספריות אמות המידה (המדדים מקוצרים בממשק המשתמש של Studio). (I69249, ‏ b/197008210)

גרסה 1.1.0-alpha07

1 בספטמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha07 משוחרר. גרסה 1.1.0-alpha07 מכילה את ההוספות האלה.

שינויים ב-API

  • העלינו את רמת ה-API המינימלית ל-21 כדי לשקף את רמת ה-API הנמוכה ביותר שאנחנו מתכוונים לתמוך בה בעתיד. הגרסה הנוכחית של ממשק ה-API המינימלי שנתמכת עדיין מועברת דרך RequiredApi(), והיא 29 (I440d6, ‏ b/183129298)

תיקוני באגים

  • תיקונים ב-ProfileInstaller כדי להקל על אפליקציות שמשתמשות בפרופילים בסיסיים להריץ בדיקות MacroBenchmark באמצעות CompilationMode.BaselineProfile. (I42657, b/196074999) הערה: צריך גם לעדכן ל-androidx.profileinstaller:profileinstaller:1.1.0-alpha04 ואילך.
  • נקודות השוואה של StartupMode.COLD + CompilationMode.None יציבות יותר עכשיו. (I770cd, ‏ b/196074999)

גרסה 1.1.0-alpha06

18 באוגוסט 2021

androidx.benchmark:benchmark-*:1.1.0-alpha06 משוחרר. גרסה 1.1.0-alpha06 מכילה את ההוספות האלה.

שינויים ב-API

  • נוספה ארגומנטים של מכשור androidx.benchmark.iterations כדי לאפשר שינוי ידני של מספר החזרות בזמן בדיקה או יצירת פרופיל באופן מקומי. (6188be, b/194137879)

תיקוני באגים

  • עברנו ל-Simpleperf בתור כלי ברירת המחדל לניתוח פרופיל באמצעות דגימה ב-API מגרסה 29 ואילך. (Ic4b34, ‏ b/158303822)

בעיות מוכרות

  • CompilationMode.BaselineProfile נמצא בשלבי פיתוח. בשלב הזה, עדיף לא להשתמש במדד הזה כדי לקבוע את איכות הפרופיל.

גרסה 1.1.0-alpha05

4 באוגוסט 2021

androidx.benchmark:benchmark-*:1.1.0-alpha05 משוחרר. גרסה 1.1.0-alpha05 מכילה את ההצהרות האלה.

1.1.0-alpha04 בוטלה לפני הפרסום בגלל קריסה אקראית. b/193827052

שינויים ב-API

  • החלפתם את startActivityAndWait כדי להפעיל את ההפעלה דרך am start, וכך הפחתתם את הזמן של כל מחזור מדידה בכ-5 שניות, אבל לא תהיה יותר תמיכה ב-Intent Parcelables. (I5a6f5, ‏ b/192009149

תיקוני באגים

  • הפחתת מידת האגרסיביות של זיהוי המצערת התרמית, וחישובו מחדש של הבסיס אם המצערות מזוהות בתדירות גבוהה. (I7327b)
  • תיקון של FrameTimingMetric כך שפועלת ב-Android S בטא (Ib60cc, ‏ b/193260119)
  • כדי לתמוך טוב יותר ב-CompilationMode.BaselineProfile, אפשר להשתמש ב-EmptyActivity כדי להוציא את אפליקציית היעד ממצב של עצירה בכוח. (Id7cac, ‏ b/192084204)
  • שינינו את סיומת קובץ המעקב ל-.perfetto-trace כדי להתאים לתקן הפלטפורמה. (I4c236, ‏ b/174663039)
  • המדד StartupTimingMetric מפיק עכשיו את המדד fullyDrawnMs כדי למדוד את הזמן עד שהאפליקציה מסיימת את העיבוד. כדי להגדיר את המדד הזה לאפליקציה, צריך להפעיל את Activity.reportFullyDrawn כשהתוכן הראשוני מוכן, למשל כשפריטי הרשימה הראשוניים נטענים מהמסד הנתונים או מהרשת. (השיטה reportFullyDrawn זמינה ללא בדיקות של גרסת build ב-ComponentActivity). שימו לב שהבדיקה צריכה לפעול מספיק זמן כדי לתעד את המדד (הקריאה startActivityAndWait לא ממתינה ל-reportFullyDrawn). (If1141, ‏ b/179176560)
  • הפחתת העלות של הוספת מטא-נתונים של Ui למעקב אחר אירועים ב-50 אלפיות השנייה או יותר (Ic8390, ‏ b/193923003)
  • הגדלת תדירות הסקרים באופן משמעותי כשמפסיקים את המעקב, מה שיכול להפחית, למשל, את זמן הריצה של מדד הביצועים בזמן ההפעלה ב-30% ומעלה (Idfbc1,‏ b/193723768)

גרסה 1.1.0-alpha03

16 ביוני 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 משוחרר. גרסה 1.1.0-alpha03 כוללת את ההוספות האלה.

תכונות חדשות

תיקוני באגים

  • קוד Gradle לדוגמה לדיכוי שגיאות של מדדי ביצועים עודכן כך שישתמש ב-API שלא הוצא משימוש, עם תחביר שתומך גם במשתמשים ב-‎ .gradle.kts.

    למשל:

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

גרסה 1.1.0-alpha02

18 במאי 2021

בגרסה 1.1.0-alpha02 של Benchmark יש רכיב גדול למדידת ביצועים – Macrobenchmark. בנוסף לבדיקת ביצועים שמאפשרת למדוד לולאות של מעבדים, בדיקת ביצועים ברמת המאקרו מאפשרת למדוד אינטראקציות של אפליקציה שלמה, כמו הפעלה וגלילה, ולתעד עקבות. מידע נוסף זמין במסמכי התיעוד של הספרייה.

androidx.benchmark:benchmark-*:1.1.0-alpha02 משוחרר. גרסה 1.1.0-alpha02 מכילה את ההוספות האלה.

תכונות חדשות

נוספו ארטיפקטים של Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 ו-androidx.benchmark:benchmark-macro)

  • איך מתעדים מדדי ביצועים של הפעלה, גלילה או אנימציה מהאפליקציה, באופן מקומי או ב-CI
  • איך מתעדים ומעיינים בנתוני מעקב מתוך Android Studio

תיקוני באגים

  • פתרון עקיף לבעיה בהרשאות המעטפת בספריית הפלט ב-Android 12 (הערה: יכול להיות שתצטרכו לעדכן את Android Gradle Plugin לגרסה 7.0.0 canary ואת Android Studio לגרסה Arctic Fox‏ (2020.3.1) כדי להמשיך לצלם קובצי פלט במכשירים המושפעים). (Icb039)
  • תמיכה בשמירת תצורה במטמון ב-BenchmarkPlugin‏ (6be1c1, ‏ b/159804788)
  • פלט קובץ פשוט – מופעל כברירת מחדל, בספרייה שלא דורשת את requestLegacyExternalStorage=true (8b5a4d, ‏ b/172376362)
  • תיקון של ספרייה שמודפסת אזהרות logcat על אי-מציאת חוט JIT בגרסאות פלטפורמה שבהן הוא לא נמצא. (I9cc63, ‏ b/161847393)
  • תיקון לתדירות המקסימלית של מכשיר הקראה. (I55c7a)

גרסה 1.1.0-alpha01

10 ביוני 2020

התכונות androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 וגם androidx.benchmark:benchmark-junit4:1.1.0-alpha01 משוחררות. גרסה 1.1.0-alpha01 כוללת את ההוספות האלה.

תכונות חדשות בגרסה 1.1

  • מדד הקצאה – נקודות השוואה לשוק מריצות עכשיו שלב נוסף אחרי החימום והתזמון, שמתעד את ספירת ההקצאות. הקצאות יכולות לגרום לבעיות בביצועים בגרסאות ישנות יותר של הפלטפורמה (140ns ב-O הפכו ל-8ns ב-M – נמדד ב-Nexus5X, עם שעונים נעולים). המדד הזה מוצג בפלט של מסוף Android Studio, וגם ב-
  • תמיכה בפרופיל – עכשיו אפשר לתעד נתוני פרופיל להרצת ביצועים, כדי לבדוק למה הקוד פועל לאט. ב-Benchmark יש תמיכה בתיעוד של מעקב אחר שיטות או דגימת שיטות מ-ART. אפשר לבדוק את הקבצים האלה באמצעות הכלי לניתוח ביצועים ב-Android Studio, באמצעות קובץ > פתיחה.
  • פלאגין Benchmark ל-Gradle מספק עכשיו הגדרות ברירת מחדל להגדרה פשוטה יותר:
    • testBuildType מוגדר כ-release כברירת מחדל, כדי להימנע משימוש ביחסי תלות עם כיסוי קוד מובנה. buildType של הגרסה היציבה מוגדר גם כ-buildType שמוגדר כברירת מחדל, וכך Android Studio יכול לבחור באופן אוטומטי את גרסת ה-build הנכונה כשפותחים פרויקט בפעם הראשונה. (b/138808399)
    • signingConfig.debug משמש כברירת המחדל של הגדרת החתימה (b/153583269)

** תיקוני באגים **

  • הפחתנו באופן משמעותי את זמן ההעברה של תקופת החימום, שבה המדידה הראשונה בכל מדד השוואה הייתה גבוהה באופן מלאכותי בהשוואה למדידות אחרות. הבעיה הזו הייתה בולטת יותר בבדיקות השוואה קטנות מאוד (1 מיקרו-שנייה או פחות). (b/142058671)
  • תוקנה שגיאת InstrumentationResultParser שמודפסת לכל מדד ביצועים כשמריצים אותו משורת הפקודה. (I64988, ‏ b/154248456)

בעיות מוכרות

  • כשמפעילים את Benchmark בשורת הפקודה או ב-Gradle, התוצאות לא מודפסות ישירות. כדי לעקוף את הבעיה, אפשר להריץ את הקוד דרך Studio או לנתח את קובץ הפלט בפורמט JSON כדי למצוא את התוצאות.
  • דיווח על מדדי ביצועים נכשל בשליפת הדוח ממכשירים שבהם מותקנת אפליקציה עם applicationId שמסתיים ב-'android' או ב-'download' (ללא קשר לרישיות). משתמשים שנתקלים בבעיה הזו צריכים לשדרג את Android Gradle Plugin לגרסה 4.2-alpha01 ואילך.

גרסה 1.0.0

Benchmark Version 1.0.0

20 בנובמבר 2019

הגרסאות androidx.benchmark:benchmark-common:1.0.0, ‏androidx.benchmark:benchmark-gradle-plugin:1.0.0 ו-androidx.benchmark:benchmark-junit4:1.0.0 פורסמו ללא שינויים מהגרסה 1.0.0-rc01. גרסה 1.0.0 כוללת את ההצהרות האלה.

תכונות עיקריות בגרסה 1.0.0

ספריית Benchmark מאפשרת לכתוב מדדי ביצועים של קוד אפליקציה ולקבל תוצאות במהירות.

הוא מונע בעיות בהגדרות של גרסאות build וזמן ריצה, ומייצב את ביצועי המכשיר כדי להבטיח שהמדידות יהיו מדויקות ועקביות. אפשר להריץ את מדדי הביצועים ישירות ב-Android Studio או ב-Continuous Integration כדי לעקוב אחרי ביצועי הקוד לאורך זמן ולמנוע נסיגה.

התכונות העיקריות כוללות:

  • ייצוב השעון
  • סדר עדיפויות אוטומטי של שרשורים
  • תמיכה בבדיקת ביצועים של ממשק המשתמש, כמו בדוגמה ל-RecyclerView
  • התחממות והפעלה חוזרת עם תמיכה ב-JIT
  • פלט של בדיקת ביצועים בפורמט JSON לעיבוד לאחרי

גרסה 1.0.0-rc01

23 באוקטובר 2019

התכונות androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 וגם androidx.benchmark:benchmark-junit4:1.0.0-rc01 משוחררות. גרסה 1.0.0-rc01 כוללת את ההוספות האלה.

תכונות חדשות

  • הוספת מעקב systrace לנקודות השוואה

תיקוני באגים

  • תוקנה בעיה של חוסר יציבות במדדים, שבה JIT לא הסתיים לפני ההתחממות בגלל ביטול העדיפות (b/140773023)
  • ספריית פלט JSON מאוחדת ב-Android Gradle Plugin 3.5 וב-3.6

גרסה 1.0.0-beta01

9 באוקטובר 2019

התכונות androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 וגם androidx.benchmark:benchmark-junit4:1.0.0-beta01 משוחררות. גרסה 1.0.0-beta01 מכילה את ההצהרות האלה.

תכונות חדשות

  • הרצת איסוף אשפה לפני כל חימום מראש כדי לצמצם את לחץ הזיכרון מבדיקה אחת למבדיקה הבאה (b/140895105)

תיקוני באגים

  • הוספנו תלות ב-androidx.annotation:android-experimental-lint כדי שקוד Java ייצור שגיאות איתור שגיאות בקוד (lint) בצורה נכונה כשלא נעשה שימוש ב-API הניסיוני, בדומה למה שמסופק על ידי ההערה הניסיונית של Kotlin למבצעי קריאה ב-Kotlin.
  • עכשיו מתבצע זיהוי תקין של השימוש בארגומנטים של מכשירי המדידה additionalTestOutputDir לצורך פלט ב-Android Gradle Plugin 3.6, כדי לדעת מתי AGP יטפל בהעתקת הנתונים.
  • תיקון של תדירות השעון שלא זוהתה ב-JSON כדי להדפיס בצורה נכונה את -1 (b/141945670).

גרסה 1.0.0-alpha06

18 בספטמבר 2019

התכונות androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 וגם androidx.benchmark:benchmark-junit4:1.0.0-alpha06 משוחררות. גרסה 1.0.0-alpha06 מכילה את ההצהרות האלה.

תכונות חדשות

  • נוספה בדיקה לשימוש שגוי בחבילה הישנה של מפעיל הבדיקות, שמספקת עכשיו הודעת שגיאה מועילה יותר

שינויים ב-API

  • ההערה הניסיונית ExperimentalAnnotationReport גלויות לכולם עכשיו. עכשיו נדרש התווית הזו כדי להשתמש ב-API הניסיוני BenchmarkState#report

גרסה 1.0.0-alpha05

5 בספטמבר 2019

התכונות androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 וגם androidx.benchmark:benchmark-junit4:1.0.0-alpha05 משוחררות. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

שינויים ב-API

  • ממשק ה-API של BenchmarkState.reportData מסומן עכשיו כניסיוני

תיקוני באגים

  • תיקון לסקריפט לנעילת השעון, שנכשל במכשירים שבהם חסרות תוכנות המעטפת cut או expr.
  • תוקנה בעיה במשימה ./gradlew lockClocks שגרמה להיתקעות במכשירים שהופעלו בהם הרשאות root באמצעות גרסה ישנה יותר של השירות su, שלא תמכה בדגל -c.

גרסה 1.0.0-alpha04

7 באוגוסט 2019

התכונות androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 וגם androidx.benchmark:benchmark-junit4:1.0.0-alpha04 משוחררות. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

הוספנו גם מסמכי עזרה חדשים שמסבירים איך להשתמש בספריית Benchmark בלי Gradle, גם לשימוש במערכות build שונות (כמו Bazel או Buck) וגם כשמריצים ב-CI. מידע נוסף זמין במאמרים יצירת מדדי ביצועים ללא Gradle והרצת מדדי ביצועים בשילוב עם Continuous Integration.

תכונות חדשות

  • פלאגין Gradle
    • עכשיו המערכת משביתה באופן אוטומטי את כיסוי הבדיקה ומגדירה את AndroidBenchmarkRunner כברירת מחדל (b/138374050)
    • נוספה תמיכה בהעתקת נתונים חדשה שמבוססת על AGP, כשמריצים בדיקות ביצועים וכשמשתמשים ב-AGP מגרסה 3.6 ואילך
  • תוספות לפורמט JSON
    • משך הזמן הכולל של הפעלת בדיקת העמידה בתקן בפלט (b/133147694)
    • @Parameterized אמות המידה שמשתמשות במחרוזת שם (לדוגמה @Parameters(name = "size={0},depth={1}")) מפלטות עכשיו שמות וערכים של פרמטרים לכל אמת מידה בפלט ה-JSON (b/132578772)
  • מצב פרימטר לבדיקות (b/138785848)
    • הוספנו מצב 'הרצה ללא הפעלה' להרצה של כל לולאת ביצועי השוואה פעם אחת בלבד, כדי לבדוק אם יש שגיאות או קריסות בלי לתעד מדידות. אפשר להשתמש באפשרות הזו, למשל, כדי להריץ במהירות מדדי ביצועים לפני שליחת הקוד כדי לוודא שהם לא פגומים.

שינויים ב-API

  • מבנה המודול השתנה, והספרייה התפצלה (b/138451391)
    • benchmark:benchmark-junit4 מכילה כיתות עם יחסי תלות ב-JUnit: AndroidBenchmarkRunner ו-BenchmarkRule, ששתיהן הועברו לחבילה androidx.benchmark.junit4
    • benchmark:benchmark-common מכיל את שאר הלוגיקה, כולל ה-API של BenchmarkState
    • הפיצול הזה יאפשר לספרייה לתמוך בבדיקות ביצועים ללא ממשקי API של JUnit4 בעתיד
  • אזהרות לגבי הגדרות אישיות נחשבות עכשיו כשגיאות, והן יגרמו לקריסה של הבדיקה (b/137653596)
    • המטרה היא לעודד מדידות מדויקות יותר, במיוחד בסביבת CI.
    • אפשר להפחית את השגיאות האלה לאזהרות באמצעות ארגומנט של מכשור. לדוגמה: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

תיקוני באגים

  • כשמתרחשות שגיאות בכתיבה באחסון חיצוני במכשירי Q, מוצגות הודעות תיאוריות יותר עם הצעות לפתרון הבעיה
  • המסכים מופעלים באופן אוטומטי במהלך הרצות של מדדי ביצועים, במקום להיכשל כשהמסך כבוי

תכנים שנוספו על ידי גורמים חיצוניים

  • תודה ל-Sergey Zakharov על השיפורים בפלט JSON ועל התיקון לבעיות שקשורות לכיבוי המסך.

גרסה 1.0.0-alpha03

2 ביולי 2019

androidx.benchmark:benchmark:1.0.0-alpha03 ו-androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 משוחררים. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

  • חשיפת משך השינה עקב הגבלת הספק תרמית לכל אמת מידה בדוח ה-JSON המלא

תיקוני באגים

  • לא צריך יותר להחיל את פלאגין Gradle אחרי הפלאגינים של Android והבלוק של Android
  • נוספה תמיכה בדוחות השוואה לשוק במכשירי Android 10 שמשתמשים באחסון מוגבל

גרסה 1.0.0-alpha02

6 ביוני 2019

androidx.benchmark:1.0.0-alpha02 ו-androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 משוחררים. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

שימו לב שאנחנו מתייחסים לסכימת ה-JSON כ-API. אנחנו מתכננים לפעול לפי אותן מגבלות יציבות כמו ב-API אחרים: יציבות (למעט מקרים נדירים מאוד) אחרי שהגרסה עוברת לגרסת בטא, ותיקונים בגרסה הסופית. בנוסף, אנחנו מתכננים להוסיף תכונות רק לגרסאות משניות, ולבצע שינויים או הסרות רק בגרסאות ראשיות.

שינויים ב-API

  • סכימה מעודכנת של JSON. סביר להניח ששינויים נוספים בסכימת ה-JSON יהיו מוגבלים להוספות:

    • שינינו את המבנה של אובייקט התוצאה כדי לתמוך בקבוצות מדדים נוספות בעתיד (b/132713021)
    • הוספנו לאובייקט ברמה העליונה מידע על הקשר של הרצה של בדיקה, כמו פרטי המכשיר וה-build, וגם אם השעונים נעולים (b/132711920)
    • השמות של מדדי הזמן כוללים עכשיו את הסימן 'ns' (b/132714527)
    • נוספו נתונים סטטיסטיים נוספים לכל מדד שדווח (מקסימום, חציון, מינימום), והוסרו נתונים סטטיסטיים פשוטים יותר של סיכום 'ננו' (b/132713851)
  • הסרת פלט XML (b/132714414)

  • זיהוי של הגבלת מהירות כתוצאה מהתחממות הוסר מ-BenchmarkState.reportData API (b/132887006)

תיקוני באגים

  • תוקנה בעיה שבה ./gradlew lockClocks לא נשאר במיקום שלו במכשירים מסוימים עם מערכת הפעלה מהדור האחרון (b/133424037)
  • זיהוי של ויסות נתונים הושבת במהדורת האמולטור (b/132880807)

גרסה 1.0.0-alpha01

7 במאי 2019

androidx.benchmark:benchmark:1.0.0-alpha01 משוחרר. ההתחייבויות (commits) שכלולות בגרסה הזו זמינות כאן.