השוואה לשוק
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 28 בינואר 2026 | 1.4.1 | - | - | 1.5.0-alpha02 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Benchmark, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר מאגר ה-Maven של Google.
Macrobenchmark
כדי להשתמש ב-Macrobenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של מודול המקרו-בנצ'מרק:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.4.1" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.4.1") }
מיקרו-בנצ'מרק
כדי להשתמש ב-Microbenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של מודול המיקרו-בנצ'מרק:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.4.1" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.4.1") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
ספריית Microbenchmark מספקת גם פלאגין של Gradle לשימוש עם מודול המיקרו-ביצועים.
הפלאגין הזה מגדיר את הגדרות ברירת המחדל של תצורת ה-build למודול, מגדיר העתקה של פלט של מדד ביצועים למארח ומספק את
המשימה ./gradlew lockClocks.
כדי להשתמש בפלאגין, מוסיפים את השורה הבאה לבלוק 'plugins' בקובץ build.gradle ברמה העליונה:
Groovy
plugins { id 'androidx.benchmark' version '1.4.1' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.4.1" apply false }
לאחר מכן מחילים את הפלאגין על הקובץ build.gradle של מודול ההשוואה לשוק
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גירסה 1.5
גרסה 1.5.0-alpha02
28 בינואר 2026
androidx.benchmark:benchmark-*:1.5.0-alpha02 מופץ. גרסה 1.5.0-alpha02 מכילה את השמירות האלה.
תיקוני באגים
הוספנו תמיכה חלקית ביצירת פרופיל Baseline למודולים של Kotlin Multiplatform. בדרך כלל אפשר להגדיר תלויות בפרופילים באמצעות ההגדרה
baselineProfileשל Gradle בבלוק התלויות, אבל כרגע זה לא עובד במודולים של KMP.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }במקום זאת, צריך להגדיר את יחסי התלות באמצעות התוסף
baselineProfile. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
גרסה 1.5.0-alpha01
17 בדצמבר 2025
androidx.benchmark:benchmark-*:1.5.0-alpha01 מופץ. גרסה 1.5.0-alpha01 מכילה את השמירות האלה.
- Macrobenchmark 1.5 משתמש ב-
UiAutomator2.4 כדי לפשט את האינטראקציה עם האפליקציה שנמדדת. האובייקט MacrobenchmarkScope מרחיב עכשיו את UiAutomatorTestScope, מה שמאפשר לכם להשתמש בממשקי ה-API המודרניים שלUiAutomatorכמוonElement { ... }.click(). - מידע נוסף על
UiAutomator2.4 זמין במסמכי התיעוד.
תכונות חדשות
- הפלאגין Baseline Profile Gradle לא דורש יותר
newDsl=falseב-AGP 9.0 (Iaaac7, b/443311090) - הרחבת הגדרות המעקב כך שיכללו את גודל הליבה (למשל, קטנה/גדולה) בנקודת ההשוואה של עקבות המערכת/Perfetto שתועדו. (I8e397, b/457469959)
שינויים ב-API
- (ב-UiAutomator) בוצע שינוי בפונקציה
startActivitywait כך שתמתין לחלון חדש. (I35da6, b/440021797) - ייצוב ממשקי ה-API של
BlackHoleב-androidx.benchmark. (I2b67e, b/451749438) - הוספה של
@JvmOverloadsעבור בנאים נוחים ל-PerfettoTraceRule. (I1510a, b/443763207)
גרסה 1.4
גרסה 1.4.1
10 בספטמבר 2025
androidx.benchmark:benchmark-*:1.4.1 מופץ. גרסה 1.4.1 מכילה את השמירות האלה.
תיקוני באגים
- האפשרות 'קבוע'
perfettoSdkTracing=true(לדוגמה, כשעוקבים אחרי יצירה במיקרו-בנצ'מרק) תגרום להפסקת תהליך היעד אם הוא כבר פועל, ולא צוין StartupMode. (Ib2c1f)
גרסה 1.4.0
30 ביולי 2025
androidx.benchmark:benchmark-*:1.4.0 מופץ. גרסה 1.4.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.3.0
Microbenchmark
- העברנו את משימות Gradle
lockClocksו-unlockClocksלפרויקטים של השוואה לשוק, במקום לרמה העליונה, כדי לכבד את הבידוד של פרויקט Gradle. - שינינו את הקוד של
BenchmarkRuleכך שהוא מבוסס על קורוטינות, ושיפרנו את ההתנהגות שלyield(). הפעולה הזו אמורה להפחית באופן משמעותי את הסיכון ל-ANR במהלך הפעלות של בדיקות השוואה, במיוחד הפעלות ארוכות של CI. הערה: מומלץ להריץ את נקודות ההשוואה של ממשק המשתמש עםmeasureRepeatedOnMainThread
Macrobenchmark
- נוסף פתרון עקיף ב-API 34 ומעלה ל-
CompilationMode.None(), שביצועיו לא עקביים בגלל שהאימות של ART מתבצע עכשיו באופן חלקי בזמן ההידור של האפליקציות אחרי ההפעלה הראשונה. - תכונה ניסיונית – התכונה Startup Insights יכולה להדגיש בעיות נפוצות מסוימות בבדיקת מאקרו של הפעלה על ידי העברת
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))). - נוסף ArtMetric שאפשר להשתמש בו כדי לזהות קומפילציה של JIT וטעינת מחלקות לא אופטימלית – שניהם שימושיים לאימות האופטימיזציות של פרופיל ה-Baseline.
פרופילים של Baseline
- מעכשיו,
BaselineProfileRuleאוסף פרופילים לאפליקציות מרובות תהליכים.
שינויים אחרים
- הכלי TraceProcessor הועבר לספרייה משלו (
androidx.benchmark:benchmark-traceprocessor) כדי שאפשר יהיה להשתמש בו מחוץ למדדים שלMacrobenchmark, במקרים אחרים. אפשר להריץ אותו גם ב-JVM במחשב על ידי הגדרה של ServerLifecycleManager משלכם.
גרסה 1.4.0-rc01
18 ביוני 2025
androidx.benchmark:benchmark-*:1.4.0-rc01 מופץ. גרסה 1.4.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- נוסף פתרון עקיף לתמונות בזמן ריצה שגורמות ל-
CompilationMode.None()לא למדוד את הביצועים במקרה הגרוע אחרי האיטרציה הראשונה. לצערנו, הפתרון הזה דורש השהיה של 5 שניות כדי להשחית בכוונה את תמונת זמן הריצה בתחילת כל חבילת בדיקות מאקרו (I4a4f1).
גרסה 1.4.0-beta02
4 ביוני 2025
androidx.benchmark:benchmark-*:1.4.0-beta02 מופץ. גרסה 1.4.0-beta02 מכילה את השמירות האלה.
שינויים ב-API
- נוסף
BaselineProfileConfig.Builderכדי להקל על מפתחי Java להתקשר אלBaselineProfileRule.collectWithResults(). (I94905)
גרסה 1.4.0-beta01
7 במאי 2025
androidx.benchmark:benchmark-*:1.4.0-beta01 מופץ. גרסה 1.4.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- נוספה וריאציה של בנאי
PerfettoTraceRuleשמקבלתPerfettoConfig(Ie53ba)
תיקוני באגים
- בוצע עדכון בפורמט של הקישור לתובנות לגבי הפעלת האתר, כך שנעשה שימוש בפלאגין הנכון, ונוסף תו הפרדה ברור יותר (
:קצר יותר מ-%3A, ושניהם נתמכים) (Ie18ef)TraceProcessor - תמיד משתמשים בהפסקת פעולה כדי להפסיק תהליכים, גם כשמבצעים פעולות רוט וגם כשמפסיקים אפליקציות מערכת. תיקון חריגים מהסוג:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
External Contribution
- נוסף handler לחריגות ב-Proxy עבור
TraceProcessorHttpServer(I480f5)
גרסה 1.4.0-alpha11
9 באפריל 2025
androidx.benchmark:benchmark-*:1.4.0-alpha11 מופץ. גרסה 1.4.0-alpha11 מכילה את השמירות האלה.
שינויים ב-API
- השתנה משך הזמן הקצוב לתפוגה של הארגומנט
TraceProcessor: משך הזמן הקצוב לתפוגה הוא timeoutMs, כדי לשפר את השימושיות של המתקשר ב-Java. (I9fbb5) - מסמנים את הבונה
TraceProcessorכפנימי. המתקשרים צריכים להשתמש ב-TraceProcessor.startServerאו ב-TraceProcessor.runServer. (Ia8c5b)
תיקוני באגים
- כשמשביתים את האפליקציה באמצעות
MacrobenchmarkScope.killProcess, צריך לאמת את התוצאות של פקודת ההשבתה כדי למנוע כשל שקט ושגיאת זמן קצוב לתפוגה. (I84555)
עדכונים של תלות
- הספרייה הזו מטרגטת עכשיו את רמת השפה Kotlin 2.0 ונדרשת KGP 2.0.0 או גרסה חדשה יותר. (Idb6b5)
גרסה 1.4.0-alpha10
26 במרץ 2025
androidx.benchmark:benchmark-*:1.4.0-alpha10 מופץ. גרסה 1.4.0-alpha10 מכילה את השמירות האלה.
שינויים ב-API
- הארכנו את הזמן הקצוב לתפוגה שמוגדר כברירת מחדל לטעינת שרת
TraceProcessorולשאילתות ל-120 שניות (לעומת 60/30 שניות בעבר), וגם אפשרנו להגדיר את שניהם באמצעות פרמטר אחד של זמן קצוב לתפוגה. (Ifec87)
תיקוני באגים
- תוקנו כמה בעיות שהתרחשו כשמבצעים השוואה בין ביצועים או כשמצלמים פרופילים של אפליקציה בלי
profileinstaller, והיא כלולה ב-BroadcastReciever. ההגדרה הזו משפיעה רק על הפעלות במכשירים עם הרשאות Root. (Ied308)
גרסה 1.4.0-alpha09
12 במרץ 2025
androidx.benchmark:benchmark-*:1.4.0-alpha09 מופץ. גרסה 1.4.0-alpha09 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו את
TraceProcessorו-Session API עם ידיות שאפשר לסגור, כדי להקל על השימוש במחזורי חיים מותאמים אישית. זהו גם צעד לקראת שימוש קל יותר ב-Coroutine וב-Java API. הפונקציות של התוסף ל-TraceProcessor.runServer {}מסומנות עכשיו כניסיוניות, כי סביר להניח שהן יועברו ויהפכו ללא ניסיוניות בעתיד. (I358b4)
תיקוני באגים
- תוקנה הבעיה שבה לא ניתן היה לצלם את פרופיל ההשוואה לפרופיל הבסיסי באמצעות API 36, עקב שינוי ב-
pgreptoybox שדורש עכשיו-aלהדפסת שורת הפקודה המלאה. (Idc991) - סינון של הגדרת מעקב ברירת המחדל כדי להפחית את הסיכון לאובדן נתונים במעקבים ברמות API חדשות יותר. (I54e8a)
- הוספנו ארגומנט ניסיוני של אינסטרומנטציה,
androidx.benchmark.killExistingPerfettoRecordings, שאפשר להגדיר לו את הערךfalseכדי לאפשר המשך של לכידת עקבות קיימת של Perfetto. כברירת מחדל, כדי למנוע הפרעות, תהליכי לכידת נתוני מעקב קיימים של Perfecto במכשיר מופסקים. (I02a3c) - השדה
context.osCodenameAbbreviatedבפורמט JSON יהיה עכשיוRELבגרסאות של מערכת ההפעלה שפורסמו ב-API 35 ומעלה, כי הפלטפורמה הבסיסית כבר לא תומכת בשמות קוד לא מספריים. (Ib17fd) - תוקנה קריסה ב-
FrameTimingMetricכשמתרחשים פריימים שמסונכרנים מחדש. (I7c6f4, b/394610806) - ההנחה ש-
Choreographer#doFrameהוא החלק העליון של מסגרת המחסנית בשרשור הראשי שלFrameTimingQueryכבר לא תקפה. (Iee0e0, b/340206285)
גרסה 1.4.0-alpha08
12 בפברואר 2025
androidx.benchmark:benchmark-*:1.4.0-alpha08 מופץ. גרסה 1.4.0-alpha08 מכילה את השמירות האלה.
שינויים ב-API
- העברנו את ממשקי ה-API של התוספים
TraceProcessor.runSession()למצב ניסיוני, כי סביר להניח שבסופו של דבר הם יהפכו לבנאים קונקרטיים ב-Android. (Ib0528, b/393640753) - רוב ההטמעה של Startup Insights היא עכשיו ציבורית או ניסיונית, ועוברת לארטיפקט
TraceProcessor. ראוStartupInsights. (I0aa00) - הוצאנו משימוש את
BenchmarkRule.runWithTimingDisabled {}לטובתBenchmarkRule.runWithMeasurementDisabled {}, שמתאר בצורה ברורה יותר את ההתנהגות – כל המדדים מושהים. בנוסף, צריך לחשוף את מחלקת העלMicrobenchmarkScopeכי אי אפשר להצהיר מחדש על הפונקציהrunWithMeasurementDisabledכדי לפתוח גישה, כי היא מוטמעת. (I9e23b, b/389149423, b/149979716) - ספריות ההשוואה עברו ל-Kotlin 2.0. (I9d1e0)
- הוסר ארגומנט האינסטרומנטציה
androidx.benchmark.startupProfiles.enable. היא כבר לא שימושית, כי אפשר לשלוט בה באמצעות הארגומנטincludeInStartupProfileב-BaselineProfileRule.collect(). (I39eb4)
תיקוני באגים
- הפחתנו את מספר הפונקציות הפנימיות של Microbenchmark שמופעלות במהלך יצירת פרופיל, כדי שיהיה ברור יותר למשל ב-Method traces (Ifaed8)
- תיקון ספקולטיבי לקריסות: 'הפעולה [
ProcessPid(processName=perfetto, pid=...)] נכשלה'. עכשיו, במקום לקרוס, Benchmark ירשום הודעה ביומן אם לא תהיה אפשרות לעצור תהליך Perfetto ברקע לפני הפעלת ההשוואה לשוק. (I37d3e, b/323601788) - תיקון
IllegalStateExceptionsעם התווית 'פלט צפוי של stdoutpm dump-profiles' שנגרמו בגלל בדיקה קפדנית מדי של פורמט הפלט. (I358dc)
גרסה 1.4.0-alpha07
29 בינואר 2025
androidx.benchmark:benchmark-*:1.4.0-alpha07 מופץ. גרסה 1.4.0-alpha07 מכילה את השמירות האלה.
תכונות חדשות
-
BaselineProfileRuleכולל עכשיו API שלcollectWithResults(...)שכולל רשימה של נתיבים לפרופילים המחושבים. (I056f8) - נוסף ארגומנט האינסטרומנטציה
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline, שאפשר להגדיר לו את הערך false כדי להשבית את ההתנהגות שלmeasureRepeatedOnMainThreadבמקרה של חריגה מהזמן המוקצב לבדיקות מקומיות. לא מומלץ להשתמש באפשרות הזו, כי היא מגדילה את הסיכוי להתרחשות של ANR במהלך הבדיקות. (Idbeec, b/353226476)
שינויים ב-API
- הוספת
@JvmOverloadsלבונהMicrobenchmarkConfig. (I13fd3) - שינינו את הקוד של
BenchmarkRuleכך שהוא מבוסס על קורוטינות, ושיפרנו את ההתנהגות שלyield(). במסגרת השינוי הזה הוסרו כמה ממשקיBenchmarkStateAPI ניסיוניים, אבל בהמשך יתווספו ממשקי API חלופיים לפי הצורך. בנוסף, הוספנו אתrunWithMeasurementDisabledכדי להבהיר את ההתנהגות (כל המדידות מושהות). בעתיד, המדיניותrunWithTimingDisabledתצא משימוש. (I19837, b/389149423, b/311242861) - מעבירים את
PerfettoTraceProcessorאלTraceProcessorבארטיפקטandroidx.benchmark:benchmark-traceprocessorחדש, ומשנים את רוב ה-API שלו כך שלא יהיה ניסיוני. כל התאמה אישית שלTraceMetricאו כל קריאה ממעקבים תצטרך לעבור לעדכון של הייבוא החדש שלTraceProcessor. ממשק ה-API החדשTraceProcessorפועל בדיוק כמו הקודם, אבל הוא ספריית ממשק עצמאית (בדומה לשכבתandroidx.sqliteמ-Room) עם הטמעה ספציפית ל-Android שמוטמעת ב-macrobenchmark. אפשר להשתמש בארטיפקט החדש גם ב-JVM, אבל כרגע צריך להפעיל עותק משלכם של הקובץ הבינאריTraceProcessorולספק יציאה להתחברות אליו. (I3a767, I62563, b/381134564)
תיקוני באגים
- הצגת הודעת שגיאה ברורה יותר כשלא מצליחים להפעיל את תהליך היעד (יכול להיות שזה קורה בגלל קריסה בתהליך היעד) במקום ההודעה המעורפלת יותר 'לא ניתן לאשר את השלמת הפעלת הפעילות' (I3539b)
MacrobenchmarkScope.startActivityAndWait - תוקנו כמה שגיאות תחביר בדוגמאות של Kotlin, והוסף הדגשת תחביר בכמה דוגמאות של Java / build.gradle. (Ib3808)
- הוספנו הבהרות למסמכי הפרמטרים
ArtMetricו-CaptureInfo. (I96e60)
גרסה 1.4.0-alpha06
11 בדצמבר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha06 מופץ. גרסה 1.4.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- הוסר השימוש ב-
@Language("sql")ב-PerfettoTraceProcessor.Session.query(), כי ההדגשה או הניתוח ב-Studio לא פועלים. (Idc2fa, b/377733398)
תיקוני באגים
- הספרייה הזו משתמשת עכשיו בהערות לגבי ערכי null של JSpecify, שהן הערות לשימוש בסוג. מפתחים ב-Kotlin צריכים להשתמש בארגומנט המהדר הבא כדי לאכוף שימוש נכון:
-Xjspecify-annotations=strict(זו ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin). (I46810, b/326456246) - תוקן
ArtMetricכדי לדווח על טעינת מחלקה (לא על הפעלה), והמסמכים שופרו כדי להבהיר את התנהגות זמן הריצה. (I9915c) - ב-Android Multiuser, מריצים פקודות כמשתמש root רק במכשירים עם הרשאות root. (I88b44)
גרסה 1.4.0-alpha05
13 בנובמבר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha05 מופץ. גרסה 1.4.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה ב-API 34 ומעלה שגרמה לכך שהביצועים של
CompilationMode.None()לא היו עקביים ולא ייצגו את הביצועים הראשוניים במקרה הגרוע. השינוי הזה נועד לעקוף שינוי בפלטפורמה שמאפשר למצב הקומפילציה של ARTverifyלקמפל אפליקציות באופן חלקי (משפיע רק על טעינת מחלקות) זמן קצר אחרי ההפעלה הראשונה. (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תמיד מוחלף בגרסאות של השוואה למחיר המקובל בשוק, והערךisDebuggableתמיד מוחלף בגרסאות של השוואה למחיר המקובל בשוק ובגרסאות שלnonMinified(יצירת פרופיל Baseline). (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 של ההשוואה לשוק כדי להציג את היציבות במהלך הפעלת ההשוואה לשוק. (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_ הופיעה בחלק מהאמולטורים עם הרשאות רוט. (Ic5117)
- הספרייה הזו משתמשת עכשיו בהערות לגבי ערכי null של JSpecify, שהן הערות לשימוש בסוג. מפתחים ב-Kotlin צריכים להשתמש בארגומנט המהדר הבא כדי לאכוף שימוש נכון:
-Xjspecify-annotations=strict(זו ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin). (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אוסף עכשיו פרופילים לאפליקציות מרובות תהליכים על ידי שליחת אות לכל תהליך שפועל בסוף הבלוק כדי ליצור פרופילים. אם קומפילציה מבוססת-פרופיל לא מוצאת אף פעם תהליך לשידור, הקומפילציה תיכשל, כי לא צפויים נתוני פרופיל בתוכה. בנוסף, נוסף ארגומנט אינסטרומנטציה לשליטה במשך ההמתנה של ה-dump:androidx.benchmark.saveProfileWaitMillis(I0f519, b/366231469) - מ-Benchmark
1.3.2: תוקנה הבעיה שגרמה לכך שלא הייתה אפשרות למשוך קבצים של פרופיל Baseline או תוצאות של Macrobenchmark מ-Baseline Profile Gradle Plugin ב-Firebase Test Lab (FTL). (I2f678, b/285187547)
כדי להשתמש ב-FTL, צריך להחיל את הפלאגין על מודול פרופיל ה-Baseline בבלוק הפלאגין, עם:
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 שנוצר לתוסף של פרופיל ה-Baseline:
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 בכרטיסייה 'השוואה', למשל:
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) - מדדי מיקרו-בנצ'מרק מוצגים עכשיו ב-Perfetto traces כדלפקים. (3214854)
- נוספו סקריפטים ניסיוניים להשבתת jit (נדרשת הרשאת root או הפעלה מחדש של זמן הריצה) ולאיפוס של מצב הביצועים או הבדיקה של המכשיר. בשלב הזה, הם לא מתפרסמים כמשימות gradle. (7c3732b)
- נוסף ארגומנט של השוואה לביצועים כדי לדלג על בדיקות כשמריצים באמולטור. כשהאפשרות
automaticGenerationDuringbuild מופעלת, גם מדדי השוואה לשוק יפעילו יצירה של פרופיל Baseline. הפעולה תיכשל אם נעשה שימוש באמולטורים. במקום זאת, אפשר לדלג על הבדיקה באמצעות הארגומנט החדשskipBenchmarksOnEmulator. (0c2ddcd) - שינוי הלוגיקה של הפעלת אירועי ביצועים כדי שתפעל ב-API 23 ומעלה (2550048)
שינויים ב-API
- הארגומנט הקיים של הניסוי
PerfettoConfigעדMacrobenchmarkRule.measureRepeated()הועבר לאובייקט החדשExperimentalConfig.
תיקוני באגים
- הגדלת מספר הניסיונות החוזרים של
lockClocks.sh(99e9dac) - אם כבר קיימים סוגי build של
nonMinifiedושל השוואה לשוק, אל תיצרו אותם. בגלל באג, גם אם סוגי ה-build שלnonMinifiedושל ההשוואה היו קיימים, הם היו נוצרים מחדש. (e75f0a5) - להתעלם מפלחים שלא מסתיימים מתוך
TraceSectionMetricתוצאות. (a927d20) - שיפור בדיקת האמולטור כדי להתחשב בקידומת
sdk_. (1587de8) - התייחסות לחבילות שלא פועלות כאל חבילות שנוקו ב-
FrameTimingGfxInfoMetric. (35cc79c) - תוקנה בעיה שגרמה לכך שהפונקציה
androidx.benchmark.cpuEventCounterהפיקה ערכים פגומים לאירועים שאינם אירועי הוראות. (06edd59) - תוקן באפשרות
resumeTiming/runWithTimingDisabledכך שתכבד את סדר העדיפות של המדדים, ותפחית באופן משמעותי את ההשפעה של השהיה או הפעלה מחדש של מדד עם עדיפות נמוכה יותר על התוצאות של מדד עם עדיפות גבוהה יותר. לדוגמה, אם משתמשים במונה ביצועים של CPU באמצעות ארגומנט המכשירcpuEventCounter.enable, הערך timeNs לא יקטן באופן משמעותי יותר כשמשהים או מפעילים מחדש את המכשיר. (5de0968)
גרסה 1.3
גרסה 1.3.4
26 במרץ 2025
androidx.benchmark:benchmark-*:1.3.4 מופץ. גרסה 1.3.4 מכילה את השמירות האלה.
תיקוני באגים
- תוקנו בעיות של חוסר תאימות ב-Gradle Project Isolation בפלאגין Benchmark Baseline Gradle. (b/404523257)
גרסה 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 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה הבעיה שגרמה לכך שלא הייתה אפשרות למשוך קבצים של תוצאות פרופיל Baseline או Macrobenchmark מהפלאגין Baseline Profile Gradle ב-Firebase Test Lab (FTL). (I2f678, b/285187547)
כדי להשתמש ב-FTL, צריך להחיל את הפלאגין על מודול פרופיל ה-Baseline בבלוק הפלאגין, עם:
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 שנוצר לתוסף של פרופיל ה-Baseline:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
גרסה 1.3.1
18 בספטמבר 2024
androidx.benchmark:benchmark-*:1.3.1 מופץ. גרסה 1.3.1 מכילה את השמירות האלה.
תיקוני באגים
- נוספה מאפיין gradle
androidx.baselineprofile.suppressWarningsכדי להשבית את כל האזהרות של פרופיל ה-Baseline (I7c36e, b/349646646) - הפלאגין Baseline Profile 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
- מעקב אחר שיטות מופעל כברירת מחדל במיקרו-בנצ'מרקים כשמריצים אותם ברוב המכשירים
- מעקב אחר שיטות מופעל כשלב נפרד, אחרי המדידות – כך אפשר להפיק גם מדידות מדויקות וגם מעקב אחר שיטות מהרצת השוואה אחת.
- תיעוד method בחלק מהגרסאות של Android OS ו-ART ישפיע על שלבי מדידה מאוחרים יותר – בגרסאות האלה, תיעוד method מושבת כברירת מחדל, ואזהרה מודפסת בפלט של Studio
- נקודות השוואה ומקרי ANR ב-Thread הראשי
- נוסף
measureRepeatedOnMainThreadלמדדי ביצועים של שרשור ממשק המשתמש (למשל, מדדים שמתקשרים עם ממשקי משתמש של Compose/View) כדי למנוע שגיאות ANR כשמריצים את הבדיקה במשך הרבה שניות. - המערכת מדלגת על מעקב אחר שיטות אם היא צופה שהן יחרגו מהמועד האחרון למניעת ANR. מגדירים את
androidx.benchmark.profiling.skipWhenDurationRisksAnrלערך false כדי להשבית את ההתנהגות הזו (לא מומלץ להגדיר את הערך הזה ל-false בהרצות של CI, כי מקרי ANR עלולים לגרום לבעיות בהרצות ארוכות של CI).
- נוסף
- הקטנה
- כללי proguard מוטמעים לשיפור המיקרו-בנצ'מרקינג כשהפונקציה minification מופעלת
- כדי להשתמש ב-Minification/R8 במודול של ספרייה, צריך AGP 8.3. אפשר להפעיל את התכונה הזו באמצעות
android.buildTypes.release.androidTest.enableMinificationבקובץbuild.gradle - נוסף API ניסיוני של
BlackHole.consume()כדי למנוע הסרה של קוד לא פעיל (If6812, b/286091643)
- מדדים
- תכונה ניסיונית של מונה אירועי CPU (מדדים מ-
perf_event_open, שדורש הרשאות בסיס ברוב הגרסאות של הפלטפורמה), גישה דרךInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(אפשר להגדיר ל-true), ואפשר להגדיר אתandroidx.benchmark.cpuEventCounter.eventsלמשל ל-(Instructions,CpuCycles). התכונה הזו אמורה להיות נתמכת בחלק מהאמולטורים של userdebug, אבל התמיכה לא נבדקה בכל האמולטורים הזמינים
- תכונה ניסיונית של מונה אירועי CPU (מדדים מ-
שינויים ב-Macrobenchmark מאז גרסה 1.2.0
- שיפוץ של מעקב אחר שיטות בבדיקות ביצועים כלליות.
- עכשיו, מעקב אחר שיטות מוגבל למשך הזמן של
measureBlock, ויכול לתעד כמה סשנים אם התהליך מתחיל כמה פעמים. - בעבר, מעקב אחר שיטות היה פועל רק עבור
StartupMode.COLDbenchmarks, ולא היה מתעד כלום עבורmeasureBlocksשלא הפעיל מחדש את תהליך היעד - תיקנו את הבעיה של ניקוי עקבות השיטה ב-macrobenchmark, כך שעקבות השיטה אמורים להילכד באופן מלא ותקין, גם במכשירים איטיים יותר. (I6349a, b/329904950)
- עכשיו, מעקב אחר שיטות מוגבל למשך הזמן של
- הוספנו אפשרות להוציא פרופיל ART בצורה נכונה במהלך איטרציות
warmUpבודדות כשהתהליך מופסק, כדי שהמדידות שלCompilationMode.Partial(warmup=N)יהיו מדויקות יותר. (I17923) - הודעת שגיאה על שידור Shader שנכשל
- נוספו הצעות לניפוי באגים להודעת השגיאה על שידור של shader שנשמט
- מוסיפים שני ארגומנטים של אינסטרומנטציה כדי לעקוף את התנהגות ההשמטה של הצללה, וכך למנוע קריסות כשמבצעים בדיקות השוואה לאפליקציות בלי
ProfileInstaller1.3:-
androidx.benchmark.dropShaders.enable=true/false: אפשר להשתמש באפשרות הזו כדי לדלג על כל ההסרה של Shader (כולל זו שמתבצעת בהפעלות של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 ממתין עכשיו שנייה אחת עד שהאפליקציה המטרה תבצע flush לפרופיל 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()ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם קשורים למסגרת, ומוצגים חריגים כשמזוהה הפעלה, למעט מידע על תזמון המסגרת (מפרוסות של ממשק המשתמש/זמן אמת). (Id240f, b/329145809) - הוספנו את המדידה
frameCountל-FrameTimingMetricכדי לעזור לכם לזהות תרחישים שבהם המדידות משתנות בגלל שינוי במספר הפריימים שנוצרו (הוספנו אנימציות חדשות, תיקנו בעיות שקשורות לביטול תוקף). (I1e5aa) - הוספנו הבהרה שלפיה
frameOverrunMsהוא המדד המועדף למעקב כשהוא זמין במסמכי התיעוד, והסבר למה. (I18749, b/329478323) - תוקנה בעיה שבה אפשר היה לשייך מסגרות לא סגורות בתחילת המעקב ובסופו, מה שהוביל לדיווח שגוי של מסגרת אחת ארוכה במיוחד. (I39353, b/322232828)
- שיפור השגיאה
FrameTimingMetricכשלא נוצרים פריימים, ותמיד מוציא קישור למעקב כשניתוח המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9) - תוקנה קריסה ב-
FrameTimingMetricשלא הצליחה לנתח את מזהה הפריים, במיוחד במכשירי OEM מסוימים. (Ia24bc, b/303823815, b/306235276) - הפחתנו את רמת ההקפדה של הבדיקות ב-
FrameMetricsוהוספנו פרטים נוספים להודעות השגיאה. (Iadede)
- הספק – נוספו
שינויים בפלאגין Baseline Profile Gradle מאז גרסה 1.2.0
- הגרסה המקסימלית המומלצת של AGP עלתה ל-9.0.0-alpha01.
- חשוב לוודא שהמשימות
mergeArtProfileו-mergeStartupProfileתמיד ימתינו ליצירת פרופיל ה-Baseline. (I623d6, b/343086054) - אם יצירת פרופיל הבסיס תצליח, תופיע סיכום של השינויים שבוצעו (I824c8, b/269484510)
- נוסף DSL להשבתת אזהרות (Ic4deb, b/331237001)
- צריך לפתור את הבעיה כדי להבטיח שההשוואות ישתמשו בפרופילים שנוצרו כפרופילים בסיסיים כש
automaticGenerationDuringBuildמושבת (Ic144f, b/333024280) - תיקנו את הדריסות של מאפייני הפלאגין
BaselineProfilegradle כדי לאפשר יצירה של פרופיל Baseline והשוואה בין ביצועים כשמבצעים התאמה אישית שלnonMinifiedאו של סוג build להשוואה בין ביצועים. (Ib8f05, b/324837887) - תיקון לבעיה שקשורה להכללת פרופילים של Baseline של ספריות ב-AAR לפני AGP 8.3.0-alpha15. (I1d2af, b/313992099)
- תוקנה כתובת ה-URL של הפלט של פרופיל הבסיס ופרופיל ההפעלה בסיום משימת היצירה. (I802e5, b/313976958)
שינויים משמעותיים אחרים מאז גרסה 1.2.0
- איסוף נתוני מעקב
- הפחתנו את השגיאה EXITCODE 2 כשמפעילים את perfetto משגיאה לאזהרה שנרשמת ביומן
- הפעלת מעקב AIDL כברירת מחדל במבחני ביצועים(נדרש API 28) (Ia0af2, b/341852305)
- הפעלת מעקב אחרי תגי Porter כברירת מחדל בהשוואות לשוק. כך אפשר ללכוד, למשל, נקודות מעקב של נעילת מסך. (Icfe44, b/286551983)
- הגדלנו את הזמן הקצוב לתפוגה של התחלת לכידת נתונים כדי למנוע קריסות כשמתחילים מעקב במכשירים איטיים יותר (I98841, b/329145808)
- הוספנו API ציבורי
PerfettoTraceProcessor.Session.queryMetricsממשקי API עם וריאציות של JSON, textproto ו-proto בינארי (לא מפוענח). הם מאפשרים לכם לשלוח שאילתות לגבי מדדים שמוטמעים ב-TraceProcessor(I54d7f, b/304038382) - כדי להקטין את הסיכון לאובדן נתונים בתחילת המעקב, מומלץ להפעיל את האפשרות לחסימת התחלה ברשומה של מעקב Perfetto. התמיכה קיימת רק ב-API 33 ומעלה. (Ie6e41, b/310760059)
- פלט JSON
- נוסף מידע נוסף בהקשר של השוואה (benchmark) בפלט JSON:
-
context.artMainlineVersion– גרסת מספר של מודול ראשי של Art (אם הוא קיים במכשיר, אחרת-1) context.build.id– שווה ל-android.os.Build.IDcontext.build.version.codename– שווה ל-android.os.Build.VERSION.CODENAME-
context.build.version.abbreviatedCodename– מתאים לאות הראשונה של שם הקוד של גרסת טרום-ההפצה (כולל בגרסאות build של ההפצה) (Ie5020)
-
- נוספה רשימת
profilerOutputלפלט JSON כדי להקל על השימוש בכלי פרופילים של עקבות (למשל, Perfetto, עקבות של שיטות) (I05ddd, b/332604449) - נוספה אזהרה כשמשתמשים ב-Android Test Orchestrator במודולים של בדיקות השוואתיות, כי זה יגרום לכך שקובצי JSON של פלט לכל מודול יידרסו שוב ושוב. (Ia1af6, b/286899049)
- הפונקציה יוצרת חריגה כששמות הקבצים ארוכים מ-200 תווים, כדי למנוע קריסות לא ברורות בזמן כתיבה או עיבוד של קבצים. (I4a5ab)
- נוסף מידע נוסף בהקשר של השוואה (benchmark) בפלט JSON:
גרסה 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כדי להתאים לסדר העדיפויות של המדדים, וההשפעה של השהיה או הפעלה מחדש של מדד עם עדיפות נמוכה על התוצאות של מדד עם עדיפות גבוהה פחתה באופן משמעותי. לדוגמה, אם משתמשים במונה ביצועים של CPU באמצעות ארגומנט המכשירcpuEventCounter.enable, הערך timeNs לא יקטן באופן משמעותי יותר כשמשהים או מפעילים מחדש את המכשיר. (I39c2e, b/286306579, b/307445225) - הסיכוי שדגימת המחסנית תגרום ל-
measureRepeatedOnMainThreadלהגיע לפסק זמן קשיח בשרשור הראשי קטן יותר, כי העברנו את ההמרה של דגימת המחסנית מהשרשור הראשי. (I487a8, b/342237318) - הסרנו את האפשרות ליצור באופן ידני תרשים של הגישה לממשקי API חדשים של פלטפורמות, כי זה קורה אוטומטית באמצעות מידול API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל R8 גרסה 3.3) ובכל הגרסאות כשמשתמשים ב-AGP 8.1 ואילך (למשל D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה 8.1 ואילך של D8. למידע נוסף, מומלץ לעיין במאמר הזה. (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) - הכלי Microbenchmark יציג עכשיו תוצאות נכונות כדי למנוע מצב שבו מעקב אחר שיטות יפריע למדידות. הבעיה הזו מתרחשת במכשירים מסוימים כשמפעילים בכוח מעקב אחר שיטות (באמצעות ארגומנטים של מכשור או
MicrobenchmarkConfig), ואם מתבצע ניסיון למדידה אחרי מעקב אחר שיטות. במכשירים המושפעים פועל API בגרסה 26 עד 30 או גרסאות מסוימות של מודול ART mainline שהושפעו מההפרעה הזו, ואפשר לזהות אותם בזמן הריצה באמצעותProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92, b/303660864)
תיקוני באגים
- הגרסה המקסימלית המומלצת של AGP הועלתה ל-9.0.0-alpha01. (I5bbb0)
- נוסף מצב קומפילציה להשוואה לשוק (If5612, b/325512900)
- הפעלת מעקב AIDL כברירת מחדל (נדרש API 28) (Ia0af2, b/341852305)
- נוסף מידע נוסף בהקשר של השוואה (benchmark) בפלט JSON:
-
context.artMainlineVersion– גרסה שלמה של מודול ראשי של Art (אם הוא קיים במכשיר, אחרת -1) context.build.id– שווה ל-android.os.Build.IDcontext.build.version.codename– שווה ל-android.os.Build.VERSION.CODENAME-
context.build.version.abbreviatedCodename– מתאים לאות הראשונה של שם הקוד של גרסת טרום-ההפצה (גם בגרסאות הפצה) (Ie5020)
-
- בוצעו תיקונים ב-
StackSamplingכדי להתאים ל-androidx.benchmark.profiling.sampleDurationSeconds(Ib1d53) - משנים את התלות של macro->common ל-
api(), כדי שיהיה קל יותר להשתמש ב-PerfettoTraceוב-PerfettoConfig, למשל. (Icdae3, b/341851833) - חשוב לוודא שהמשימות
mergeArtProfileו-mergeStartupProfileתמיד ימתינו ליצירת פרופיל ה-Baseline. (I623d6, b/343086054) - כשמחליטים אם להפעיל וריאנט, כדאי להתחשב במצב ההפעלה שלו. (I5d19e, b/343249144)
- הגדלנו את פסק הזמן שמוגדר כברירת מחדל להפעלה של מעבד העקבות של Perfetto. (I87e8c, b/329145808)
גרסה 1.3.0-alpha05
14 במאי 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05 מופץ. גרסה 1.3.0-alpha05 מכילה את ההתחייבויות האלה.
תיקוני באגים
- הצגת חריג ברור יותר כשמדד המאקרו מחזיר ערכי אפס לכל האיטרציות (Iab58f, b/314931695)
- נוספו כללי פתרון בעיות נוספים לכללי microbench proguard, כולל תמיכה בכללי listener ואזהרות או שגיאות אחרות שנצפו. (I14d8f, b/329126308, b/339085669)
- המעקב אחר שיטות פועל כשלב נפרד במהלך בדיקת ביצועים ברמת המאקרו, והוא כבר לא משפיע על המדידות. (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)
- כדי לפשט את התהליך, ה-Macrobenchmark מוגדר לפרק הזמן של ה-method
measureBlock()בפועל. בעבר, התהליך התחיל בהפעלת תהליך היעד ותמך רק בהפעלות במצב התחלתי (cold start) (Iee85a, b/300651094) - מניעת קריסה כשההפעלה של מעבד העקבות של Perfetto איטית (I98841, b/329145808)
גרסה 1.3.0-alpha03
17 באפריל 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03 מופץ. גרסה 1.3.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו API ציבורי
PerfettoTraceProcessor.Session.queryMetricsממשקי API עם וריאציות של JSON, textproto ו-proto בינארי (לא מפוענח). הם מאפשרים לשלוח שאילתות לגבי מדדים שמוטמעים ב-TraceProcessor (I54d7f, b/304038382) - נוסף
profilerOutputלפלט JSON כדי להקל על השימוש בכלי פרופילים (למשל, perfetto, method traces). (I05ddd, b/332604449) - הוספנו תג חשמל להשוואה ל-Perfetto Config. כך אפשר ללכוד, למשל, נקודות מעקב של נעילת מסך. (Icfe44, b/286551983)
- נוסף ארגומנט inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr, שאפשר להגדיר לו את הערך false כדי למנוע דילוג על מעקב אחר שיטות כשהמשך הצפוי עלול לגרום ל-ANR – מומלץ מאוד להימנע משימוש בארגומנט הזה בהרצות של CI. - נוסף ארגומנט ניסיוני של אינסטרומנטציה
androidx.benchmark.profiling.perfCompare.enable. מגדירים את הארגומנט הזה כ-true כדי להריץ השוואת תזמון בין שלבי המדידה והפרופיל. שימושי למשל להערכת התקורה של מעקב אחר שיטות. (I61fb4, b/329146942)
שינויים ב-API
- השינוי
TraceSectionMetric.Modeלמחלקה אטומה מאפשר הרחבה עתידית בלי לשבור הצהרות מתישות (I71f7b) - הוספנו את
TraceSectionMetric.Mode.Averageואת.Count, וסידרנו מחדש את הארגומנטים כך שהארגומנט הנפוץ יותר (mode) יופיע מוקדם יותר ברשימת הארגומנטים, וכך לא צריך לציין שמות של פרמטרים. (Ibf0b0, b/315830077, b/322167531) - השם של
Metric.getResultשונה ל-getMeasurementsכדי להתאים לסוג ההחזרה (I42595)
תיקוני באגים
- צריך לפתור את הבעיה כדי להבטיח שההשוואות ישתמשו בפרופילים שנוצרו כפרופילים בסיסיים כש
automaticGenerationDuringBuildמושבת (Ic144f, b/333024280) - תיקנו את הדריסות של מאפייני הפלאגין
BaselineProfilegradle כדי לאפשר יצירה של פרופיל Baseline והשוואה בין פרופילים כשמבצעים התאמה אישית שלnonMinifiedאו של סוג build להשוואה. (Ib8f05, b/324837887) - תיקנו את הבעיה של ניקוי עקבות של שיטות ב-macrobenchmark, כך שעקבות של שיטות אמורות להילכד באופן מלא ותקין, גם במכשירים איטיים יותר. (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()ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם קשורים למסגרת, ומוצגים חריגים כשמזוהה הפעלה, למעט מידע על תזמון המסגרת (מפרוסות של ממשק המשתמש/זמן אמת). (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 במיקרו-בנצ'מרק באמצעות כללי proguard מוטמעים. חשוב לזכור שהתמיכה הזו היא ניסיונית, ונדרשת גרסה AGP 8.3 לצמצום של בדיקות מודול הספריות. כדי להפעיל את האפשרות R8 minification/optimization במודול ההשוואה
build.gradle, צריך להשתמש בקוד הבא. הפעלה כזו אמורה להוביל לשיפור משמעותי בביצועים, בהתאם לעומס העבודה. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
תיקוני באגים
- תוקנה אזהרה לגבי מעקב אחר שיטות, כך שהיא מופיעה בשורה נפרדת מהפלט של המיקרו-בנצ'מרק. (I0455c, b/328308833)
גרסה 1.3.0-alpha01
21 בפברואר 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01 מופץ. גרסה 1.3.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- שינינו את השם של הפרמטרים הבוליאניים
MicrobenchmarkConfigכדי להימנע מהמילה 'should' (צריך) שלא לצורך (Ia8f00, b/303387299) - נוסף
BenchmarkRule.measureRepeatedOnMainThreadכדי שבדיקות ביצועים של השרשור הראשי (למשל, בדיקות שקשורות ל-Views או לממשקי משתמש של Compose) לא יפעילו שגיאות ANR, במיוחד במהלך חבילות גדולות ב-CI. (I5c86d) - נוסף
FrameTimingGfxInfoMetric, הטמעה חלופית ניסיונית שלFrameTimingMetricעם מדידות שמגיעות ישירות מהפלטפורמה, במקום לחלץ אותן מהמעקב של Perfetto. (I457cb, b/322232828) - הוספת היכולת ליצור dump של פרופיל ART במהלך איטרציות בודדות של
warmUp. (I17923) - בוצעו כמה שינויים ב-
TraceSectionMetricAPI:- הוספה של
Mode.Min,Mode.Max - הוספת ארגומנט של תווית כדי לשנות את שם הקטע כתווית מדד
- הוספנו את שם המצב לפלט כדי להבהיר את משמעות המדד
- שינינו את ברירת המחדל לחישוב סכום, כי רוב השימוש במדד הזה הוא לאירועים חוזרים. חשוב לשים לב לשינויים האלה בשימוש ב-CI, כי הם עלולים ליצור אי-רציפות או לשבור את הניתוח. (Ic1e82, b/301892382, b/301955938)
- הוספה של
תיקוני באגים
- שיפור בהודעת השגיאה בתוסף Baseline Profile Gradle כשמציינים מכשיר מנוהל שלא קיים (Idea2b, b/313803289)
- תיקון שמאפשר לכלול פרופילים של Baseline בספרייה ב-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) - מוסיפים שני ארגומנטים של אינסטרומנטציה כדי לעקוף את התנהגות ההשמטה של הצללה, וכך למנוע קריסות כשמבצעים בדיקות השוואה לאפליקציות בלי
ProfileInstaller1.3:-
androidx.benchmark.dropShaders.enable=true/false: אפשר להשתמש באפשרות הזו כדי לדלג על כל ההסרה של Shader (כולל זו שמתבצעת בהפעלות של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 בגרסאות למשתמשים. כך אפשר לעקוף אזהרות של Play Protect שגורמות לכשלים בחלק מהמכשירים. (Ic9e36) - אפשר להשתמש ב-
am force-stopכדי להפסיק אפליקציות שהן לא אפליקציות מערכת כמו ממשק המשתמש של המערכת או מרכז האפליקציות. (I5e028) - הכלי Macrobenchmark מחכה עכשיו ל-
1 secondעד שאפליקציית היעד תבצע סנכרון של פרופיל ART (בעבר הוא חיכה ל-500 ms). (I85a50, b/316082056) - שיפור השגיאה
FrameTimingMetricכשלא נוצרים פריימים, ותמיד מוציא קישור למעקב כשניתוח המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9) - תוקנה קריסה ב-
FrameTimingMetricשלא הצליחה לנתח את מזהה הפריים, במיוחד במכשירי OEM מסוימים. (Ia24bc, b/303823815, b/306235276) - הפחתנו את רמת ההקפדה של הבדיקות ב-
FrameMetricsוהוספנו פרטים נוספים להודעות השגיאה. (Iadede)
גרסה 1.2
גרסה 1.2.4
17 באפריל 2024
androidx.benchmark:benchmark-*:1.2.4 מופץ. גרסה 1.2.4 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה לא הוגדר srcset של פרופיל Baseline בווריאציות של השוואה לשוק. בנוסף, בוצע תיקון של
automaticGenerationDuringBuildבספריות שגרם לתלות מעגלית. (I28ab7, b/333024280) - אפשר להשתמש ב-
am force-stopכדי להפסיק אפליקציות שהן לא אפליקציות מערכת כמו ממשק המשתמש של המערכת או מרכז האפליקציות. התיקון הזה פותר את הבעיה שגורמת לקריסת מדדי הביצועים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 מכילה את השמירות האלה.
תיקוני באגים
- הוסרה חריגה מ-Baseline Profile Gradle Plugin כשגרסת AGP היא 8.3.0 ומעלה.
- תיקון לבעיה שקשורה להכללת פרופילים של Baseline של ספריות ב-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
- פלאגין Baseline Profile Gradle חדש מאפשר לכם ללכוד פרופילי Baseline ולכלול אותם בתהליך העבודה של הבדיקות וה-build באופן אוטומטי.
BaselineProfileRule.collectיציב עכשיו, גרסה יעילה ופשוטה של ה-API הניסיוני הקודםBaselineProfileRule.collectBaselineProfile- פשוט מציינים את
packageName, ומקדמים את האפליקציה
- פשוט מציינים את
- בספריות שיוצרות פרופילים של Baseline, עכשיו אפשר לסנן את הכללים שנוצרו בקוד (ארגומנט
BaselineProfileRule.collect) או בצורה פשוטה יותר בתוסף Gradle - תיקונים
- תוקן איסוף פרופילים בסיסיים ב-Android U+ (Id1392, b/277645214)
Macrobenchmark
- אוסף
- החל מגרסה 1.2.0, ספריית Macrobenchmark מאפסת באופן מלא את מצב הקומפילציה לכל קומפילציה. כדי להשתמש בגרסה הזו, צריך להתקין מחדש את ה-APK בגרסאות Android עד Android 13. לכן, אם רוצים לשמור את המצב (למשל, פרטי התחברות של משתמש) במה שנמדד, מומלץ לבצע השוואת ביצועים ב-Android 14 ומעלה.
- אפשר גם לעקוף את הבעיה הזו על ידי שליטה בהידור האפליקציה בנפרד, ודילוג על ההידור באמצעות
CompilationMode.Ignore()או ארגומנט של אינסטרומנטציה
ארגומנטים של אינסטרומנטציה
- תמיכה בארגומנט של מכשור
androidx.benchmark.dryRunMode.enable(כבר זמין במיקרו-בנצ'מרק) להרצות אימות מהירות יותר (למשל, כשיוצרים את הבנצ'מרק או לפני שליחה) - תמיכה ב-
androidx.benchmark.profiling.mode=StackSamplingוב-MethodTracing. - נוספה
androidx.benchmark.enabledRulesכדי לאפשר סינון בזמן ריצה של פרופיל בסיסי לעומת בדיקות כללים של מדד מאקרו - נוסף הארגומנט
androidx.benchmark.perfettoSdkTracing.enableכדי להפעיל מעקב באמצעות tracing-perfetto, למשל מעקב אחר קומפוזיציה מחדש של Compose. שימו לב: כשמשתמשים ב-StartupMode.COLD, התזמון מושפע באופן משמעותי כי ספריית המעקב נטענת ומופעלת במהלך הפעלת האפליקציה.
- תמיכה בארגומנט של מכשור
דרישות
- כדי להפעיל את התכונות 'לכידת פרופיל' או 'איפוס פרופיל' וניקוי המטמון של Shader, צריך להשתמש ב-Macrobenchmark בגרסה
ProfileInstaller1.3.0 ואילך באפליקציית היעד.
- כדי להפעיל את התכונות 'לכידת פרופיל' או 'איפוס פרופיל' וניקוי המטמון של Shader, צריך להשתמש ב-Macrobenchmark בגרסה
ממשקי API חדשים של מדדים בשלב הניסוי
- נוסף
TraceSectionMetricניסיוני, שמאפשר לחלץ תזמון פשוט מבלוקים שלtrace("") {}באפליקציה, או TraceMetric כדי לנצל את יכולת השאילתות המלאה של PerfettoTraceProcessor. - נוסף
PowerMetricניסיוני כדי לתעד מידע על צריכת חשמל - נוסף מדד ניסיוני
MemoryCountersMetricלספירת שגיאות בדפים - הוספנו את
PerfettoTraceProcessorAPI ניסיוני, שמשמש באופן פנימי לחילוץ מדדים ממעקבי מערכת (נקראים גם מעקבי Perfetto)
- נוסף
תיקונים
- תוקנו קריסות שמתרחשות כשמתקינים או מחלצים פרופילים מאפליקציה שהותקנה מכמה קובצי APK (למשל מ-App Bundle).
- תוקנה בעיה שבה
FrameTimingMetricהתעלם ממסגרות עם מזהי מסגרת לא עקביים (בדרך כלל, מסגרות במהלך אדוות ב-API 31 ואילך) (I747d2, b/279088460) - תוקנו שגיאות בניתוח של עקבות בגודל של יותר מ-64MB (Ief831, b/269949822)
- הוספנו הבהרות לגבי שגיאות שמתרחשות כשדימוי מערכת ההפעלה של המכשיר (במיוחד אמולטור) לא מוגדר כראוי למעקב או לקומפילציה
- דילוג על בדיקת רמת הטעינה של הסוללה במכשירים ללא סוללה (מיקרו ומאקרו)
- שיפור בפלט הקבצים, עם שגיאות ברורות יותר לגבי ספריות פלט לא תקינות, וברירות מחדל בטוחות יותר
- שיפור היציבות של
StartupMode.COLDעל ידי הסרת מטמון ההצללה באופן עקבי (חשוף גם דרךMacrobenchmarkScope.dropShaderCache) - תוקן מצב חלופי של צפייה נוחה ב-
startActivityAndWait.
Microbenchmark
- תכונות
- הפרופיל הועבר לשלב נפרד, אחרי מדדים אחרים, כך שריצת בדיקה אחת יכולה להציג גם תזמון מדויק וגם תוצאות של פרופיל.
- ממשקי API ניסיוניים
- הוספנו API ניסיוני
MicrobenchmarkConfigלהגדרת מדדים בהתאמה אישית ולהגדרת מעקב ופרופילים. אפשר להשתמש בה כדי ללכוד עקבות של שיטות או נקודות מעקב (אבל צריך להיות מודעים לתקורה של המעקב). - נוספו ממשקי API ניסיוניים לשליטה ב-
BenchmarkStateבנפרד מ-BenchmarkRule, ללא JUnit - נוסף רשומה ניסיונית של
PerfettoTraceכדי לאפשר תיעוד של עקבות Perfetto, עם הגדרה בהתאמה אישית, בנפרד מממשקי API של בדיקות השוואה.
- הוספנו API ניסיוני
- תיקונים
- פתרון עקיף לבעיה של רווחים לבנים חסרים בתחילת הפלט של בדיקת ביצועים ב-Android Studio.
- תוקנה הבעיה שבה יכול להיות שהאזהרות לא יודפסו בפלט של בדיקת הביצועים ב-Android Studio.
- תוקנה קריסה של
SampledProfilingב-Android מגרסה 13 (API 33) ואילך. - שיפור משמעותי בביצועים של
dryRunModeעל ידי דילוג עלIsolationActivityומעקב Perfetto (עד פי 10 מהר יותר במצב הרצה יבשה בגרסאות OS ישנות יותר).
גרסה 1.2.0-rc02
6 באוקטובר 2023
androidx.benchmark:benchmark-*:1.2.0-rc02 מופץ. גרסה 1.2.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
- תוקן פלט קובץ ההשוואה כך שלא יגרום יותר לבעיות בהעתקת קובץ הפלאגין.
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 נכשל בנקודת השוואה. (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)
- הוסרה שגיאת macrobenchmark NOT-PROFILEABLE ב-API 31 ומעלה, ודילוג על בדיקת profileable במכשירי eng/userdebug עם גישת root. (I2abac, b/291722507)
- כשמשתמשים באופטימיזציות של פריסת DEX, כללי הפרופיל להפעלה נחשבים עכשיו גם ככללים של פרופיל Baseline. (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 מכילה את השמירות האלה.
תיקוני באגים
- תוקנו בעיות שגרמו להסתרת אזהרות בפלט של נקודת השוואה ב-Studio, ובעיות שגרמו לכך שרווחים מובילים בפלט של נקודת השוואה לא הוצגו ב-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) - הפרופיל של מיקרו-בנצ'מרק עבר לשלב נפרד, ולכן הוא מתבצע ברצף אחרי המדידה, במקום להחליף אותה. גם קטעי ה-trace של
MethodTracingנכללים עכשיו ב-trace שנתפס ב-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) - נוסף מאפיין כדי לדלג על יצירת פרופיל Baseline. שימוש:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)
שינויים ב-API
- API
collectBaselineProfileתמיד יוצר פרופילים יציבים של Baseline. ממשק ה-APIcollectStableBaselineProfileהוסר, ובמקומו צריך להשתמש ב-collectBaselineProfile. (I17262, b/281078707) - השתנה
BaselineProfileRule'sfilterPredicatearg ל-non-null, עם ערך ברירת מחדל שווה ערך, כך שהתנהגות ברירת המחדל של המסנן ברורה יותר במסמכים. (I3816e)
תיקוני באגים
- כדי לשפר באופן משמעותי את הביצועים, כדאי להשבית את
IsolationActivityואת Perfetto tracing ב-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)
- תוקנה בעיה שגרמה לכך שיצירת פרופיל Baseline ב-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 מכילה את השמירות האלה.
תכונות חדשות
- הפלאגין החדש Baseline Profile Gradle זמין בגרסת אלפא, ומאפשר ליצור פרופיל Baseline בקלות רבה יותר ולפשט את תהליך העבודה של המפתחים.
שינויים ב-API
- הוסרה התמיכה ב-Perfetto tracing ב-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כשמתקינים מחדש פרופילים או מחלצים אותם מ-App Bundle עם כמה קובצי APK. (I0d8c8, b/270587281)
גרסה 1.2.0-alpha10
22 בפברואר 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10 מופץ. גרסה 1.2.0-alpha10 מכילה את השמירות האלה.
תכונות חדשות
- ב-Android מגרסה 14 ואילך, Macrobenchmark לא מתקין מחדש אפליקציות יעד כדי לאפס את מצב הקומפילציה, הודות לתכונה חדשה בפלטפורמה. בעבר היה צורך במכשיר עם הרשאות רוט, או להתמודד עם מצב שבו כל מצב האפליקציה (למשל, התחברות משתמש) מוסר לפני כל הפעלה של בדיקת ביצועים. (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 API 33 מזוהה עכשיו בצורה נכונה כשמנסים להריץ macrobenchmark, והאזהרה מודפסת בצורה נכונה. (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) - הוספנו אפשרות לציין תחילית לשם של קובץ פלט כשיוצרים פרופילים של Baseline באמצעות
BaselineProfileRule. (I7b59f, b/260318655)
תיקוני באגים
- שיפור האבטחה של כתיבת פלט קובץ, כדי למנוע מצב שבו קובצי פלט לא נכתבים או לא מצורפים בשקט, במיוחד ב-API 21/22. (If8c44, b/227510293)
- צריך לתקן את הפלט של
simpleperftrace כדי ליצור את הקובץ ולמקם אותו בצורה נכונה. הפעולה הזו אמורה לפתור גם בעיות כלליות יותר שקשורות למקרים שבהם gradle לא מצליח לשלוף קובץ. (I12a1c, b/259424099) - שיפור הודעת השגיאה של profileinstaller שמוצגת כשהגרסה של profileinstaller ישנה מדי. ההודעה הזו מורה לכם עכשיו לעדכן את גרסת profileinstaller (1.2.1) כדי למדוד פרופילים של Baseline ב-API 31 עד 33, במקום להודיע שהפעולה לא נתמכת. (Ia517f, b/253519888)
- תיקון של כמה כשלים בפקודות shell בהודעת השגיאה Print needed API <=23, כולל כשלים בהגדרת קובץ בינארי של perfetto ללכידה וכשלים בלכידת מעקב (Ib6b87, b/258863685)
- מיון אוטומטי של כללי פרופיל שנוצרו כדי לצמצם את מספר השינויים כשהם משתנים לאורך זמן (כשמבצעים צ'ק-אין של כללי פרופיל לבקרת מקור). (Ie2509)
- תוקנה קריסה בגרסאות לא מושרשות מתחת ל-Android 13 (API 33) עם ההודעה
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches(I6c245, b/259508183)
בעיות מוכרות
- יכול להיות שהאפליקציה MacrobenchmarkScope.dropShaderCache() תקרוס בגלל חוסר ברישום של שידור במניפסט של profileinstaller, שעדיין לא פורסם. (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
- הוספנו
PowerMetricAPI למדידת אנרגיה והספק ב-Macrobenchmarks. (Ife601, b/220183779) - תוקן
MacrobenchmarkScope.dropShaderCache()כך שהוא באמת ימחק את מטמון ההצללה. הפעולה הזו מסירה רעשי רקע של כ-20ms מהמדדים שלStartupMode.COLD, כי עכשיו ה-shaders מנוקים באופן עקבי בכל איטרציה. בעבר,Partialקומפילציה באמצעות איטרציות של חימום הייתה מדווחת על מספרים מהירים מדי באופן שגוי, כי סביר יותר שהיה מתבצע שמירת shader במטמון במהלך החימום. כדי להחיל את התיקון הזה, צריך להשתמש במכשיר עם הרשאות רוט או ב-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)
תיקוני באגים
- שיפור הבטיחות של כל פקודות ה-Shell הפנימיות על ידי אימות כל הפלט והשגיאות. (I5984d, b/255402908, b/253094958)
- מציינים את המכשיר בפקודה של פרופיל ה-Baseline
adb pull, כדי שאפשר יהיה להעתיק את פקודת השליפה בקלות אם מחוברים כמה מכשירים (עד אמולטור אחד) (I6ac6c, b/223359380) - הוספת שגיאה אם קובץ ה-APK של בדיקת המקרו-בנצ'מרק לא מוגדר כקובץ שניתן להפעיל בו בדיקות באופן עצמאי. השגיאה הזו מונעת את ביצוע ההשוואה בין ביצועים של אפליקציות שונות מתוך התהליך של אפליקציית היעד. במהלך העיבוד, לא תהיה אפשרות להדר/להרוג/להפעיל מחדש את האפליקציה, או לשלוט בהרשאות שלה (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
-
BaselineProfileRuleלא דורש יותר הרשאת root ב-Android 13 (API 33), והוא כבר לא ניסיוני. (Ie0a7d, b/250083467, b/253094958)- השינוי הזה גם מתקן את האופן שבו פרופילים מאפליקציה נמחקים מהדיסק במכשירים שלא עברו רוט, אבל הוא מחייב עדכון של יחסי התלות של profileinstaller באפליקציית היעד.
- כדי להשתמש ב-
BaselineProfileRuleאו ב-CompilationMode.Partial(warmupIterations)במכשיר לא פרוץ, צריך גם לעדכן את אפליקציית היעד לשימוש ב-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כך שיוצג שנדרש API 31 במקום 29 בשבילFrameOverrun(I716dd, b/220702554) - מגדירים איטרציה ב-
BaselineProfileRule, ומבצעים throw בצורה ברורה אם חבילת היעד לא מותקנת (כבר בוצע עבור MacrobenchmarkRule). (Ic09a3, b/227991471)
גרסה 1.2.0-alpha04
21 בספטמבר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04 מופץ. גרסה 1.2.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
הוספנו תמיכה בארגומנט
dryRunMode.enableinstrumentation ל-macrobenchmark (כבר זמין ב-micro) כדי להאיץ את הפיתוח המקומי ולאמת את האוטומציה של האפליקציה (למשל, ב-presubmit). ההגדרה הזו מחליפה את מספר האיטרציות ב-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' } }
תיקוני באגים
- תוקנה בעיה שגרמה לכך שלא היה אפשר להפעיל פעילויות שנמדדות דרך
MacrobenchmarkScope.startActivityAndWait().StartupTimingMetricהמשמעות היא שהמדד יכול לזהות הפעלות מתוך התראות,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(), גם כשהמכשיר מושרש, למעט במהלך יצירת פרופיל ה-Baseline. אפשר לשנות את ההגדרה הזו באמצעות ארגומנט בוליאני אופציונלי. (02cce9, b/241214097)
תיקוני באגים
- תמיכה ביצירת פרופיל Baseline לאפליקציות מערכת. (I900b8, b/241214097)
- תמיכה בבדיקה של מדדי צריכת חשמל של ODPM במכשירים לא מושרשים. (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כדי לאפשר סינון של הרצות של מדדי ביצועים מאקרו רק למדדי ביצועים, או רק ליצירת פרופיל Baseline. מעבירים את המחרוזת Macrobenchmark או BaselineProfile כדי להריץ רק סוג אחד של בדיקה, למשל כשיוצרים רקBaselineProfilesבאמולטור. אפשר גם להשתמש ברשימה מופרדת בפסיקים. (I756b7, b/230371561)לדוגמה, בקובץ build.gradle של המאקרו-בנצ'מרק:
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)
תיקוני באגים
- תוקנה בעיה שבה שיטות הידור לא אותחלו מחדש בצורה נכונה בין כל בדיקת מאקרו בגרסאות לא מושרשות. לצערנו, כדי לעשות את זה צריך להתקין מחדש את קובץ ה-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
תמיכה ב-Jetpack Macrobenchmarks, שמאפשרת למדוד אינטראקציות של אפליקציות שלמות כמו הפעלה וגלילה, מספקת אפשרות ללכידת עקבות ולמדידת קטעים של עקבות.
תמיכה בפרופילים של Baseline
-
CompilationMode.Partialכדי למדוד את היעילות של פרופילים של Baseline. @BaselineProfileRuleכדי ליצור באופן אוטומטי פרופילי Baseline למסלול משתמש קריטי נתון.
-
תמיכה במדדי הקצאה ובתיעוד במהלך הפעלות של Microbenchmark.
גרסה 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)שיפור מהירות האיטרציה של מדד המאקרו על ידי אופטימיזציה של פקודות Shell שמשמשות מאחורי הקלעים. (aosp/2086023, b/231323582)
תמיכה במכשירים בניהול Gradle כשיוצרים פרופילים Baseline באמצעות Macrobenchmarks. (aosp/2062228, b/228926421)
גרסה 1.1.0-rc02
11 במאי 2022
androidx.benchmark:benchmark-*:1.1.0-rc02 מופץ. גרסה 1.1.0-rc02 מכילה את השמירות האלה.
- שימו לב שהגרסה הזו כוללת שינוי בהתנהגות, כי עכשיו האפליקציות מותקנות מחדש באופן מלא בין כל בדיקת ביצועים כדי להבטיח מדידות מדויקות.
תיקוני באגים/שינויים בהתנהגות
תוקנה בעיה שבה הידור האפליקציה לא אופס בצורה נכונה בין בדיקות ביצועים של מאקרו, ולא אופס בכלל בגרסאות שלא עברו Root. התיקון הזה פותר הרבה מקרים שבהם הפעלת כמה בדיקות לא משפיעה על המדידות, או משפיעה עליהן בצורה מועטה מאוד.
CompilationModeכדי לעקוף את הבעיה הזו, אפליקציית היעד מותקנת מחדש באופן מלא בכל שיטת בדיקה, וכך נתוני האפליקציה נמחקים בין כל בדיקת מאקרו. (I31c74, b/230665435)ההגדרה הזו מונעת מאפליקציות להגדיר מצב לפני בדיקות, ולכן עכשיו אפשר לדלג על קומפילציה או התקנה מחדש כדי לעקוף את הבעיה. לדוגמה, אפשר לקמפל את היעד באופן מלא באמצעות פקודת shell
cmd package compile -f -m speed <package>, ואז לדלג על שלב הקומפילציה של מדד הביצועים הכולל.לדוגמה, בקובץ build.gradle של המאקרו-בנצ'מרק:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }או משורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseהוספנו את הארגומנט
androidx.benchmark.enabledRulesשל כלי המדידה כדי לאפשר שיתוף של מודול בין בדיקות של השוואת ביצועים ברמת המאקרו לבין בדיקות ליצירת פרופיל Baseline. מעבירים את המחרוזת Macrobenchmark או BaselineProfile כדי להריץ רק סוג אחד של בדיקה, למשל כשיוצריםBaselineProfilesבאמולטור. (I756b7, b/230371561)לדוגמה, בקובץ build.gradle של המאקרו-בנצ'מרק:
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 כוללת את הקומיטים האלה.
תיקוני באגים
- קישורי הפלט של פרופיל Baseline ב-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 שניות של צינון), ומאיץ באופן משמעותי את בדיקות הביצועים בגרסאות למשתמשים. הוא גם מספק זיהוי של ויסות מהירות השעון, גם כשהשעונים נעולים (אם הם נעולים ברמה גבוהה מדי עבור הסביבה הפיזית של המכשיר). (I9c027, b/217497678, b/131755853)מסננים את פרופיל הדגימה של simpleperf כך שיוצגו רק נתונים של
measureRepeatedthread כדי לפשט את הבדיקה (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() // ... } ) }
תיקוני באגים
- תוקנה הבעיה שבגללה לא היה אפשר לעדכן את העקבות של פרופיל המיקרו-בנצ' בריצות הבאות כשהן מקושרות בפלט של Studio (I5ae4d, b/214917025)
- מניעת פקודות Shell של קומפילציה ב-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מודפסת עכשיו ב-logcat ובפלט של Studio עבור BaselineProfileRule כדי למשוך את קובץ הטקסט של BaselineProfile שנוצר. (f08811)
גרסה 1.1.0-beta01
12 בינואר 2022
androidx.benchmark:benchmark-*:1.1.0-beta01 מופץ. גרסה 1.1.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה המערכת התעלמה מהארגומנט enable של כלי הפרופיל. (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
- הוספנו System Tracing עם תקורה נמוכה לפלט של מיקרו-בנצ'מרק באנדרואיד Q (API 29 ומעלה). שימו לב שבשלב הזה לא מתבצעת לכידה של מעקב בהתאמה אישית (באמצעות ממשקי API של
android.os.Traceאוandroidx.tracingJetpack) כדי לא להשפיע על התוצאות. המעקב הזה יכול לעזור באבחון חוסר יציבות, במיוחד ממקורות מחוץ למדד ההשוואה. (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)
- תוקנו כמה קריסות במצב פרופיל StackSampling באמולטורים ובמכשירים ללא גישת 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שיכול ליצור פרופילי Baseline לחוויות משתמש קריטיות באפליקציה. בהמשך יפורסם תיעוד מפורט. (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
- הפעלת בדיקות השוואה של ביצועים (macrobenchmarks) בגלילה כדי להריץ את הנתונים בחזרה ל-API 23 (If39c2, b/183129298)
- הוספה של סוג חדש של מדד לדגימה לממשק המשתמש ולפלט JSON, עם התמקדות באחוזונים של כמה דגימות בכל איטרציה. (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כדי להקל על הפעלת MacroBenchmarks באפליקציות שמשתמשות בפרופילים של Baseline באמצעות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 לא ממתינה עד שהדוח מוצג במלואו). (If1141, b/179176560)
- הפחתת העלות של הוספת מטא-נתונים של ממשק משתמש ל-traces ביותר מ-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 מכילה את השמירות האלה.
תכונות חדשות
- נוסף
CompilationMode.BaselineProfileחדש לתמיכה בפרופילים שהותקנו באמצעות ספריית Jetpack ProfileInstaller. (aosp/1720930)
תיקוני באגים
קוד ה-Gradle לדוגמה לביטול שגיאות בהשוואה בין ביצועים עודכן כך שישתמש ב-API שלא הוצא משימוש, עם תחביר שתומך גם במשתמשי .gradle.kts.
למשל:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
גרסה 1.1.0-alpha02
18 במאי 2021
גרסה 1.1.0-alpha02 של כלי ההשוואה לשוק מביאה רכיב גדול להשוואה לשוק – Macrobenchmark. בנוסף לנקודת השוואה שמאפשרת למדוד לולאות של CPU, נקודת השוואה רחבה מאפשרת למדוד אינטראקציות של אפליקציה שלמה, כמו הפעלה וגלילה, ולתעד עקבות. מידע נוסף זמין במאמרי העזרה בנושא הספרייה.
androidx.benchmark:benchmark-*:1.1.0-alpha02 מופץ. גרסה 1.1.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
נוספו ארטיפקטים של Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 ו-androidx.benchmark:benchmark-macro)
- איסוף מדדי ביצועים של הפעלה, גלילה או אנימציה מהאפליקציה, באופן מקומי או ב-CI
- איך מצלמים עקבות ובודקים אותן מתוך Android Studio
תיקוני באגים
- פתרון לבעיה בהרשאות של Shell עם ספריית פלט ב-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
- מדד ההקצאה – ההשוואה לביצועים כוללת עכשיו שלב נוסף אחרי ההכנה והתזמון, שבו נרשמים נתוני ההקצאה. הקצאות יכולות לגרום לבעיות בביצועים בגרסאות ישנות יותר של הפלטפורמה (140 ננו-שניות ב-O הפכו ל-8 ננו-שניות ב-M – נמדד ב-Nexus5X, עם שעונים נעולים). המדד הזה מוצג בפלט של מסוף Android Studio, וגם ב
- תמיכה בפרופילים – עכשיו אפשר לתעד נתוני פרופילים להרצת השוואה, כדי לבדוק למה הקוד פועל לאט. Benchmark תומך בתיעוד של מעקב אחר שיטות או בדגימה של שיטות מ-ART. אפשר לבדוק את הקבצים האלה באמצעות כלי הפרופיל ב-Android Studio דרך File > Open (קובץ > פתיחה).
- פלאגין Benchmark Gradle מספק עכשיו הגדרות ברירת מחדל להגדרה פשוטה יותר:
testBuildTypeמוגדר כברירת מחדל לפרסום, כדי להימנע משימוש בתלויות עם כיסוי קוד מובנה. סוג ה-build של הגרסה מוגדר גם כסוג ה-build שמוגדר כברירת מחדל, וכך Android Studio יכול לבחור באופן אוטומטי את וריאציית ה-build הנכונה כשפותחים פרויקט בפעם הראשונה. (b/138808399)-
signingConfig.debugמשמש כהגדרת ברירת המחדל לחתימה (b/153583269)
** תיקוני באגים **
- הפחתנו באופן משמעותי את התקורה של מעבר החימום, שבו המדידה הראשונה לכל נקודת השוואה הייתה גבוהה באופן מלאכותי מאחרות. הבעיה הזו הייתה בולטת יותר בבדיקות השוואה קטנות מאוד (מיקרו-שנייה אחת או פחות). (b/142058671)
- תוקנה שגיאת
InstrumentationResultParserשהודפסה לכל בדיקת ביצועים כשמריצים אותה משורת הפקודה. (I64988, b/154248456)
בעיות מוכרות
- כשמריצים את Benchmark באמצעות שורת פקודה או gradle, התוצאות לא מודפסות ישירות. כדי לעקוף את הבעיה, אפשר להריץ את התהליך דרך Studio או לנתח את קובץ הפלט בפורמט JSON כדי לקבל את התוצאות.
- הדוחות של ההשוואה לשוק לא מצליחים לשלוף את הדוח ממכשירים שמותקנת בהם אפליקציה עם applicationId שמסתיים ב-android או ב-download (לא תלוי באותיות רישיות). משתמשים שנתקלים בבעיה הזו צריכים לשדרג את פלאגין Android Gradle לגרסה 4.2-alpha01 ואילך.
גרסה 1.0.0
גרסת Benchmark 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 Sample
- חימום ושימוש חוזר במערכת שמתבצעים בהתאם ל-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. - עכשיו המערכת מזהה בצורה נכונה את השימוש בארגומנט
additionalTestOutputDirinstrumentation לפלט ב-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 מושקות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
שינויים ב-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 מושקות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
בנוסף, הוספנו מסמכים חדשים שמסבירים איך להשתמש בספריית Benchmark בלי Gradle, גם לשימוש במערכות בנייה שונות (כמו Bazel או Buck) וגם כשמריצים ב-CI. מידע נוסף זמין במאמרים בנושא יצירת נקודות השוואה ללא Gradle והפעלת נקודות השוואה בשילוב רציף.
תכונות חדשות
- פלאגין 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מכיל את שאר הלוגיקה, כולל BenchmarkState API - הפיצול הזה יאפשר לספרייה לתמוך בהשוואת ביצועים ללא ממשקי JUnit4 API בעתיד
-
- אזהרות לגבי הגדרות אישיות מטופלות עכשיו כשגיאות, והן יגרמו לקריסת הבדיקה (b/137653596)
- השינוי הזה נועד לעודד מדידות מדויקות, במיוחד ב-CI
- אפשר להפוך את השגיאות האלה לאזהרות באמצעות ארגומנט של מכשור. לדוגמה:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
תיקוני באגים
- כשמתרחשות שגיאות בכתיבה לאחסון חיצוני במכשירי Q, מוצגות הודעות תיאוריות יותר עם הצעות לפתרון הבעיה
- המסכים מופעלים אוטומטית במהלך הפעלות של בדיקות השוואה, במקום שהבדיקות ייכשלו כשהמסך כבוי
תכנים שנוספו על ידי משתמשים חיצוניים
- תודה לסרגיי זכרוב על העזרה בשיפור פלט ה-JSON ועל התיקון של בעיות שקשורות לכיבוי המסך.
גרסה 1.0.0-alpha03
2 ביולי 2019
androidx.benchmark:benchmark:1.0.0-alpha03 וגם androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 מופצים. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- הצגת משך השינה בגלל הגבלת מהירות השעון עקב התחממות יתר לכל השוואה (benchmark) בדוח 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 מופצים. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
שימו לב שאנחנו מתייחסים לסכימת ה-JSON כאל API. אנחנו מתכננים לפעול בהתאם לאותם אילוצי יציבות כמו בממשקי API אחרים: יציבות (עם חריגים נדירים מאוד) אחרי שהגרסה תהיה בבטא, וקביעות בגרסה הסופית, עם תוספות רק בגרסאות משניות ושינויים או הסרות בגרסאות ראשיות.
שינויים ב-API
שיפוץ של סכימת ה-JSON. סביר להניח ששינויים נוספים בסכימת ה-JSON יוגבלו לתוספות:
- ארגנו מחדש את מבנה אובייקט התוצאה כדי לתמוך בעתיד בקבוצות נוספות של מדדים (b/132713021)
- נוסף מידע על ההקשר של הרצת הבדיקה, כמו מידע על המכשיר והגרסה, וגם אם השעונים נעולים, לאובייקט ברמה העליונה (b/132711920)
- השמות של מדדי הזמן כוללים עכשיו את התוספת ns (b/132714527)
- נוספו נתונים סטטיסטיים נוספים לכל מדד שדווח (מקסימום, חציון, מינימום), והוסר נתון הסיכום הפשוט 'ננו' (b/132713851)
הוסר פלט XML (b/132714414)
הוסר זיהוי של ויסות תרמי מ-
BenchmarkState.reportDataAPI (b/132887006)
תיקוני באגים
- תוקנה הבעיה שבה
./gradlew lockClocksלא נשאר פעיל בחלק מהמכשירים עם מערכת הפעלה עדכנית (b/133424037) - השבתה של זיהוי ויסות נתונים באמולטור (b/132880807)
גרסה 1.0.0-alpha01
7 במאי 2019
androidx.benchmark:benchmark:1.0.0-alpha01 מופץ. השמירות שכלולות בגרסה הזו זמינות כאן.