השוואה לשוק
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 7 באוקטובר 2026 | 1.5.0 | - | - | 1.6.0-alpha01 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Benchmark, צריך להוסיף לפרויקט את מאגר Maven של Google. מידע נוסף זמין במאמר מאגר ה-Maven של Google.
Macrobenchmark
כדי להשתמש ב-Macrobenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של מודול המקרו-בנצ'מרק:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
מיקרו-בנצ'מרק
כדי להשתמש ב-Microbenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של המודול של microbenchmark:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
ספריית Microbenchmark מספקת גם פלאגין של Gradle לשימוש עם מודול המיקרו-ביצועים.
הפלאגין הזה מגדיר את הגדרות ברירת המחדל של תצורת ה-build למודול, מגדיר העתקה של פלט של מדד ביצועים למארח ומספק את
המשימה ./gradlew lockClocks.
כדי להשתמש בפלאגין, מוסיפים את השורה הבאה לבלוק 'plugins' בקובץ build.gradle ברמה העליונה:
Groovy
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.5.0" apply false }
לאחר מכן מחילים את הפלאגין על הקובץ build.gradle של מודול ההשוואה לשוק
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 1.6
גרסה 1.6.0-alpha01
7 באוקטובר 2026
androidx.benchmark:benchmark-*:1.6.0-alpha01 מופץ. גרסה 1.6.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- במשימת הערכת הביצועים
:lockClocksנעשה עכשיו שימוש באופטימיזציית ביצועים קבועה כשהיא זמינה, במקום בהטמעה הקודמת של הרשאות בסיס בלבד. המשמעות היא שאפשר לנעול שעונים בהרבה יותר מכשירים פיזיים כדי לקבל תוצאות יציבות, במיוחד כשמדובר במיקרו-בנצ'מרקים יציבים. אם נתקלתם בבעיות שקשורות לוויסות התרמי בהתנהגות החדשה, דווחו עליהן. (I0d032)
שינויים ב-API
- הוספנו את
MemoryProfilingConfigל-ExperimentalConfigכדי לאפשר להרצות של macrobenchmark להצטרף לפרופיילינג של הזיכרון ב-Perfetto. (Ibc931)
תיקוני באגים
- תוקן באג ב-microbenchmark שבו לפעמים המערכת דילגה על תיעוד method כדי להימנע מ-ANR. (Ifc307)
- תיקון של לכידת פרופיל Baseline לתהליכים שלא משתמשים בתבנית שמות
:<suffix>. (I512ab) - קישורים למעקב של Profiler מדווחים עכשיו בקטע נפרד בשם Profiling Traces בסיכומים של IDE. (Id639f)
- תוקן באג בניקוי קבצים וירטואליים שגרם לשגיאה
Unable to flush profiles for <packagename>. (I48ccc) - תיקון הסנכרון בתיעודי method שמוטמעים בתיעוד המערכת. Ifd2e33 b/537688349
- פלאגין Baseline Profile Gradle – שיפרנו את
CollectBaselineProfileTaskכדי לתמוך בחיפוש קובציtest-result.pbבספריות משנה, וכך לאפשר תאימות לפלטפורמת הבדיקה המובנית החדשה. Id9c488 b/543799367
גירסה 1.5
גרסה 1.5.0
9 בספטמבר 2026
androidx.benchmark:benchmark-*:1.5.0 מופץ. גרסה 1.5.0 מכילה את השמירות האלה.
גרסה 1.5.0-rc02
26 באוגוסט 2026
androidx.benchmark:benchmark-*:1.5.0-rc02 מופץ. גרסה 1.5.0-rc02 מכילה את ה-commits האלה.
גרסה 1.5.0-rc01
12 באוגוסט 2026
androidx.benchmark:benchmark-*:1.5.0-rc01 מופץ. גרסה 1.5.0-rc01 מכילה את השמירות האלה.
גרסה 1.5.0-beta01
29 ביולי 2026
androidx.benchmark:benchmark-*:1.5.0-beta01 מופץ. גרסה 1.5.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- עכשיו
PerfettoCaptureו-PerfettoTraceRuleיכולים לתעד מעקבים בתהליך ולמזג אותם לחבילת יעד. (I9a00b, b/497959820)
גרסה 1.5.0-alpha07
1 ביולי 2026
androidx.benchmark:benchmark-*:1.5.0-alpha07 מופץ. גרסה 1.5.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
- לכידת נתוני מעקב ב-Perfetto במכשיר בצורה פשוטה יותר. (I48810)
- העברת ממשקי ה-API הניסיוניים של התוסף
TraceProcessor.runServerמ-androidx.benchmark:benchmark-macroאלandroidx.benchmark:benchmark-common, ואל החבילהandroidx.benchmark. כך יהיה אפשר להשתמש בהם בעתיד בבדיקות מיקרו. (Ie25bb, b/393640753)
תיקוני באגים
- עדכון ההטמעה של traceprocessor (וגם של Perfetto Trace capture לא מקובץ) לשימוש ב-Perfetto גרסה 56.0 (I8fb9d)
- כברירת מחדל, הערכים של
androidx.benchmark.requireAotו-androidx.benchmark.requireAotהם true. הגדרות ברירת המחדל הבטוחות יותר האלה מבטיחות שההידור יתבצע לפני הפעלת מיקרו-בנצ'מרקים (מופעל כברירת מחדל באמצעות תוסף הבנצ'מרק של Gradle כשמשתמשים ב-AGP מגרסה 8.4 ואילך), ושהפונקציהmeasureRepeatedלא תופעל בשרשור הראשי, שבו היא עלולה לגרום ל-ANR. (I1bc3c, b/379115078) - הארכנו את הזמן הקצוב לתפוגה של הפקודה kill ב-Perfetto מ-5 ל-30 שניות (רק עבור סשנים של Perfetto שנלכדו בבדיקת ביצועים). הוספנו רישום ברור יותר של שגיאות ביומן כשהבעיה מתרחשת. (If188f, b/435589290)
גרסה 1.5.0-alpha06
6 במאי 2026
androidx.benchmark:benchmark-*:1.5.0-alpha06 מופץ. גרסה 1.5.0-alpha06 מכילה את ה-commits האלה.
תיקוני באגים
- הטיפול בסביבות מרובות משתמשים צריך להיות חלק, כשמעבירים קבצים מספריית הפלט של ההשוואה לספריית הפלט הנוספת של הבדיקה. (I90da5, b/489358149)
גרסה 1.5.0-alpha05
25 במרץ 2026
androidx.benchmark:benchmark-*:1.5.0-alpha05 מופץ. גרסה 1.5.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- עדכנו את
ArtMetricכדי להביא בחשבון חבילות ברמה העליונה, וזה חשוב במיוחד כשמשתמשים ב-AGP/R8 9.1 ואילך, או באפשרות הגלובלית-repackageclasses. בעבר,ArtMetricלא הצליח לזהות את טעינות הכיתות האלה במדידות שלartClassLoad.... (If8a35, b/487402058)
תכונות חדשות
- הוספנו ארגומנט חדש למדידה, androidx.benchmark.requireLockedClocks, שמאפשר להפעיל בדיקה כדי לראות אם השעונים של המעבד (CPU) נעולים במכשירים עם הרשאות בסיס. (Id82e8, b/468039042)
גרסה 1.5.0-alpha04
11 במרץ 2026
androidx.benchmark:benchmark-*:1.5.0-alpha04 מופץ. גרסה 1.5.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו את
JvmOverloadsל-PowerMetric.Energyול-PowerMetric.Power(Iac0d0, b/481371562).
תיקוני באגים
- עדכנו את
ArtMetricכדי להביא בחשבון חבילות ברמה העליונה, וזה חשוב במיוחד כשמשתמשים ב-AGP/R8 9.1 ואילך, או באפשרות הגלובלית-repackageclasses. בעבר,ArtMetricלא זיהה את טעינות הכיתות האלה במדידות שלartClassLoad.... (I207ca, b/487402058)
גרסה 1.5.0-alpha03
11 בפברואר 2026
androidx.benchmark:benchmark-*:1.5.0-alpha03 מופץ. גרסה 1.5.0-alpha03 מכילה את השמירות האלה.
- העדכון כולל תלות ב-UiAutomator 2.4 בטא.
גרסה 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 ל-wait for new window. (I35da6, b/440021797) - ייצוב ממשקי ה-API של
BlackHoleב-androidx.benchmark. (I2b67e, b/451749438) - הוספת
@JvmOverloadsל-convenience constructors שלPerfettoTraceRule. (I1510a, b/443763207)
גרסה 1.4
גרסה 1.4.1
10 בספטמבר 2025
androidx.benchmark:benchmark-*:1.4.1 מופץ. גרסה 1.4.1 מכילה את השמירות האלה.
תיקוני באגים
- התיקון של
perfettoSdkTracing=true(לדוגמה, כשעוקבים אחרי Compose במיקרו-בנצ'מרק) יגרום להפסקת תהליך היעד אם הוא כבר פועל, ולא צוין StartupMode. (Ib2c1f)
גרסה 1.4.0
30 ביולי 2025
androidx.benchmark:benchmark-*:1.4.0 מופץ. גרסה 1.4.0 מכילה את ה-commits האלה.
שינויים חשובים מאז גרסה 1.3.0
מיקרו-בנצ'מרק
- העברנו את משימות Gradle
lockClocksו-unlockClocksלפרויקטים של השוואה לשוק, במקום לרמה העליונה, כדי לכבד את הבידוד של פרויקט Gradle. - בוצע refactoring של
BenchmarkRuleכדי לבנות אותו על גבי קורוטינות, ולתמוך בהתנהגות טובה יותר שלyield(). הפעולה הזו אמורה להפחית באופן משמעותי את הסיכון למקרי ANR במהלך הפעלות של בדיקות השוואה, במיוחד הפעלות ארוכות של CI. הערה: צריך להריץ את בדיקות הביצועים של ממשק המשתמש עםmeasureRepeatedOnMainThread
Macrobenchmark
- הוספנו פתרון עקיף ב-API 34+ לבעיה שבה הביצועים של
CompilationMode.None()לא היו עקביים כי ART מאמת עכשיו אפליקציות שעברו הידור חלקי אחרי ההפעלה הראשונה. - תכונה ניסיונית – התובנות לגבי ההפעלה יכולות להדגיש בעיות נפוצות מסוימות ב-Macrobenchmark של הפעלה על ידי העברת
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
- נוסף וריאנט של constructor
PerfettoTraceRuleשמקבלPerfettoConfig(Ie53ba)
תיקוני באגים
- עדכנו את פורמט הקישור לתובנות לגבי הפעלת
TraceProcessorכדי להשתמש בפלאגין הנכון ובתוחם ברור יותר (:קצר יותר מ-%3A, ושניהם נתמכים) (Ie18ef) - תמיד צריך להשתמש בסגירה ידנית כדי להפסיק תהליכים, גם כשהמכשיר עבר רוט וסוגרים אפליקציות מערכת. מתקן חריגים מהטופס:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
תרומה חיצונית
- נוסף handler לחריגות בשרת proxy עבור
TraceProcessorHttpServer(I480f5)
גרסה 1.4.0-alpha11
9 באפריל 2025
androidx.benchmark:benchmark-*:1.4.0-alpha11 מופץ. גרסה 1.4.0-alpha11 מכילה את השמירות האלה.
שינויים ב-API
- הארגומנט timeout של
TraceProcessorהשתנה: משך הזמן עד ל-timeoutMs ארוך יותר כדי לשפר את נוחות השימוש של מתקשרים ב-Java. (I9fbb5) - סימון ה-constructor של
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)
תיקוני באגים
- תוקנה בעיה שבה תיעוד של Benchmark ופרופיל Baseline לא פעל עם API 36 בגלל שינוי ב-
pgreptoybox, שעכשיו דורש-aכדי להדפיס את שורת הפקודה המלאה. (Idc991) - סינון הגדרת ברירת המחדל של המעקב כדי להפחית את הסיכון לאובדן נתונים במעקבים ברמות API חדשות יותר. (I54e8a)
- הוספנו ארגומנט ניסיוני של אינסטרומנטציה,
androidx.benchmark.killExistingPerfettoRecordings, שאפשר להגדיר לו את הערךfalseכדי לאפשר המשך של לכידת עקבות קיימת ב-Perfetto. כדי למנוע הפרעות, כברירת מחדל, לכידות קיימות של עקבות Perfetto במכשיר מופסקות. (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 מכילה את ה-commits האלה.
שינויים ב-API
- העברנו את ממשקי ה-API של התוספים
TraceProcessor.runSession()למצב ניסיוני, כי סביר להניח שבסופו של דבר הם יהפכו לקונסטרוקטורים קונקרטיים ב-Android. (Ib0528, b/393640753) - רוב ההטמעה של Startup Insights היא עכשיו ציבורית או ניסיונית, והיא עוברת אל
TraceProcessorארטיפקט. ראוStartupInsights. (I0aa00) - הוצאה משימוש של
BenchmarkRule.runWithTimingDisabled {}לטובתBenchmarkRule.runWithMeasurementDisabled {}, שמתאר בצורה ברורה יותר את ההתנהגות – כל המדדים מושהים. בנוסף, צריך לחשוף את המחלקה הראשיתMicrobenchmarkScopeכי אי אפשר להצהיר מחדש על הפונקציהrunWithMeasurementDisabledכדי לפתוח את הגישה, כי היא מוטמעת. (I9e23b, b/389149423, b/149979716) - ספריות Benchmark עברו ל-Kotlin 2.0. (I9d1e0)
- הוסר ארגומנט אינסטרומנטציה אחד (
androidx.benchmark.startupProfiles.enable). היא כבר לא שימושית, כי אפשר לשלוט בה באמצעות הארגומנטincludeInStartupProfileב-BaselineProfileRule.collect(). (I39eb4)
תיקוני באגים
- צמצום מספר הפונקציות הפנימיות של Microbenchmark שנקראות במהלך יצירת הפרופיל, כדי להפוך את תיעודי ה-method לברורים יותר (Ifaed8)
- תיקון משוער לקריסות: "הניסיון לעצור את [
ProcessPid(processName=perfetto, pid=...)] נכשל". עכשיו, אם לא ניתן לעצור תהליך Perfetto ברקע לפני הפעלת נקודת ההשוואה, המערכת תתעד הודעה במקום לקרוס. (I37d3e, b/323601788) - תיקנו את
IllegalStateExceptionsעם התווית 'Expectedpm dump-profilesstdout' שנגרמו בגלל בדיקה מחמירה מדי של פורמט הפלט. (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ל-constructor שלMicrobenchmarkConfig. (I13fd3) - בוצע refactoring של
BenchmarkRuleכדי לבנות אותו על גבי קורוטינות, ולתמוך בהתנהגות טובה יותר שלyield(). הארגון מחדש של הקוד הסיר כמה ממשקי API ניסיוניים שלBenchmarkState, אבל בהמשך יתווספו תחליפים לפי הצורך. בנוסף, הוספנו אתrunWithMeasurementDisabledכדי להבהיר את ההתנהגות (כל המדידות מושהות). בעתיד, המדיניותrunWithTimingDisabledתצא משימוש. (I19837, b/389149423, b/311242861) - העברת
PerfettoTraceProcessorאלTraceProcessorבארטיפקטandroidx.benchmark:benchmark-traceprocessorחדש, והפיכת רוב ה-API שלו ללא ניסיוני. כלTraceMetricבהתאמה אישית או כל דבר שקורא מעקבות יצטרכו להתעדכן לייבוא החדש שלTraceProcessor. ה-API החדש שלTraceProcessorפועל בדיוק כמו ה-API הישן, אבל הוא ספריית ממשק עצמאית (דומה קצת לשכבתandroidx.sqliteמ-Room) עם הטמעה ספציפית ל-Android שמובנית ב-macrobenchmark. אפשר להשתמש בקובץ החדש גם ב-JVM, אבל כרגע צריך להפעיל עותק משלכם של הקובץ הבינאריTraceProcessorולהציע יציאה להתחברות אליו. (I3a767, I62563, b/381134564)
תיקוני באגים
- הצגת הודעת שגיאה ברורה יותר כש-
MacrobenchmarkScope.startActivityAndWaitלא מצליח להפעיל את תהליך היעד (יכול להיות שזה בגלל קריסה בתהליך היעד), במקום ההודעה המעורפלת יותר 'לא ניתן לאשר את השלמת הפעלת הפעילות' (I3539b) - תוקנו כמה שגיאות תחביר בדוגמאות של 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)
תיקוני באגים
- הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify nullness, שהן מסוג type-use. מפתחי Kotlin צריכים להשתמש בארגומנט המהדר הבא כדי לאכוף שימוש נכון:
-Xjspecify-annotations=strict(זו ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin). (I46810, b/326456246) - תוקן
ArtMetricכדי לדווח על טעינת מחלקה (לא על הפעלה), והמסמכים שופרו כדי להבהיר את התנהגות זמן הריצה. (I9915c) - ב-Android Multiuser, מריצים פקודות כרוט רק במכשירים עם הרשאות בסיס. (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 מכילה את ה-commits האלה.
תכונות חדשות
- (ניסיוני) הפעלת יצירת פרופיל Baseline והשוואה בין אפליקציות שמותקנות אצל משתמש משני, למשל כל אפליקציה במכשירי Android Auto ללא ממשק משתמש. התמיכה הזו נבדקה בכמה תרחישים, אבל אם היא לא עובדת בשבילכם, אתם יכולים לדווח על באג. (I9fcbe, b/356684617, b/373641155)
תיקוני באגים
- הערך של
isProfileableתמיד מוחלף בגרסאות של השוואה לביצועים, והערך שלisDebuggableתמיד מוחלף גם בגרסאות של השוואה לביצועים וגם בגרסאות שלnonMinified(לכידת פרופיל בסיסי). (I487fa, b/369213505) - תוקן זיהוי של קומפילציה בחלק מהמכשירים הפיזיים לפני API 28 – משפיע על json
context.compilationMode, וגם על ההתנהגות שלandroidx.benchmark.requireAot=true(שכבר לא מופעל באופן שגוי) (Ic3e08, b/374362482) - במדדים של
CpuEventCounter, המערכת תזרוק שגיאה אם יתקבלו מדידות לא חוקיות (למשל, instructions/cpucycles==0) (I8c503)
גרסה 1.4.0-alpha03
16 באוקטובר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha03 מופץ. גרסה 1.4.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- Macrobenchmark: נוסף
ArtMetric, שאפשר להשתמש בו כדי לבדוק את הכיסוי של הפרופיל או את הביצועים הכלליים של Android RunTime. מתעד את המספר ואת משך הזמן הכולל של JIT, אתחול הכיתה (אם זמין) ואימות הכיתה. בנוסף, בוצעו שינוייםCaptureInfoכדי לכלול גרסה אופציונלית של ART mainline עם ברירת מחדל. (I930f7) - מוסיפים
coefficientOfVariationלפלט JSON של ההשוואה לשוק כדי להציג את היציבות במהלך הפעלת השוואה לשוק. (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)
- הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify nullness, שהן מסוג type-use. מפתחים ב-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: תוקנה בעיה שבה Firebase Test Lab (FTL) לא הצליח לשלוף קובצי תוצאות של פרופיל Baseline או Macrobenchmark מהפלאגין Baseline Profile Gradle. (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כדי להסתיר את כל האזהרות של פרופיל Baseline. (314153a) - מדדי מיקרו-בנצ'מרק מוצגים עכשיו ב-Perfetto traces כדלפקים. (3214854)
- הוספנו סקריפטים ניסיוניים להשבתת JIT (נדרשת הפעלה מחדש של הרמה הבסיסית (root) או של זמן הריצה) ולאיפוס מצב הביצועים או הבדיקה של המכשיר. הן לא מתפרסמות כרגע כמשימות Gradle. (7c3732b)
- נוסף ארגומנט של השוואה לביצועים כדי לדלג על בדיקות כשמריצים באמולטור. כשה-build של
automaticGenerationDuringמופעל, נקודות ההשוואה יפעילו גם יצירה של פרופיל 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שיוצר ערכים פגומים לאירועים שאינם Instruction. (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 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה Firebase Test Lab (FTL) לא הצליח לשלוף קובצי תוצאות של פרופיל Baseline או Macrobenchmark מהפלאגין Baseline Profile Gradle. (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…הקיימים אם הם נוצרו על ידי האפליקציה, במקום ליצור wrappers. (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 מכילה את ה-commits האלה.
שינויים ב-Microbenchmark מאז גרסה 1.2.0
- מעקב אחר שיטות מופעל כברירת מחדל בבדיקות ביצועים של מיקרו-בנצ'מרק כשמריצים אותן ברוב המכשירים
- תיעוד method פועל כשלב נפרד, אחרי המדידות – כך אפשר להפיק מדידות מדויקות ותיעוד method מהרצה אחת של נקודת השוואה
- תיעוד method בחלק מהגרסאות של Android OS ו-ART ישפיע על שלבי המדידה הבאים – בגרסאות האלה, תיעוד method מושבת כברירת מחדל ואזהרה מודפסת בפלט של Studio
- מדדי ביצועים של ה-thread הראשי ו-ANR
- הוספנו את
measureRepeatedOnMainThreadלבדיקות ביצועים של שרשור UI (למשל, כאלה שמקיימים אינטראקציה עם ממשקי משתמש של Compose/View) כדי למנוע שגיאות ANR כשמריצים אותן במשך שניות רבות. - המערכת מדלגת על תיעודי method אם היא צופה שהם יחרגו מהמועד האחרון למניעת ANR. כדי להשבית את ההתנהגות הזו, צריך להגדיר את
androidx.benchmark.profiling.skipWhenDurationRisksAnrכ-false (לא מומלץ להשתמש בהגדרה הזו בהרצות של CI, כי מקרי ANR עלולים לגרום לבעיות בהרצות ארוכות של CI).
- הוספנו את
- הקטנה
- כללי proguard מוטמעים כדי לשפר את המיקרו-בנצ'מרקינג כשהפונקציה minification מופעלת
- כדי להפעיל את Minification/R8 במודול של ספרייה, צריך להשתמש ב-AGP 8.3 ולהפעיל את
android.buildTypes.release.androidTest.enableMinificationבקובץbuild.gradle - נוסף API ניסיוני
BlackHole.consume()כדי למנוע הסרה של קוד לא פעיל (If6812, b/286091643)
- מדדים
- תכונה ניסיונית של מונה אירועי מעבד (מדדים מ-
perf_event_open, שדורשים הרשאות בסיס ברוב הגרסאות של הפלטפורמה), גישה דרךInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(אפשר להגדיר ל-true), ואפשר להגדיר אתandroidx.benchmark.cpuEventCounter.eventsלמשל ל-(Instructions,CpuCycles). אמורה להיות תמיכה בזה בחלק מהאמולטורים של userdebug, אבל התמיכה לא נבדקה בכל האמולטורים הזמינים
- תכונה ניסיונית של מונה אירועי מעבד (מדדים מ-
שינויים ב-MACRObenchmark מאז גרסה 1.2.0
- שיפוץ של מעקב אחר שיטות לבדיקות ביצועים של מאקרו.
- עכשיו תיעודי ה-method מוגבלים למשך הזמן של
measureBlock, ויכולים לתעד כמה סשנים אם התהליך מתחיל כמה פעמים. - בעבר, מעקב אחר שיטות פעל רק עבור נקודות השוואה של
StartupMode.COLD, ולא תיעד דבר עבורmeasureBlocksשלא הפעילו מחדש את תהליך היעד - תיקנו את הבעיה של ניקוי תיעוד method במקרו-בנצ'מרק, כך שתיעוד method אמורים להילכד במלואם ולתוקף, גם במכשירים איטיים יותר. (I6349a, b/329904950)
- עכשיו תיעודי ה-method מוגבלים למשך הזמן של
- השלכה נכונה של פרופיל ART במהלך איטרציות
warmUpנפרדות כשהתהליך נפסק, כדי שמדידותCompilationMode.Partial(warmup=N)יהיו מדויקות יותר. (I17923) - הודעת שגיאה על שידור Shader שנכשל
- הוספנו הצעות לניפוי באגים כדי להפסיק את הודעת השגיאה בשידור של הצללה (shader)
- כדי לעקוף קריסות כשמבצעים השוואת ביצועים של אפליקציות בלי
ProfileInstaller1.3, מוסיפים שני ארגומנטים של אינסטרומנטציה כדי לשנות את ההתנהגות של השמטת ה-shader:-
androidx.benchmark.dropShaders.enable=true/false: אפשר להשתמש באפשרות הזו כדי לדלג על כל ההסרה של Shader (כולל זו שמתבצעת בהפעלות שלStartupMode.Cold), במיוחד כשמבצעים השוואה בין אפליקציות שעדיין לא משתמשות ב-profileinstaller 1.3 -
androidx.benchmark.dropShaders.throwOnFailure=true/false: אפשר להשתמש בו כדי לסבול כשלים בניסיון להסיר shaders, למשל כשמבצעים השוואה בין אפליקציות בלי profileinstaller 1.3 (I4f573)
-
- נוספה גרסה ניסיונית של
MacrobenchmarkRule#measureRepeatedשמקבלתPerfettoConfigבהתאמה אישית להקלטת מעקב Perfetto בהתאמה אישית מלאה. חשוב לשים לב שהגדרות שגויות עלולות לגרום לכשלים במחלקות המדדים המובנות. (Idfd3d, b/309841164, b/304038384) - כדי להפחית את ההפרעות, בטלו את משימות ה-dexopt ברקע לפני הפעלת Macrobenchmark. (I989ed)
- עכשיו Macrobenchmark ממתין שנייה אחת עד שהאפליקציה המטורגטת תמחק פרופיל ART (בעבר הוא המתין 500 אלפיות השנייה). (I85a50, b/316082056)
- שיפוץ של TraceSectionMetric
- הערה: שינויים ב-
TraceSectionMetricשמופיעים בהמשך יכולים להשפיע על הפלט בשימוש ב-CI, ועלולים ליצור אי-רציפות או לשבור את הניתוח - הסכום הוא עכשיו ברירת המחדל, כי רוב השימוש במדד הזה הוא לאירועים חוזרים, והערך הראשון יבטל את הנתונים במקרים האלה
- השינוי מאפשר יותר התאמה אישית, עם יותר מצבים זמינים
- שמות המצבים מוטמעים עכשיו בשם הפלט של המדד (ב-Studio וב-JSON)
- עכשיו יש תמיכה בפרוסות שנוצרו באמצעות
Trace.{begin|end}AsyncSection.
- הערה: שינויים ב-
- מדדים
- Power - Added
PowerMetric.deviceSupportsHighPrecisionTracking,PowerMetric.deviceBatteryHasMinimumCharge()andPowerMetric.deviceSupportsPowerEnergy() - השם של
Metric.getResultשונה ל-getMeasurementsכדי להתאים לסוג ההחזרה - הוספנו תוויות log.w / חריגות לכל הכשלים בזיהוי ההפעלה. ההתנהגות הנוכחית לא משתנה (כך שחלק מהשגיאות נזרקות, ואחרות נכשלות בשקט בזיהוי ההפעלה), אלא רק הופכת אותה למובנת יותר. בדרך כלל, האפליקציות ש
Log.w()ולא מדווחות על מדדי הפעלה הן אלה שחסרים בהן אירועים שאינם פריימים, או שמופיעות בהן חריגות כשההפעלה מזוהה, מלבד מידע על זמן רינדור פריים (מפרוסות UI/RT). (Id240f, b/329145809) - הוספנו את המדד
frameCountל-FrameTimingMetricכדי לעזור לזהות תרחישים שבהם המדידות משתנות כי מספר הפריימים שנוצרו השתנה (נוספו אנימציות חדשות, תוקנו בעיות של ביטול תוקף). (I1e5aa) - הוספנו הבהרה שלפיה
frameOverrunMsהוא המדד המועדף למעקב כשהוא זמין במסמכים, והסבר למה. (I18749, b/329478323) - תוקנה בעיה שבה פריימים לא סגורים בתחילת המעקב ובסופו יכלו להתחבר יחד, וכתוצאה מכך דווחו באופן שגוי כפריים אחד ארוך במיוחד. (I39353, b/322232828)
- שיפור השגיאה
FrameTimingMetricכשלא נוצרים פריימים, ותמיד מוציא קישור למעקב כשניתוח המדדים נכשל כדי לעזור באבחון הבעיה. (I956b9) - תוקנה קריסה ב-
FrameTimingMetricשבה לא בוצע ניתוח של מזהה המסגרת, במיוחד במכשירי OEM מסוימים. (Ia24bc, b/303823815, b/306235276) - הפחתנו את רמת ההקפדה של הבדיקות ב-
FrameMetricsוהוספנו פרטים נוספים להודעות השגיאה. (Iadede)
- Power - Added
שינויים בפלאגין Baseline Profile Gradle מאז גרסה 1.2.0
- הגרסה המקסימלית המומלצת של AGP עלתה ל-9.0.0-alpha01.
- מוודאים שהמשימות
mergeArtProfileו-mergeStartupProfileתמיד יחכו ליצירת פרופיל ה-Baseline. (I623d6, b/343086054) - יצירה מוצלחת של פרופיל Baseline תפיק סיכום של השינויים (I824c8, b/269484510)
- נוסף DSL להשבתת אזהרות (Ic4deb, b/331237001)
- תיקון כדי לוודא שבבדיקות הביצועים נעשה שימוש בפרופילי Baseline שנוצרו כשהאפשרות
automaticGenerationDuringBuildמושבתת (Ic144f, b/333024280) - תוקן באג שקשור לביטול מאפיינים של פלאגין Gradle
BaselineProfileכדי לאפשר יצירה של פרופיל Baseline והשוואה בין פרופילים כשמבצעים התאמה אישית של סוג buildnonMinifiedאו של השוואה בין פרופילים. (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 כברירת מחדל במדדים להשוואה. כך מתועדות, למשל, נקודות מעקב של wakelock. (Icfe44, b/286551983)
- הארכנו את זמן הקצוב לתפוגה של התחלת תיעוד המעקב כדי למנוע קריסות כשמתחילים מעקב במכשירים איטיים יותר (I98841, b/329145808)
- הוספנו ממשקי API ציבוריים של
PerfettoTraceProcessor.Session.queryMetricsעם וריאציות של JSON, textproto ו-proto binary (לא מפוענח). הפרמטרים האלה מאפשרים לכם לשלוח שאילתות לגבי מדדים שמוטמעים ב-TraceProcessor(I54d7f, b/304038382) - כדי לצמצם את הסיכון לנתונים חסרים בתחילת המעקב, מומלץ להפעיל חסימה של התחלת ההקלטה ב-Perfetto. התכונה נתמכת רק ב-API 33 ואילך. (Ie6e41, b/310760059)
- פלט מסוג JSON
- הוספנו מידע נוסף בהקשר של השוואה לשוק בפלט JSON:
-
context.artMainlineVersion– גרסה של מודול Art mainline (אם קיים במכשיר, אחרת-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, תיעוד method) (I05ddd, b/332604449) - הוספנו אזהרה כשמשתמשים בתזמור בדיקות ל-Android במודולים של השוואה לשוק, כי זה יגרום לכתיבה חוזרת על קובצי פלט בפורמט JSON לכל מודול. (Ia1af6, b/286899049)
- הפונקציה תזרוק שגיאה אם שמות הקבצים ארוכים מ-200 תווים, כדי למנוע קריסות לא ברורות בזמן כתיבה או עיבוד שלאחר הכתיבה של קבצים. (I4a5ab)
- הוספנו מידע נוסף בהקשר של השוואה לשוק בפלט 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) - העברנו את ההמרה של דגימת המחסנית מה-thread הראשי, כדי להפחית את הסיכוי שדגימת המחסנית תגרום ל-
measureRepeatedOnMainThreadבגלל חריגה מהזמן הקצוב לתפוגה של ה-thread הראשי. (I487a8, b/342237318) - הוסר המתווה הידני של הגישה לממשקי API חדשים של הפלטפורמה, כי זה קורה באופן אוטומטי באמצעות בניית מודלים של API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל, R8 בגרסה 3.3) ובכל ה-builds כשמשתמשים ב-AGP 8.1 ואילך (למשל, D8 בגרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה 8.1 של D8 או לגרסה מאוחרת יותר. למידע נוסף, מומלץ לעיין במאמר הזה. (I9496c, b/345472586)
- נוספה בדיקת גרסת AGP כדי לשלוח את שם החבילה כארגומנט של מכשור. בגרסאות קודמות ל-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)
- הוספנו מידע נוסף בהקשר של השוואה לשוק בפלט JSON:
-
context.artMainlineVersion– גרסת מספר של מודול Art mainline (אם הוא קיים במכשיר, אחרת -1) -
context.build.id– שווה ל-android.os.Build.ID -
context.build.version.codename– שווה ל-android.os.Build.VERSION.CODENAME -
context.build.version.abbreviatedCodename– תואם לאות הראשונה של שם הקוד של גרסת טרום-ההשקה (גם בגרסאות build להפצה) (Ie5020)
-
- בוצעו תיקונים ב-
StackSamplingכדי להתאים ל-androidx.benchmark.profiling.sampleDurationSeconds(Ib1d53) - משנים את התלות macro->common ל-
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 מכילה את השמירות האלה.
תיקוני באגים
- הוספת חריגה ברורה יותר כשמדד macrobench מחזיר ערכי אפס לכל האיטרציות (Iab58f, b/314931695)
- נוספו כללים נוספים למעקף לכללי ProGuard של microbench, כולל תמיכה בכללי מאזינים ואזהרות או שגיאות אחרות שנצפו. (I14d8f, b/329126308, b/339085669)
- תיעוד method פועל כשלב נפרד במהלך Macrobenchmark, והוא כבר לא משפיע על המדידות. (If9a50, b/285912360, b/336588271)
- הוספנו הצעות נוספות לניפוי באגים כדי להסיר את הודעת השגיאה בשידור של ה-shader. (I5efa6, b/325502725)
גרסה 1.3.0-alpha04
1 במאי 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04 מופץ. גרסה 1.3.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- נוסף וריאנט ניסיוני
MacrobenchmarkRule#measureRepeatedשמשתמש ב-PerfettoConfigבהתאמה אישית כדי להקליט את הנתונים ב-Perfetto בצורה מותאמת אישית. חשוב לשים לב שהגדרות שגויות עלולות לגרום לכשלים במחלקות המובנות של המדדים. (Idfd3d, b/309841164, b/304038384) - שינוי השם של
PowerMetric.deviceSupportsPowerEnergyל-PowerMetric.deviceSupportsHighPrecisionTrackingלשם הבהרה (I5b82f) - הוספנו את ההגדרות
PowerMetric.deviceBatteryHasMinimumCharge()ו-PowerMetric.deviceSupportsPowerEnergy()כדי לאפשר שינוי של מדדי השוואה או דילוג עליהם בהתאם ליכולת המדידה של צריכת החשמל במכשיר. (I6a591, b/322121218)
תיקוני באגים
- נוספה השוואה לפרופיל Baseline הקודם (I824c8, b/269484510)
- נוסף DSL להשבתת אזהרות (Ic4deb, b/331237001)
- החריגה שונתה ליומן מידע כשגרסאות ההשוואה מושבתות (I8a517, b/332772491)
- השינוי הזה מפשט את תהליך איסוף תיעוד method עבור Macrobenchmark, כי הוא מאפשר להגדיר את משך הזמן של ספריית Macrobenchmark בהתאם למשך הזמן של
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עם וריאציות של JSON, textproto ו-proto binary (לא מפוענח). הם מאפשרים לכם לשלוח שאילתות לגבי מדדים שמוטמעים ב-TraceProcessor (I54d7f, b/304038382) - הוספנו את
profilerOutputלפלט ה-JSON כדי להקל על השימוש בכלים שקשורים למעקב אחרי פרופילים (למשל, perfetto, תיעודי method). (I05ddd, b/332604449) - נוסף תג צריכת חשמל להגדרת Perfetto להערכת ביצועים. לדוגמה, אפשר לראות את נקודות המעקב של נעילת המסך (wakelock). (Icfe44, b/286551983)
- נוסף הארגומנט inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr, שאפשר להגדיר כ-false כדי להימנע מדילוג על תיעודי method כשהמשך הצפוי עלול לגרום ל-ANR – מומלץ מאוד להימנע מכך בהרצות CI. - נוסף ארגומנט ניסיוני של אינסטרומנטציה
androidx.benchmark.profiling.perfCompare.enable. צריך להגדיר אותו כ-true כדי להריץ השוואה של התזמון בין שלבי המדידה והפרופיילינג. האפשרות הזו שימושית, למשל, להערכת התקורה של מעקב אחר שיטות. thought (I61fb4, b/329146942)
שינויים ב-API
- שינינו את
TraceSectionMetric.Modeלמחלקה אטומה כדי לאפשר הרחבה עתידית בלי לשבור הצהרות when ממצות (I71f7b) - הוספתי את
TraceSectionMetric.Mode.Averageו-.Countושיניתי את סדר הארגומנטים כך שהארגומנט הנפוץ יותר (מצב) יופיע מוקדם יותר ברשימת הארגומנטים, כדי שלא יהיה צורך לציין את שמות הפרמטרים. (Ibf0b0, b/315830077, b/322167531) - השם של
Metric.getResultשונה ל-getMeasurementsכדי להתאים לסוג ההחזרה (I42595)
תיקוני באגים
- תיקון כדי לוודא שבבדיקות הביצועים נעשה שימוש בפרופילי Baseline שנוצרו כשהאפשרות
automaticGenerationDuringBuildמושבתת (Ic144f, b/333024280) - תיקון של שינוי מאפיינים של פלאגין Gradle ב-
BaselineProfileכדי לאפשר יצירה של פרופיל Baseline והשוואה לשוק כשמתאימים אישית סוג build שלnonMinifiedאו של השוואה לשוק. (Ib8f05, b/324837887) - תוקן הניקוי של תיעודי ה-method ב-macrobenchmark, כך שתיעודי ה-method אמורים להיות תקינים ומתועדים במלואם, גם במכשירים איטיים יותר. (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 / חריגה לכל הכשלים בזיהוי ההפעלה. השינוי הזה לא משפיע על ההתנהגות הנוכחית (כלומר, חלק מהשגיאות מוצגות, ואחרות לא מזוהות במהלך ההפעלה), אלא רק הופך אותה למובנת יותר. בדרך כלל, האירועים שבהם
Log.w()ולא מדווחים על מדדי הפעלה הם אירועים שבהם חסרים אירועים שאינם קשורים למסגרת, ומוצגים חריגים כשמזוהה הפעלה, למעט מידע על תזמון המסגרת (מפרוסות של ממשק המשתמש/RT). (Id240f, b/329145809) - כדי להפחית את ההפרעות, בטלו את משימות ה-dexopt ברקע לפני הפעלת Macrobenchmark. (I989ed)
- הוספנו את המדד
frameCountל-FrameTimingMetricכדי לעזור לזהות תרחישים שבהם המדידות משתנות כי מספר הפריימים שנוצרו השתנה (נוספו אנימציות חדשות, תוקנו בעיות של ביטול תוקף). (I1e5aa) - הוספנו הבהרה שלפיה
frameOverrunMsהוא המדד המועדף למעקב כשהוא זמין במסמכים, והסבר למה. (I18749, b/329478323)
גרסה 1.3.0-alpha02
20 במרץ 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02 מופץ. גרסה 1.3.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
תמיכה ניסיונית ב-R8 במיקרו-בנצ'מרק באמצעות כללי proguard מוטמעים. חשוב לשים לב שהתמיכה הזו היא ניסיונית, ונדרש AGP 8.3 כדי להקטין את בדיקות המודולים של הספרייה. כדי להפעיל את האופטימיזציה או המיניפיקציה של R8 במודול ההשוואה
build.gradle, צריך להשתמש בקוד הבא. הפעולה הזו אמורה להוביל לשיפור משמעותי בביצועים, בהתאם לעומס העבודה. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
תיקוני באגים
- תיקון של אזהרת תיעוד method כך שתופיע בשורה נפרדת מהפלט של microbench. (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כדי שבדיקות ביצועים של ה-thread הראשי (למשל, בדיקות שקשורות ל-Views או לממשקי משתמש של Compose) לא יפעילו שגיאות ANR, במיוחד במהלך חבילות גדולות ב-CI. (I5c86d) - נוסף
FrameTimingGfxInfoMetric, הטמעה חלופית ניסיונית שלFrameTimingMetricעם מדידות שמגיעות ישירות מהפלטפורמה, במקום לחלץ אותן מהמעקב של Perfetto. (I457cb, b/322232828) - הוספנו את האפשרות ליצור dump של פרופיל ART במהלך איטרציות
warmUpספציפיות. (I17923) - כמה שינויים ב-API של
TraceSectionMetric:- הוספה של
Mode.Min,Mode.Max - הוספת ארגומנט של תווית כדי לשנות את שם הקטע כתווית מדד
- שם המצב נוסף לפלט כדי להבהיר את משמעות המדד
- שינינו את ברירת המחדל לחישוב סכום, כי רוב השימוש במדד הזה הוא לאירועים חוזרים חשוב לשים לב לשינויים האלה בשימוש ב-CI, כי הם עלולים ליצור אי-רציפות או לשבור את הניתוח. (Ic1e82, b/301892382, b/301955938)
- הוספה של
תיקוני באגים
- הודעת שגיאה משופרת בפלאגין Gradle של פרופיל Baseline כשמכשיר מנוהל שצוין לא קיים (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, מוסיפים שני ארגומנטים של אינסטרומנטציה כדי לשנות את ההתנהגות של השמטת ה-shader:-
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!" כי תהליך הסגירה לא הצליח לגמרי. (I5e028)
גרסה 1.2.3
24 בינואר 2024
androidx.benchmark:benchmark-*:1.2.3 מופץ. גרסה 1.2.3 מכילה את השמירות האלה.
תיקוני באגים
- הוסרה חריגה מהפלאגין Baseline Profile Gradle כשגרסת 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
- אוסף
- עכשיו Macrobenchmark מאפס באופן מלא ותקין את מצב ה-compilation לכל compile – לשם כך צריך להתקין מחדש את ה-APK לפני Android 14, ולכן מומלץ מאוד לבצע השוואה (benchmarking) ב-Android 14 ואילך אם רוצים לשמור את המצב (כמו התחברות של משתמש) במה שנמדד.
- אפשר גם לעקוף את הבעיה הזו על ידי שליטה בקומפילציה של האפליקציה בנפרד, ודילוג על הקומפילציה באמצעות
CompilationMode.Ignore()או ארגומנט אינסטרומנטציה
ארגומנטים של אינסטרומנטציה
- תמיכה בארגומנט למדידת ביצועים
androidx.benchmark.dryRunMode.enable(כבר זמין ב-microbenchmark) להרצות אימות מהירות יותר (למשל, כשיוצרים את נקודת ההשוואה או לפני השליחה) - תמיכה ב-
androidx.benchmark.profiling.mode=StackSamplingוב-MethodTracing. - הוספנו את
androidx.benchmark.enabledRulesכדי לאפשר סינון בזמן ריצה של פרופיל Baseline לעומת בדיקות של כללי macrobenchmark - נוסף הארגומנט
androidx.benchmark.perfettoSdkTracing.enableכדי להפעיל מעקב באמצעות tracing-perfetto, למשל מעקב אחר קומפוזיציה מחדש של Compose. חשוב לשים לב שכאשר משתמשים ב-StartupMode.COLD, התזמון יושפע באופן משמעותי כי ספריית המעקב נטענת ומופעלת במהלך הפעלת האפליקציה.
- תמיכה בארגומנט למדידת ביצועים
דרישות
- כדי להפעיל תיעוד או איפוס של פרופילים וניקוי של מטמון ה-shader, עכשיו נדרשת גרסה 1.3.0 ומעלה של
ProfileInstallerבאפליקציית היעד של Macrobenchmark.
- כדי להפעיל תיעוד או איפוס של פרופילים וניקוי של מטמון ה-shader, עכשיו נדרשת גרסה 1.3.0 ומעלה של
ממשקי API ניסיוניים חדשים של מדדים
- הוספנו את
TraceSectionMetricהניסיוני, שמאפשר לחלץ תזמון פשוט מבלוקים שלtrace("") {}באפליקציה, או את TraceMetric כדי לנצל את יכולת השאילתה המלאה של PerfettoTraceProcessor. - הוספנו את
PowerMetricהניסיוני כדי לתעד מידע על צריכת החשמל - הוספנו את
MemoryCountersMetricהניסיוני כדי לספור שגיאות בדפים - נוסף ממשק API ניסיוני,
PerfettoTraceProcessor, שמשמש באופן פנימי לחילוץ מדדים ממעקבי מערכת (שנקראים גם מעקבי Perfetto)
- הוספנו את
תיקונים
- תוקנו קריסות שמתרחשות כשמתקינים או מחלצים פרופילים מאפליקציה שהותקנה מכמה קובצי APK (למשל מחבילת אפליקציות).
- תוקנה הבעיה שבה
FrameTimingMetricהתעלם מפריימים עם מזהי פריימים לא עקביים (בדרך כלל, פריימים במהלך אדוות ב-API 31 ואילך) (I747d2, b/279088460) - תוקנו שגיאות בניתוח של עקבות בגודל של יותר מ-64MB (Ief831, b/269949822)
- הבהרת שגיאות כשקובץ האימג' של מערכת ההפעלה של המכשיר (במיוחד אמולטור) לא מוגדר כראוי למעקב או לקומפילציה
- דילוג על בדיקת רמת הטעינה במכשירים ללא סוללה (מיקרו ומאקרו)
- פלט קבצים משופר, עם שגיאות ברורות יותר לגבי ספריות פלט לא חוקיות, וברירות מחדל בטוחות יותר
- שיפור היציבות של
StartupMode.COLDעל ידי השמטה עקבית של מטמון ההצללה (שנחשף גם דרךMacrobenchmarkScope.dropShaderCache) - תוקנה החזרה למצב הראשוני (fallback) של Leanback עבור
startActivityAndWait.
Microbenchmark
- תכונות
- הפרופיילינג הועבר לשלב נפרד, אחרי מדדים אחרים, כך שהרצת בדיקה אחת יכולה להציג גם תזמון מדויק וגם תוצאות פרופיילינג.
- ממשקי API ניסיוניים
- הוספנו API ניסיוני של
MicrobenchmarkConfigלהגדרת מדדים מותאמים אישית ולקביעת הגדרות למעקב ולפרופיילינג. אפשר להשתמש בהם כדי לתעד method traces או נקודות מעקב (אבל חשוב לשים לב לתקורה של המעקב). - נוספו ממשקי API ניסיוניים לשליטה ב-
BenchmarkStateבנפרד מ-BenchmarkRule, ללא JUnit - הוספנו רשומת
PerfettoTraceניסיונית כדי לאפשר תיעוד של מעקבי Perfetto, עם הגדרה מותאמת אישית, בנפרד מממשקי ה-API של נקודות ההשוואה.
- הוספנו API ניסיוני של
- תיקונים
- פתרון עקיף לבעיה של רווחים לבנים חסרים בתחילת הפלט של בדיקת ביצועים ב-Android Studio.
- תוקנה הבעיה שבה יכול להיות שהאזהרות לא יודפסו בפלט של בדיקת הביצועים ב-Android Studio.
- תוקנה קריסה של
SampledProfilingב-Android 13 (API 33) ואילך. - שיפור משמעותי בביצועים של
dryRunModeעל ידי דילוג עלIsolationActivityומעקב Perfetto (מצב הרצה יבשה מהיר פי 10 בגרסאות ישנות יותר של מערכת ההפעלה).
גרסה 1.2.0-rc02
6 באוקטובר 2023
androidx.benchmark:benchmark-*:1.2.0-rc02 מופץ. גרסה 1.2.0-rc02 מכילה את השינויים האלה.
תיקוני באגים
- תיקון הפלט של קובץ Benchmark כדי שלא ישבש יותר את העתקת הקבצים של הפלאגין
BaselineProfile. הקבצים נוצרו והועתקו מהמכשיר, אבל הם שונו כך שתוסף Gradle לא יראה אותם. (I8dbcc, b/303034735, b/296453339) - הבהרנו את הודעות השגיאה בטעינת
tracing-perfettoכשמזריקים ממודול macrobenchmark לאפליקציית היעד.
גרסה 1.2.0-rc01
20 בספטמבר 2023
androidx.benchmark:benchmark-*:1.2.0-rc01 מופץ. גרסה 1.2.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- עכשיו נזרק חריג (עם הוראות לתיקון) כשהמעקב של Perfetto SDK לא מצליח לבצע אתחול בנקודת השוואה. (I6c878, b/286228781)
- תוקנה קריסת OOM בהמרה של תיעוד method של ART לפורמט perfetto. (I106bd, b/296905344)
- (Macrobenchmark) הבהרנו את התווית של תיעוד method כשהיא מקושרת בפלט הבדיקה של Studio, ותיקנו את שמות הקבצים של תיעוד method כך שיהיו ייחודיים במכשיר או במארח, כדי שלא יוחלפו כשמריצים יותר מבדיקת ביצועים אחת. (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 בגרסה 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 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)
תיקוני באגים
- שינינו את השם של ארגומנט ה-instrumentation מ-
fullTracing.enableל-perfettoSdkTracing.enableכדי לשמור על עקביות עם שם הארטיפקט והפניות אחרות. האפשרותfullTracing.enableתמשיך לפעול כחלופה. (I7cc00) - נקודות מעקב פנימיות של ספריית Benchmark (כולל מעקב אחר לולאות/שלבים של microbenchmark) יופיעו עכשיו בכלי להצגת מעקב המערכת של 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 ניסיוניים למדדים מותאמים אישית ולהגדרות אישיות של microbench (למשל, כלי ליצירת פרופילים ומעקב). (I86101, b/291820856)
תיקוני באגים
- דיווח על שגיאה ב-macrobench כשהגדרות מערכת ההפעלה למעקב שגויות, כמו שתוקן לאחרונה באמולטורים של API 26/28 ARM64. (I0a328, b/282191686)
- הוספנו פרטים על כשל באיפוס של קומפילציה, עם הצעה לעדכן את האמולטור, כי לאחרונה תוקנה הבעיה הזו בחלק מהאמולטורים. (I8c815, b/282191686)
- הופכים את
androidx.test.uiautomator:uiautomator:2.2.0לתלות מסוגapiבמקוםimplementation. (I1981e)
גרסה 1.2.0-beta01
18 ביולי 2023
androidx.benchmark:benchmark-*:1.2.0-beta01 מופץ. גרסה 1.2.0-beta01 מכילה את השינויים האלה.
תיקוני באגים
- תיקון אזהרות שלפעמים לא מוצגות בפלט של Benchmark ב-Studio, ופתרון עקיף לרווחים לבנים בתחילת הפלט של Benchmark שלא מופיעים ב-Studio (Ia61d0, b/227205461, b/286306579, b/285912360)
- תגובה קבועה ל-
FrameTimingMetric. השם של מדד המשנה הואframeDurationCpuMs. (Ib097f, b/288830934).
גרסה 1.2.0-alpha16
21 ביוני 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16 מופץ. גרסה 1.2.0-alpha16 מכילה את השמירות האלה.
שינויים ב-API
- השם של
BaselineProfileRule.collectBaselineProfile()API השתנה לשםBaselineProfileRule.collect(). (I4b665)
תיקוני באגים
- תמיכה ב-Macrobenchmark ל-
androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, b/285912360) - הפרופיל של המיקרו-בנצ'מרק עבר לשלב נפרד, ולכן הוא מתבצע ברצף אחרי המדידה, במקום להחליף אותה. אם יש קטעי מעקב של
MethodTracing, הם נכללים עכשיו במעקב Perfetto שמתועד. (I9f657, b/285014599) - הוספת מדידת ספירה אל
TraceSectionMetricעםMode.Sum. (Ic121a, b/264398606)
גרסה 1.2.0-alpha15
7 ביוני 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15 מופץ. גרסה 1.2.0-alpha15 כוללת את השינויים האלה.
תכונות חדשות
- נוסף
MemoryUsageMetricניסיוני למעקב אחרי השימוש בזיכרון של אפליקציית יעד. (I56453, b/133147125, b/281749311) - הוספת תמיכה בהגדרות Perfetto בהתאמה אישית מלאה באמצעות
PerfettoTrace.record(If9d75, b/280460183) - נוסף מאפיין כדי לדלג על יצירת פרופיל Baseline. שימוש:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)
שינויים ב-API
-
collectBaselineProfileAPI תמיד יוצר פרופילי Baseline יציבים. ה-APIcollectStableBaselineProfileהוסר, ובמקומו צריך להשתמש ב-collectBaselineProfile. (I17262, b/281078707) - הארגומנט
filterPredicateשלBaselineProfileRuleשונה לערך שאינו null, עם ערך ברירת מחדל שווה ערך, כדי שהתנהגות ברירת המחדל של המסנן תהיה ברורה יותר במסמכים. (I3816e)
תיקוני באגים
- כדי לשפר משמעותית את הביצועים, צריך להשבית את
IsolationActivityואת המעקב של Perfetto ב-dryRunMode, כי הם היו רוב זמן הריצה. (Ie4f7d) - תמיכה בדגימת סטאק ביצוע ב-Macrobenchmarks באמצעות ארגומנטים של בדיקת אינסטרומנטציה
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
- הוספנו פרמטר של סוג פרופיל כשיוצרים פרופילי Baseline כדי לתמוך בתכונה הקרובה של פרופיל הפעלה (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 ל-Gradle הושק בגרסת אלפא. הוא מקל על יצירת פרופיל Baseline ומפשט את תהליך העבודה של המפתחים.
שינויים ב-API
- הוסרה התמיכה במעקב של Perfetto ב-API 21 וב-API 22, כולל Microbenchmarks וממשקי ה-API הניסיוניים של
PerfettoTrace. בגרסאות קודמות, חיבוריUiAutomationלא היו יציבים במכשירים מסוימים. (I78e8c) - הוספנו API ניסיוני ציבורי ל-
PerfettoTraceProcessorכדי לאפשר ניתוח של תוכן המעקב. זהו שלב בדרך למדדים בהתאמה אישית מלאה שמבוססים על נתוני מעקב של Perfetto. (I2659e, b/219851406)
גרסה 1.2.0-alpha11
8 במרץ 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11 מופץ. גרסה 1.2.0-alpha11 מכילה את השמירות האלה.
תיקוני באגים
- תוקנו קריסות ב-
MacrobenchmarkRuleוב-BaselineProfileRuleכשמתקינים מחדש או מחלצים פרופילים מ-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כדי להשבית את כל נקודות ההשוואה או את יצירת פרופיל ה-Baseline. (I3d7fd, b/258671856) - תיקון של תיעוד
PerfettoTraceבמודולים של אפליקציות (כלומר, קובצי APK לבדיקה שלא מתעדים את עצמם) (I12cfc) - תוקן סדר הארגומנטים של adb pull בפרופיל Baseline בפלט של 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)
- מתקנים את מעקב ההתקדמות של
simpleperfכדי ליצור את הקובץ ולמקם אותו בצורה נכונה. הפעולה הזו אמורה גם לפתור בעיות כלליות יותר שבהן קובץ לא נשלף בהצלחה על ידי 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)
- תוקנה קריסה בגרסאות build ללא הרשאות בגרסאות 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
- הוספת ממשק ה-API של
PowerMetricלמדידת אנרגיה וחשמל ב-Macrobenchmarks. (Ife601, b/220183779) - תוקן
MacrobenchmarkScope.dropShaderCache()כדי להשמיט בפועל את מטמון ההצללה. הפעולה הזו מסירה כ-20 אלפיות השנייה של רעש מהבדיקות שלStartupMode.COLD, כי עכשיו ההצללות נמחקות באופן עקבי בכל איטרציה. בעבר,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לזמן הכולל ב-macrobenchmark שהוקדש לניפוח. הסרנו גם את הדרישה ל-API 29, כיTraceSectionMetricפועל יחד עםandroidx.tracing.Traceברמות API נמוכות יותר, באמצעותforceEnableAppTracingבאפליקציית היעד. (Id7b68, b/231455742)
תיקוני באגים
- שיפור הבטיחות של כל פקודות המעטפת הפנימיות על ידי אימות של כל הפלט/השגיאות. (I5984d, b/255402908, b/253094958)
- מציינים את המכשיר בפקודה
adb pullשל פרופיל ה-Baseline, כדי שיהיה אפשר פשוט להעתיק את פקודת המשיכה אם כמה מכשירים מחוברים (עד אמולטור אחד) (I6ac6c, b/223359380) - הוספת שגיאה אם קובץ ה-APK של בדיקת ה-Macrobenchmark לא מוגדר כ-self-instrumenting. השגיאה הזו מונעת את הפעלת Macrobenchmark מתוך התהליך של אפליקציית היעד. במהלך התהליך, Macrobench לא יוכל לקמפל/להפסיק/להפעיל במצב התחלתי (cold start) את האפליקציה, או לשלוט בהרשאות שלו (I4279b)
- תוקנה בעיה ב-
measureRepeated()שבהStartupMode.COLDלא סיים את תהליך היעד אחריsetupBlock. עכשיו, כשמשתמשים יבצעו פעולות באפליקציהsetupBlock, תהליך האפליקציה לא ימשיך לפעול, ולא תהיה מדידה לא חוקית של הפעלה במצב התחלתי (cold start). (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כדי לציין ש-FrameOverrunדורש API 31 במקום 29 (I716dd, b/220702554) - הגדרת איטרציה ב-
BaselineProfileRule, והצגת הודעה ברורה אם חבילת היעד לא מותקנת (כבר בוצע עבור MacrobenchmarkRule). (Ic09a3, b/227991471)
גרסה 1.2.0-alpha04
21 בספטמבר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04 מופץ. גרסה 1.2.0-alpha04 מכילה את השינויים האלה.
תכונות חדשות
הוספת תמיכה בארגומנט אינסטרומנטציה
dryRunMode.enableל-macrobenchmark (כבר זמין ב-micro) לפיתוח מקומי מהיר יותר, ואימות של אוטומציה של פעולות באפליקציות (למשל, לפני שליחה). האפשרות הזו משנה את מספר החזרות ל-1, מדלגת על הקומפילציה, משתיקה את כל שגיאות ההגדרה ומשביתה את הפלט של קובץ ה- .json של המדידה. (Ib51b4, b/175149857)בשורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=trueבקובץ build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
תיקוני באגים
- תוקנה הבעיה ב-
StartupTimingMetric, ועכשיו לא צריך להפעיל את הפעילויות שנמדדות דרךMacrobenchmarkScope.startActivityAndWait(). המשמעות היא שהמדד יכול לזהות הפעלות מתוך התראות,Context.startActivity(), ניווט מבוסס-פעילות באפליקציה או פקודות מעטפת. (Ia2de6, b/245414235) - תיקון באג שבו פג הזמן הקצוב לניסיון של
startActivityAndWaitלהמתין להשלמת ההפעלה באמולטורים, על ידי הפחתת הקפדנות של זיהוי הפריימים. (Ibe2c6, b/244594339, b/228946895)
גרסה 1.2.0-alpha03
7 בספטמבר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03 מופץ. גרסה 1.2.0-alpha03 מכילה את השינויים האלה.
תכונות חדשות
- הוספנו ממשקי API ניסיוניים לשימוש ב-
BenchmarkStateבאופן עצמאי, בנפרד מ-BenchmarkRuleאו מ-JUnit4. (Id478f, b/228489614)
תיקוני באגים
- הוספנו חלופה ל-Leanback עבור
startActivityAndWait. (01ed77, b/242899915)
גרסה 1.2.0-alpha02
24 באוגוסט 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02 מופץ. גרסה 1.2.0-alpha02 מכילה את השינויים האלה.
שינויים ב-API
- ברירת המחדל היא
am force stopעבורMacrobenchmarkScope.killProcess(), גם כשהמכשיר עבר רוט, חוץ מבזמן יצירת פרופיל 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 של Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }או משורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
שינויים ב-API
- נוסף
PowerMetricחדש למדידת משימות של אנרגיה וחשמל בבנצ'מרקים. (I9f39b, b/220183779) - נוסף מצב קומפילציה חדש
CompilationMode.Ignoreכדי לדלג על איפוס הפרופיל ועל הקומפילציה. (Ibbcf8, b/230453509) - הוספנו פרמטר חדש ל-
BaselineProfileRule#collectBaselineProfileכדי לסנן את קובץ הפלט לפי שמות החבילות (If7338, b/220146561) - מאפשר למפתחים לרוקן את הסוללה של המכשיר כדי למדוד את צריכת החשמל. (I6a6cb)
- הוספנו את האפשרות לנקות את מטמון ה-Shader ב-
MacrobenchmarkScope. (I32122) - מאפשר למפתחים להגדיר את התצוגה של סוג המדד ולפרט את קטגוריות המשנה הרצויות. (I810c9)
- בעבר, אם הופעל מבחן ביצועים במכשיר לא נתמך, נזרקה שגיאת
UnsupportedOperationException. עכשיו, שגיאת UOE מתרחשת רק אם המדד נמצא בשימוש במכשיר שלא נתמך (למשל:PowerMetric.configure). (I5cf20, b/227229375) - נוספו
TotalPowerMetricו-TotalEnergyMetricלמדידת ההספק והאנרגיה הכוללים בכל קטגוריית מערכת במבחני ביצועים מאקרו. (I3b26b, b/224557371)
תיקוני באגים
- תוקנה בעיה שבה שיטות מקומפלות לא אופסו בצורה נכונה בין כל בדיקת ביצועים של מאקרו בגרסאות build ללא הרשאות בסיס. לצערנו, לשם כך צריך להתקין מחדש את ה-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שעלול להתרחש בחלק מהמכשירים עם Android 11 (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 לחוויית שימוש הכרחית (CUJ) נתונה.
תמיכה במדדי הקצאה ובתיעוד במהלך הפעלות של 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)שיפור מהירות האיטרציה של Macrobenchmark על ידי אופטימיזציה של פקודות 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 מכילה את השמירות האלה.
- שימו לב שהגרסה הזו כוללת שינוי בהתנהגות, כי עכשיו האפליקציות מותקנות מחדש באופן מלא בין כל בדיקת ביצועים כדי להבטיח מדידות מדויקות.
תיקוני באגים ושינויים בהתנהגות
תוקנה בעיה שבה הידור האפליקציה לא אופס כראוי בין בדיקות Macrobenchmark, ולא אופס בכלל בגרסאות build ללא הרשאות בסיס (root). כך נפתרות הרבה בעיות שבהן הפעלת כמה בדיקות גורמת לכך של-
CompilationModeיש השפעה מועטה או אין השפעה בכלל על המדידות. כדי לעקוף את הבעיה הזו, אפליקציית היעד מתקינה מחדש באופן מלא כל שיטת בדיקה, וכך מנקה את נתוני האפליקציה בין כל בדיקת ביצועים. (I31c74, b/230665435)מכיוון שהדבר מונע מאפליקציות להגדיר מצב לפני בדיקות, עכשיו אפשר לדלג על הידור או התקנה מחדש כדי לעקוף את הבעיה. לדוגמה, אפשר לקמפל את היעד באופן מלא באמצעות פקודת מעטפת
cmd package compile -f -m speed <package>, ואז לדלג על שלב הקימפול של macrobenchmark.לדוגמה, בקובץ build.gradle של Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }או משורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseהוספנו את הארגומנט
androidx.benchmark.enabledRulesinstrumentation כדי לאפשר שיתוף מודול בין בדיקות של מדדי ביצועים ברמת המאקרו לבין בדיקות ליצירת פרופיל 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 שניות של התקררות), ומאיצים משמעותית את בדיקות הביצועים בגרסאות build של משתמשים. הוא גם מספק זיהוי של ויסות קצב הנתונים גם כשהשעונים נעולים (אם הם נעולים על קצב גבוה מדי לסביבה הפיזית של המכשיר). (I9c027, b/217497678, b/131755853)סינון של פרופילים שנדגמו באמצעות simpleperf לשרשור
measureRepeatedבלבד כדי לפשט את הבדיקה (Ic3e12, b/217501939)תמיכה במדדים מתהליכי משנה של ממשק משתמש עם שמות באפליקציות מרובות תהליכים (Ice6c0, b/215988434)
סינון כללי פרופיל Baseline לטירגוט 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).
- מניעת פקודות מעטפת של קומפילציה ב-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 מקושרות עכשיו לפלט של Studio, בדומה לפלטים אחרים של יצירת פרופילים, ולא מדכאות את מדד ההקצאה. (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule מדפיס עכשיו את הפקודה
adb pullב-logcat ובפלט של Studio כדי לשלוף את קובץ הטקסט שנוצר של BaselineProfile. (f08811)
גרסה 1.1.0-beta01
12 בינואר 2022
androidx.benchmark:benchmark-*:1.1.0-beta01 מופץ. גרסה 1.1.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תיקון של התעלמות מהפעלת הארגומנט של כלי הפרופיילינג. (I37373, b/210619998)
- הוסר
CompliationModesשהוצא משימוש (I98186, b/213467659) - החלפנו את ארגומנט פרופיל הבסיס של
CompilationMode.Partialל-enum לשם הבהרה. (Id67ea)
גרסה 1.1.0-alpha13
15 בדצמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13 מופץ. גרסה 1.1.0-alpha13 מכילה את השמירות האלה.
שינויים ב-API
- הוספת מעקב מערכת עם תקורה נמוכה לפלט של microbench ב-Android Q (API 29 ואילך). שימו לב: בשלב הזה, המעקב לא מתעד מעקב בהתאמה אישית (באמצעות ממשקי ה-API של Jetpack
android.os.Traceאוandroidx.tracing) כדי לא להשפיע על התוצאות. המעקב הזה יכול לעזור באבחון חוסר יציבות, במיוחד ממקורות מחוץ להשוואה. (I298be, b/205636583, b/145598917) - תסביר את
CompilationModesבשלוש קטגוריות – מלא, חלקי, ללא. בעבר, השמות שלהם לא היו עקביים והתבססו על ארגומנטים של קומפילציה (שאנחנו מתייחסים אליהם עכשיו כפרטי הטמעה) ועל תכונות. כך קל יותר להבין את היתרונות והחסרונות, השילובים האפשריים וההתנהגות בגרסאות השונות של הפלטפורמה. (I3d7bf, b/207132597) - ההגדרה והמדידה מופיעות עכשיו תמיד בזוגות, לפי הסדר. עכשיו אפשר לשלוח שאילתה לגבי שם החבילה והאיטרציה (אם כי האיטרציה עשויה להיות
nullבתרחישים מסוימים של הכנה). (Id3b68, b/208357448, b/208369635)
תיקוני באגים
- תוקנה בעיה שבה
CompilationMode.Speedטופל בטעות בתורNone(I01137)
גרסה 1.1.0-alpha12
17 בנובמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12 מופץ. גרסה 1.1.0-alpha12 מכילה את השמירות האלה.
תכונות חדשות
- הוספת TraceSectionMetric ניסיוני למדידות תזמון מותאמות אישית שמבוססות על מעקב. (I99db1, b/204572664)
תיקוני באגים
- הפעלת המכשיר בכל איטרציה, כדי לוודא שאפשר לבדוק את ממשק המשתמש – צריך להשבית את מסך הנעילה. (Ibfa28, b/180963442)
- תיקון של כמה קריסות במצב הפרופיילינג StackSampling באמולטורים ובמכשירים ללא הרשאות רוט (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ניסיוני חדש שיכול ליצור פרופילים בסיסיים לחוויית השימוש ההכרחית (CUJ) של האפליקציה. בהמשך יפורסם תיעוד מפורט. (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
- היסב בגרסאות מוקדמות יותר (backporting) של 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 מכילה את השמירות האלה.
תיקוני באגים
- תמיכה בהסרת מטמון הדפים של הליבה (kernel) ללא הרשאות ב-API 31/S+, שתגביר את הדיוק של הפעלות StartupMode.COLD. (Iecfdb, b/200160030)
גרסה 1.1.0-alpha08
29 בספטמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08 מופץ. גרסה 1.1.0-alpha08 מכילה את השמירות האלה.
שינויים ב-API
- הפעלת בדיקות ביצועים של גלילה כדי להריץ חזרה ל-API 23 (If39c2, b/183129298)
- הוספת סוג חדש של מדד מדגמי לממשק המשתמש ולפלט JSON, עם דגש על אחוזונים של כמה דגימות בכל איטרציה. (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 באמצעותCompilationMode.BaselineProfileבאפליקציות שמשתמשות בפרופילים של Baseline. (I42657, b/196074999) הערה: נדרש גם עדכון לגרסהandroidx.profileinstaller:profileinstaller:1.1.0-alpha04ואילך. - הערכות הביצועים
StartupMode.COLDו-CompilationMode.Noneיציבות יותר עכשיו. (I770cd, b/196074999)
גרסה 1.1.0-alpha06
18 באוגוסט 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06 מופץ. גרסה 1.1.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- נוסף ארגומנט אינסטרומנטציה
androidx.benchmark.iterationsכדי לאפשר שינוי ידני של מספר החזרות בזמן בדיקה או יצירת פרופיל באופן מקומי. (6188be, b/194137879)
תיקוני באגים
- מעבר ל-Simpleperf ככלי ברירת המחדל ליצירת פרופילים של דגימה ב-API 29 ואילך. (Ic4b34, b/158303822)
בעיות מוכרות
-
CompilationMode.BaselineProfileנמצא בשלבי פיתוח. בינתיים, אל תשתמשו בו כדי לקבוע עד כמה הפרופיל טוב.
גרסה 1.1.0-alpha05
4 באוגוסט 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05 מופץ. גרסה 1.1.0-alpha05 מכילה את השמירות האלה.
1.1.0-alpha04 בוטלה לפני ההשקה בגלל קריסה ספורדית. b/193827052
שינויים ב-API
- הפעלנו את startActivityAndWait כדי להפעיל את ההשקה דרך
am start, מה שמקצר את הזמן של כל איטרציה של המדידה בכ-5 שניות, אבל כבר לא תומך ב-intent parcelables. (I5a6f5, b/192009149
תיקוני באגים
- הפחתת האגרסיביות של זיהוי ההגבלה התרמית, וחישוב מחדש של קו הבסיס אם מזוהות הגבלות לעיתים קרובות. (I7327b)
- תיקון של FrameTimingMetric כדי שיפעל בגרסת הבטא של Android S (Ib60cc, b/193260119)
- כדי לשפר את התמיכה ב-
CompilationMode.BaselineProfile, אפשר להשתמש ב-EmptyActivityכדי להוציא את אפליקציית היעד ממצב של עצירה בכוח. (Id7cac, b/192084204) - סיומת קובץ המעקב שונתה ל-
.perfetto-traceכדי להתאים לתקן הפלטפורמה. (I4c236, b/174663039) - המדד StartupTimingMetric מפיק עכשיו את המדד fullyDrawnMs כדי למדוד את הזמן עד שהאפליקציה מסיימת את הרינדור. כדי להגדיר את המדד הזה לאפליקציה, צריך להפעיל את Activity.reportFullyDrawn כשהתוכן הראשוני מוכן, למשל כשהפריטים הראשוניים ברשימה נטענים ממסד הנתונים או מהרשת. (השיטה reportFullyDrawn זמינה בלי בדיקות של גרסת ה-build ב-ComponentActivity). חשוב לזכור שהבדיקה צריכה לפעול מספיק זמן כדי לתעד את המדד (startActivityAndWait לא ממתין ל-reportFullyDrawn). (If1141, b/179176560)
- הפחתת העלות של הוספת מטא-נתונים של ממשק משתמש לנתוני מעקב ב-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 של Benchmark כוללת רכיב חשוב לבדיקת ביצועים – Macrobenchmark. בנוסף ל-benchmark שמאפשר למדוד לולאות של המעבד (CPU), macrobenchmark מאפשר למדוד אינטראקציות של כל האפליקציה, כמו הפעלה וגלילה, ולתעד מעקבים. מידע נוסף זמין במסמכי התיעוד של הספרייה.
androidx.benchmark:benchmark-*:1.1.0-alpha02 מופץ. גרסה 1.1.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
נוספו פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) של Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 ו-androidx.benchmark:benchmark-macro)
- תיעוד מדדי הביצועים של ההפעלה, הגלילה והאנימציה מהאפליקציה, באופן מקומי או ב-CI
- איך מצלמים עקבות ובודקים אותן מתוך Android Studio
תיקוני באגים
- פתרון לבעיה בהרשאות של מעטפת עם ספריית פלט ב-Android 12 (הערה – יכול להיות שיהיה צורך לעדכן את פלאגין של Android Gradle לגרסה 7.0.0 canary ואת Android Studio לגרסה Arctic Fox (2020.3.1), כדי להמשיך לצלם קובצי פלט במכשירים מושפעים). (Icb039)
- תמיכה בשמירת הגדרות במטמון ב-BenchmarkPlugin (6be1c1, b/159804788)
- פלט קובץ פשוט – מופעל כברירת מחדל, בספרייה שלא דורשת
requestLegacyExternalStorage=true(8b5a4d, b/172376362) - תיקון של אזהרות logcat להדפסת ספרייה לגבי אי-מציאת שרשור JIT בגרסאות פלטפורמה שבהן הוא לא קיים. (I9cc63, b/161847393)
- תיקון לתדירות המקסימלית של מכשיר הקריאה. (I55c7a)
גרסה 1.1.0-alpha01
10 ביוני 2020
הגרסאות androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 וגם androidx.benchmark:benchmark-junit4:1.1.0-alpha01 פורסמו. גרסה 1.1.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות בגרסה 1.1
- מדד ההקצאה – ההשוואה לביצועים כוללת עכשיו שלב נוסף אחרי ההכנה והתזמון, שבו נרשמים מספרי ההקצאות. הקצאות עלולות לגרום לבעיות בביצועים בגרסאות ישנות יותר של הפלטפורמה (140ns ב-O הפך ל-8ns ב-M – נמדד ב-Nexus5X, עם שעונים נעולים). המדד הזה מוצג בפלט של מסוף Android Studio, וגם ב-
- תמיכה ביצירת פרופילים – עכשיו אפשר לתעד נתוני פרופילים להרצת השוואה, כדי לבדוק למה הקוד פועל לאט. אפשר להשתמש ב-Benchmark כדי לתעד מעקב אחר שיטות או דגימת שיטות מ-ART. אפשר לבדוק את הקבצים האלה באמצעות הכלי לניתוח ביצועים ב-Android Studio, דרך File > Open (קובץ > פתיחה).
- הפלאגין Benchmark Gradle מספק עכשיו הגדרות ברירת מחדל להגדרה פשוטה יותר:
- הערך של
testBuildTypeמוגדר כ-release כברירת מחדל, כדי להימנע משימוש ביחסי תלות עם רמת הכיסוי של הקוד מובנית. בנוסף, הגדרנו את release כ-buildType ברירת המחדל, כדי ש-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
גרסת נקודת השוואה 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 3.5 וב-3.6
גרסה 1.0.0-beta01
9 באוקטובר 2019
הגרסאות androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 וגם androidx.benchmark:benchmark-junit4:1.0.0-beta01 פורסמו. גרסה 1.0.0-beta01 מכילה את השמירות האלה.
תכונות חדשות
- כדי לצמצם את העומס על הזיכרון, כדאי להפעיל איסוף אשפה לפני כל חימום כדי למנוע דליפה של נתונים מנקודת השוואה אחת לנקודת השוואה אחרת (b/140895105)
תיקוני באגים
- נוספה תלות ב-
androidx.annotation:android-experimental-lint, כך שקוד Java יפיק שגיאות lint בצורה נכונה כשלא נעשה שימוש ב-API ניסיוני, בדומה למה שמספקת הערת הניסוי של Kotlin למשתמשי Kotlin. - עכשיו מזהה בצורה נכונה את השימוש בארגומנט של אינסטרומנטציה
additionalTestOutputDirלפלט ב-פלאגין של Android Gradle 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
-
BenchmarkState.reportDataAPI מסומן עכשיו כניסיוני
תיקוני באגים
- תיקון של סקריפט נעילת השעון, שנכשל במכשירים שחסרים בהם כלי השירות של מעטפת
cutאוexpr. - תוקנה בעיה במשימה
./gradlew lockClocksשנתקעה במכשירים שעברו רוטינג עם גרסה ישנה יותר של כלי השירות 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, גם לשימוש עם מערכות build שונות (כמו Bazel או Buck) וגם כשמריצים ב-CI. מידע נוסף זמין במאמרים יצירת נקודות השוואה ללא Gradle והפעלת נקודות השוואה בשילוב רציף.
תכונות חדשות
- Gradle plugin
- עכשיו המערכת משביתה באופן אוטומטי את כיסוי הבדיקה ומגדירה את
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-junit4contains classes with JUnit dependency:AndroidBenchmarkRunner, andBenchmarkRule, both of which have moved into theandroidx.benchmark.junit4package -
benchmark:benchmark-commonמכיל את שאר הלוגיקה, כולל BenchmarkState API - הפיצול הזה יאפשר לספרייה לתמוך בהשוואת ביצועים בלי ממשקי JUnit4 API בעתיד
-
- אזהרות לגבי הגדרות אישיות נחשבות עכשיו כשגיאות, והן יגרמו לקריסה של הבדיקה (b/137653596)
- השינוי הזה נועד לעודד מדידות מדויקות יותר, במיוחד ב-CI
- אפשר להחזיר את השגיאות האלה למצב של אזהרות באמצעות ארגומנט אינסטרומנטציה. לדוגמה:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
תיקוני באגים
- הודעות השגיאה שמוצגות כשמנסים לכתוב בהתקן אחסון חיצוני במכשירי Q הן מפורטות יותר, וכוללות הצעות לפתרון הבעיה.
- המסכים מופעלים באופן אוטומטי במהלך הרצת בדיקות ביצועים, במקום להיכשל כשהמסך כבוי
תוכן חיצוני שהוסף
- תודה ל-Sergey Zakharov על השיפורים בפלט ה-JSON ועל התיקון לבעיות שקשורות לכיבוי המסך.
גרסה 1.0.0-alpha03
2 ביולי 2019
androidx.benchmark:benchmark:1.0.0-alpha03 ו-androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 מופצים. כאן אפשר למצוא את השינויים שנכללים בגרסה הזו.
תכונות חדשות
- הצגת משך השינה עקב ויסות תרמי לכל השוואה (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)
- הוספנו לאובייקט ברמה העליונה מידע על ההקשר של הרצת הבדיקה, כמו מידע על המכשיר ועל ה-build, והאם השעונים נעולים (b/132711920)
- השמות של מדדי הזמן כוללים עכשיו את הסיומת ns (b/132714527)
- נוספו נתונים סטטיסטיים נוספים לכל מדד שדווח (מקסימום, חציון, מינימום), והוסר נתון סיכום פשוט של 'ננו' (b/132713851)
הוסר פלט XML (b/132714414)
הוסר זיהוי של ויסות תרמי מ-API של
BenchmarkState.reportData(b/132887006)
תיקוני באגים
- תוקנה הבעיה שבה
./gradlew lockClocksלא נשמר בחלק מהמכשירים עם מערכות הפעלה עדכניות (b/133424037) - זיהוי ויסות נתונים מושבת באמולטור (b/132880807)
גרסה 1.0.0-alpha01
7 במאי 2019
androidx.benchmark:benchmark:1.0.0-alpha01 מופץ. כאן אפשר למצוא את השינויים שנכללים בגרסה הזו.