השוואה לשוק
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסה אלפא |
---|---|---|---|---|
13 בנובמבר 2024 | 1.3.3 | - | - | 1.4.0-alpha05 |
הצהרת יחסי תלות
כדי להוסיף תלות ב-Benchmark, צריך להוסיף את מאגר Google Maven לפרויקט. למידע נוסף, קראו את המאמר מאגר Maven של Google.
Macrobenchmark
כדי להשתמש ב-Macrobenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle
של מודול macrobenchmark:
מגניב
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
מיקרו-בנצ'מרק
כדי להשתמש ב-Microbenchmark בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle
של מודול ה-microbenchmark:
מגניב
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
ספריית Microbenchmark מספקת גם פלאגין של Gradle לשימוש עם מודול המיקרובנצ'מרק.
הפלאגין הזה מגדיר ברירות מחדל של תצורת build עבור המודול, ומגדיר
העתקת הפלט למארח,
ומספק את
משימה אחת (./gradlew lockClocks
).
כדי להשתמש בפלאגין, צריך לכלול את השורה הבאה בבלוק 'Plugins' (יישומי פלאגין) ברמה העליונה
קובץ build.gradle
:
מגניב
plugins { id 'androidx.benchmark' version '1.3.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.3.0" apply false }
לאחר מכן מחילים את הפלאגין על קובץ build.gradle
של מודול ההשוואה לשוק
מגניב
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במסמכי התיעוד של Issue Tracker.
גרסה 1.4
גרסה 1.4.0-alpha05
13 בנובמבר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha05
משוחרר. גרסת 1.4.0-alpha05 כוללת את ההוספות האלה.
תיקוני באגים
- תוקנה בעיה ב-API מגרסה 34 ואילך, שבה ל-
CompilationMode.None()
היו ביצועים לא עקביים שלא מייצגים את הביצועים הראשוניים בתרחיש הכי גרוע. כך ניתן לעקוף שינוי בפלטפורמה שמאפשר למצב הידורverify
של ART לבצע הידור חלקי של אפליקציות (שמשפיע רק על טעינת הכיתות) זמן קצר אחרי ההפעלה הראשונה. (Ie48d0) - תוקנה בעיה שבה יכול להיות שתתועדו נתוני מעקב (במיוחד קצרים) שלא ידווחו על מדידה ממדדים מובנים של Macrobenchmark, בגלל ששם התהליך קוצר בנתוני המעקב של Perfetto. עכשיו, macrobenchmark פותר את הבעיה הזו על ידי חיפוש שם החבילה המקוצר בכל השאילתות המובנות, בנוסף לשם החבילה הצפוי. הערה: הטמעות מותאמות אישית של
TraceMetric
או גורמים אחרים שמפעילים אתPerfettoSession.query
ישירות יכולים להטמיע את אותו התנהגות על ידי שינוי הערך שלprocess.name LIKE "$packageName"
בשאילתה של Perfetto ל-(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")
. (I5bf01, b/377565760)
גרסה 1.4.0-alpha04
30 באוקטובר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha04
משוחרר. גרסת 1.4.0-alpha04 מכילה את ההוספות האלה.
תכונות חדשות
- (ניסיוני) הפעלת יצירת פרופיל בסיס והשוואה לאפליקציות שמותקנות אצל משתמש משני, למשל כל אפליקציה במכשירי Android Auto ללא צג. התמיכה הזו נבדקה בתרחישים מסוימים, אבל אם היא לא עובדת אצלכם, תוכלו לדווח לנו על באג. (I9fcbe, b/356684617, b/373641155)
תיקוני באגים
- עכשיו תמיד מתבצעת החלפה של
isProfileable
בגרסאות build למדדי השוואה, וגם שלisDebuggable
בגרסאות build למדדי השוואה וגם בגרסאות build מסוגnonMinified
(צילום פרופיל בסיס). (I487fa, b/369213505) - תיקון לזיהוי הידור במכשירים פיזיים מסוימים לפני API 28 – משפיע על json
context.compilationMode
, וגם על ההתנהגות שלandroidx.benchmark.requireAot=true
(שכבר לא מחזיר שגיאה באופן שגוי) (Ic3e08, b/374362482) - במדדים של
CpuEventCounter
, המערכת תשליך שגיאה אם יתגלו מדידות לא חוקיות (למשל, instructions/cpucycles==0) (I8c503)
גרסה 1.4.0-alpha03
16 באוקטובר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha03
משוחרר. גרסת 1.4.0-alpha03 כוללת את ההוספות האלה.
שינויים ב-API
- Macrobenchmark: הבדיקה הזו מוסיפה את
ArtMetric
, שאפשר להשתמש בו כדי לבדוק את הכיסוי של הפרופיל או את הביצועים הכלליים של Android RunTime. הנתון מתעד את המספר ואת משך הזמן הכולל של JIT, של יצירת הכיתה (אם האפשרות הזו זמינה) ושל אימות הכיתה. בנוסף, השינויים ב-CaptureInfo
כוללים גרסה אופציונלית של ART mainline עם ברירת מחדל. (I930f7) - מוסיפים את
coefficientOfVariation
לפלט ה-JSON של Benchmark כדי להציג יציבות במהלך הרצה נתונה של Benchmark. (Ib14ea)
תיקוני באגים
- תוקנה בעיה ב-
CollectBaselineProfileTask
כשיש רווחים במכשיר AVD. (Ia0225, b/371642809) - תיקון משוערים לשגיאות מחריגות מסוג
StartupMode.COLD
:Package <packagename> must not be running prior to cold start!
. עכשיו,MacrobenchmarkScope.killProcess()
(כולל הפעולה שפועלת לפני כל חזרה על תהליך, שמשמשת להטמעת ההתנהגות שלStartupMode.COLD
) תמתין כדי לוודא שכל התהליכים של האפליקציה הפסיקו לפעול. (I60aa6, b/351582215) - תוקנה בעיה שבה השגיאה UNLOCKED_ הופיעה במהלך שימוש במהדמרים מסוימים עם הרשאת root. (Ic5117)
- הספרייה הזו משתמשת עכשיו בהערות של JSpecify לגבי ערכים null, שהן שימוש בסוגים. מפתחי Kotlin צריכים להשתמש בארגומנטים הבאים של המהדר כדי לאכוף שימוש נכון:
-Xjspecify-annotations=strict
, -Xtype-enhancement-improvements-strict-mode
(I7104f, b/326456246)
גרסה 1.4.0-alpha02
2 באוקטובר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha02
משוחרר. גרסה 1.4.0-alpha02 מכילה את ההוספות האלה.
שינויים ב-API
- משימות Gradle
lockClocks
ו-unlockClocks
הועברו לפרויקטים למדדי ביצועים, במקום להיות זמינות ברמה העליונה. השינוי הזה היה הכרחי כי לצערנו אין דרך לרשום אותן כפעולות ברמה העליונה בלי לשבור את בידוד הפרויקט. (I02b8f, b/363325823)
תיקוני באגים
BaselineProfileRule
אוסף עכשיו פרופילים לאפליקציות עם כמה תהליכים, על ידי שליחת אות לכל תהליך שפועל בסוף הבלוק כדי למחוק את הפרופילים. אם אוסף מבוסס-פרופיל אף פעם לא מוצא תהליך להעברה אליו, האוסף ייכשל כי לא צפוי שיכללו בו נתוני פרופיל. בנוסף, הוספנו ארגומנט לכלי למדידת ביצועים כדי לשלוט במשך ההמתנה לדמפ:androidx.benchmark.saveProfileWaitMillis
(I0f519, b/366231469)- מ-Benchmark
1.3.2
: תוקנה בעיה ב-Firebase Test Lab (FTL) שבה לא ניתן היה למשוך קבצים של תוצאות Baseline Profile או Macrobenchmark מהתוסף Baseline Profile Gradle. (I2f678, b/285187547)
כדי להשתמש ב-FTL, מחילים את הפלאגין על מודול פרופיל הבסיס בבלוק הפלאגין, באמצעות:
plugins {
...
id("com.google.firebase.testlab")
}
ולאחר מכן מגדירים את Firebase Test Lab באמצעות:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
בנוסף, צריך להוסיף את מכשיר ה-FTL שנוצר לתוסף של פרופיל הבסיס:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
גרסה 1.4.0-alpha01
18 בספטמבר 2024
androidx.benchmark:benchmark-*:1.4.0-alpha01
משוחרר. גרסת 1.4.0-alpha01 כוללת את ההוספות האלה.
תכונה חדשה – תובנות לגבי הפעלת אפליקציות
- אפשר להפעיל את הגרסה הראשונית של התובנות לגבי הפעלת האפליקציה ב-Macrobenchmark. (09fae38)
כדי להפעיל את המדד בסטארט-אפ:
@Test
fun startup {
macrobenchmarkRule.measureRepeated(
…
packageName = "com.example.my.application.id"
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
compilationMode = CompilationMode.None(),
experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
) {
scope.startActivityAndWait(...)
}
}
לאחר מכן, הפעלת מדד הביצועים של סטארט-אפ תנתח את המעקב כדי לחפש בעיות נפוצות, ותדפיס אותן אחרי המדדים בתוצאת הבדיקה של Studio בכרטיסייה benchmark (מדד ביצועים), לדוגמה:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
התכונה הזו עדיין בתהליך פיתוח, ואנחנו נמשיך לשפר את המסמכים והיכולת להרחיב אותה. נשמח לקבל מכם משוב.
תכונות חדשות
- הוספנו את מאפיין ה-gradle
androidx.baselineprofile.suppressWarnings
כדי לדכא את כל האזהרות בפרופיל הבסיסי. (314153a) - מדדי Microbench מוצגים עכשיו ב-Perfetto traces כמספרים. (3214854)
- הוספת סקריפטים ניסיוניים להשבתת jit (נדרשת הרשאת root או הפעלה מחדש בסביבת זמן הריצה) ולאיפוס מצב הביצועים או מצב הבדיקה של המכשיר. כרגע, הן לא מתפרסמות כמשימות gradle. (7c3732b)
- נוספה ארגומנטים של מדדי ביצועים כדי לדלג על בדיקות כשמריצים במהדורת הדמיה. כשגרסת build של
automaticGenerationDuring
מופעלת, גם אבני דרך יגרמו ליצירת פרופיל בסיס. אם משתמשים במהדמרים, הפעולה הזו תיכשל. עם הארגומנט החדשskipBenchmarksOnEmulator
, אפשר לדלג על הבדיקה. (0c2ddcd) - שינוי הלוגיקה להפעלת אירועי ביצועים כך שתופעל ב-API מגרסה 23 ואילך (2550048)
שינויים ב-API
- הארגומנט הניסיוני הקיים
PerfettoConfig
ל-MacrobenchmarkRule.measureRepeated()
הועבר לאובייקטExperimentalConfig
החדש.
תיקוני באגים
- הגדלת מספר הניסיונות החוזרים של
lockClocks.sh
(99e9dac) - אם כבר קיימים סוגים של
nonMinified
ו-benchmark build, אל תיצרו אותם. בגלל באג, גם אם סוגים של גרסאות build שלnonMinified
ושל מדדי ביצועים היו קיימים, הם היו נוצרים מחדש. (e75f0a5) - התכונה מתעלמת מפלחים שלא מסתיימים בתוצאות של
TraceSectionMetric
. (a927d20) - בדיקה משופרת של המהדר, שמביאה בחשבון את הקידומת
sdk_
. (1587de8) - חבילות שלא פועלות נחשבות כמאושרות ב-
FrameTimingGfxInfoMetric
. (35cc79c) - תיקון של
androidx.benchmark.cpuEventCounter
שמייצר ערכים פגומים באירועים שאינם אירועי הוראה. (06edd59) - תיקון של
resumeTiming/runWithTimingDisabled
כדי לכבד את סדר העדיפויות של המדדים, ולצמצם באופן משמעותי את ההשפעה של השהיה/המשך של מדד בעל עדיפות נמוכה יותר על תוצאות של מדד בעל עדיפות גבוהה יותר. לדוגמה, אם משתמשים בספירת ביצועים של מעבדים באמצעות הארגומנט של המדידהcpuEventCounter.enable
, הערך של timeNs לא יורד באופן משמעותי יותר כשמתרחשים השהיות או הפעלות מחדש. (5de0968)
גרסה 1.3
גרסה 1.3.3
16 באוקטובר 2024
androidx.benchmark:benchmark-*:1.3.3
משוחרר. גרסת 1.3.3 כוללת את ההוספות האלה.
תיקוני באגים
- תוקנה בעיה ב-
CollectBaselineProfileTask
כשיש רווחים במכשיר AVD (Ia0225, b/371642809)
גרסה 1.3.2
2 באוקטובר 2024
androidx.benchmark:benchmark-*:1.3.2
משוחרר. גרסה 1.3.2 מכילה את ההוספות האלה.
תיקוני באגים
- תוקנה בעיה ב-Firebase Test Lab (FTL) שבה לא ניתן היה למשוך קבצי תוצאות של Baseline Profile או של Macrobenchmark מפלאגין Baseline Profile Gradle. (I2f678, b/285187547)
כדי להשתמש ב-FTL, מחילים את הפלאגין על מודול פרופיל הבסיס בבלוק הפלאגין, באמצעות:
plugins {
...
id("com.google.firebase.testlab")
}
ולאחר מכן מגדירים את Firebase Test Lab באמצעות:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
בנוסף, צריך להוסיף את מכשיר ה-FTL שנוצר לתוסף של פרופיל הבסיס:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
גרסה 1.3.1
18 בספטמבר 2024
androidx.benchmark:benchmark-*:1.3.1
משוחרר. גרסת 1.3.1 מכילה את ההוספות האלה.
תיקוני באגים
- הוספנו את מאפיין ה-gradle
androidx.baselineprofile.suppressWarnings
כדי לדכא את כל האזהרות בפרופיל הבסיסי (I7c36e, b/349646646) - תוקן פלאגין Gradle של פרופיל בסיס כדי להשתמש ב-
nonMinified…
וב-benchmark…
קיימים אם הם נוצרו על ידי האפליקציה, במקום ליצור עטיפות. (Ia8934, b/361370179) - תוקן הבאג ב-
java.lang.AssertionError: ERRORS (not suppressed): EMULATOR
כש-automaticGenerationDuringBuild
מופעל במהדמנים. במקום זאת, נעשה שימוש בארגומנט חדש כדי לדלג על הבדיקה. (If3f51, b/355515798) - צמצום של מיקרו-בדיקות ביצועים – שמירה של תת-כיתות של
org.junit.runner.notification.RunListener
ב-ProGuard של ספריית נקודות השוואה (Ic8ed5, b/354264743) - תיקון
TraceSectionMetric
כדי להתעלם מפלחים שלא מסתיימים. בעבר, לאירועים האלה היה משך זמן של -1, למשל במהלך סיכום או חיפוש משך הזמן המינימלי. (If74b7) - תוקנה בעיה ב-
FrameTimingGfxInfoMetric
שבה הפעלת המדד גרמה לקריסה אם התהליך עדיין לא פועל. (I6e412)
גרסה 1.3.0
21 באוגוסט 2024
androidx.benchmark:benchmark-*:1.3.0
משוחרר. גרסת 1.3.0 כוללת את ההוספות האלה.
שינויים ב-Microbenchmark מאז גרסה 1.2.0
- מעקב אחר שיטות מופעל כברירת מחדל במבחני מיקרו-ביצועים כשהם פועלים ברוב המכשירים
- מעקב אחר שיטות פועל בשלב נפרד, אחרי המדידות – כך אפשר לקבל מדידות מדויקות ומעקב אחר שיטות כפלט מרצף בדיקות ביצועים אחד
- מעקב אחר שיטות בגרסאות מסוימות של מערכת ההפעלה Android ו-ART ישפיע על שלבי המדידה המאוחרים יותר – בגרסאות האלה, מעקב אחר שיטות מושבת כברירת מחדל ומופיעה אזהרה בפלט של Studio
- נקודות השוואה ומקרי ANR ב-thread הראשי
- הוספנו את
measureRepeatedOnMainThread
למדדי ביצועים של חוטי UI (למשל, אלה שמקיימים אינטראקציה עם ממשקי UI של Compose/View) כדי למנוע אירועי ANR כשהאפליקציה פועלת במשך כמה שניות. - אם קיימת סבירות גבוהה שהמעקב אחר השיטה יעלה על המועד האחרון למניעת ANR, המערכת תדלג על המעקב. כדי להשבית את ההתנהגות הזו, מגדירים את
androidx.benchmark.profiling.skipWhenDurationRisksAnr
לערך false (לא מומלץ להגדיר את הערך הזה להרצות CI, כי מקרי ANR עלולים לגרום לבעיות בהרצות CI ארוכות).
- הוספנו את
- הקטנה
- כללי Proguard מוטמעים לשיפור מיקרו-ביצועים כשהצמצום מופעל
- כדי לבצע אופטימיזציה לעומס (minification) או R8 במודול ספרייה, צריך AGP 8.3. אפשר להפעיל את התכונות האלה באמצעות
android.buildTypes.release.androidTest.enableMinification
ב-build.gradle
- נוספה גרסה ניסיונית של
BlackHole.consume()
API כדי למנוע חיסול של קוד לא פעיל (If6812, b/286091643)
- מדדים
- תכונה ניסיונית של מונה אירועים של מעבד (מדדים מ-
perf_event_open
, שדורשים הרשאת root ברוב הגרסאות של הפלטפורמה), גישה דרךInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(ניתן להגדיר ל-true
) ואפשר להגדיר אתandroidx.benchmark.cpuEventCounter.events
למשל ל-(Instructions,CpuCycles
). התכונה הזו אמורה לקבל תמיכה במהדמרים מסוימים של userdebug, אבל התמיכה לא נבדקה בכל המהדמרים הזמינים
- תכונה ניסיונית של מונה אירועים של מעבד (מדדים מ-
שינויים ב-MACRObenchmark מאז גרסה 1.2.0
- שינוי יסודי במעקב אחר שיטות למדדי ביצועים ברמת המאקרו.
- עכשיו, מעקב הנתונים של השיטות מוגבל למשך הזמן של
measureBlock
, והוא יכול לתעד כמה סשנים אם התהליך מתחיל כמה פעמים. - בעבר, מעקב אחר שיטות עבד רק למדדי השוואה של
StartupMode.COLD
, ולא תיעד שום דבר לגביmeasureBlocks
שלא הפעיל מחדש את תהליך היעד - תיקון של שטיפת נתוני מעקב אחר שיטות במבחן ביצועים ברמת המאקרו, כך שנתוני המעקב אחר השיטות יתועדו במלואם ויתאימו לשימוש, גם במכשירים איטיים יותר. (I6349a, b/329904950)
- עכשיו, מעקב הנתונים של השיטות מוגבל למשך הזמן של
- כדי שהמדידות של
CompilationMode.Partial(warmup=N)
יהיו מדויקות יותר, צריך לבצע גרסת dump נכונה של פרופיל ה-ART במהלך חזרותwarmUp
בודדות כשהתהליך מושמד. (I17923) - הודעה על כישלון בשידור של Drop Shader
- נוספו הצעות לניפוי באגים להודעה על כישלון בשידור של שובר שגיאות
- מוסיפים שני ארגומנטים של מכשור כדי לשנות את התנהגות השמטת ה-shader, כדי לעקוף קריסות כשמבצעים בדיקת ביצועים של אפליקציות בלי
ProfileInstaller
1.3:androidx.benchmark.dropShaders.enable=true/false
: אפשר להשתמש בה כדי לדלג על כל השמטת שגיאות בקוד שקשורות לשיפור איכות התמונה (כולל השמטות שגיאות בקוד שקשורות להשקות שלStartupMode.Cold
), במיוחד כשבודקים את הביצועים של אפליקציות שעדיין לא משתמשות ב-profileinstaller 1.3androidx.benchmark.dropShaders.throwOnFailure=true/false
: אפשר להשתמש בו כדי לסבול כשלים בניסיון להסיר שגיאות, למשל כשבודקים אפליקציות ללא profileinstaller 1.3 (I4f573)
- נוספה וריאנט
MacrobenchmarkRule#measureRepeated
ניסיוני שמקבלPerfettoConfig
מותאם אישית להקלטת נתוני Perfetto בהתאמה אישית מלאה. חשוב לזכור שהגדרות לא נכונות עשויות לגרום לכשל בכיתות מובנות של מדדים. (Idfd3d, b/309841164, b/304038384) - כדי לצמצם את ההפרעות, צריך לבטל את משימות ה-dexopt ברקע לפני שמריצים את Macrobenchmark. (I989ed)
- Macrobenchmark ממתין עכשיו לשנייה אחת עד שהאפליקציה היעד תנקה את פרופיל ה-ART (בעבר הוא המתין 500 אלפיות השנייה). (I85a50, b/316082056)
- שינוי משמעותי ב-TraceSectionMetric
- הערה: השינויים הבאים ב-
TraceSectionMetric
עשויים להשפיע על הפלט בשימוש ב-CI, ויכולים ליצור הפסקות או לשבור את הניתוח - הסכום הוא עכשיו ברירת המחדל, כי רוב השימוש במדד הזה הוא באירועים חוזרים, ובמקרים כאלה המערכת תשליך נתונים בשלב הראשון.
- השינויים האלה נועדו לאפשר התאמה אישית רחבה יותר של התכונה, עם יותר מצבים זמינים
- שמות המצבים מוטמעים עכשיו בשם הפלט של המדד (ב-Studio וב-JSON)
- עכשיו יש תמיכה בפלחים שנוצרו באמצעות
Trace.{begin|end}AsyncSection
.
- הערה: השינויים הבאים ב-
- מדדים
- כוח – נוספו
PowerMetric.deviceSupportsHighPrecisionTracking
, PowerMetric.deviceBatteryHasMinimumCharge()
ו-PowerMetric.deviceSupportsPowerEnergy()
- השם של
Metric.getResult
השתנה ל-getMeasurements
כדי להתאים לסוג ההחזרה - נוספו תוויות log.w / exception לכל הכישלונות בזיהוי בזמן ההפעלה. השינוי הזה לא משנה את ההתנהגות הנוכחית (כך שחלק מהשגיאות יושלחו, וחלק אחר לא יזהו את האפליקציה בזמן ההפעלה), אלא רק מאפשר להבין אותה טוב יותר. בדרך כלל, אלה שהערך שלהם הוא
Log.w()
ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם פריימים. חריגות מתרחשות כשמתגלה הפעלה, מלבד מידע על תזמון הפריימים (מפלחים של UI/RT). (Id240f, b/329145809) - הוספנו את המדידה
frameCount
ל-FrameTimingMetric
כדי לעזור לכם לזהות תרחישים שבהם המדידות משתנות בגלל שינוי במספר הפריימים שנוצרו (נוספו אנימציות חדשות, תוקנו בעיות של ביטול תוקף). (I1e5aa) - הבהרנו ש-
frameOverrunMs
הוא המדד המועדף למעקב כשהוא זמין במסמכים, ומסבירנו למה. (I18749, b/329478323) - תוקנה בעיה שבה יכול להיות שפריימים ללא סיומת בתחילת המעקב ובסופו ישויכו יחד, מה שעלול לגרום לדיווח שגוי על פריים אחד ארוך במיוחד. (I39353, b/322232828)
- שיפור השגיאה
FrameTimingMetric
כשלא נוצרים פריימים, ותמיד פלט קישור למעקב אחרי הבעיה כשהניתוח של המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9) - תוקנה קריסה ב-
FrameTimingMetric
שנגרמה מאי-ניתוח של מזהה המסגרת, במיוחד במכשירים מסוימים של יצרני ציוד מקורי. (Ia24bc, b/303823815, b/306235276) - הוספת פרטים נוספים להודעות השגיאה והקלה על הדרישות של הבדיקות ב-
FrameMetrics
. (Iadede)
- כוח – נוספו
שינויים בתיעוד פרופיל Baseline או בפלאגין Gradle מאז גרסה 1.2.0
- הגרסה המומלצת המקסימלית של AGP הוגדלה ל-9.0.0-alpha01.
- חשוב לוודא שהמשימות
mergeArtProfile
ו-mergeStartupProfile
תמיד מחכות ליצירת פרופיל בסיס. (I623d6, b/343086054) - לאחר יצירת פרופיל בסיס, יופיע סיכום של השינויים (I824c8, b/269484510)
- נוספה אפשרות להשתמש ב-DSL כדי להשבית אזהרות (Ic4deb, b/331237001)
- תיקון כדי לוודא שבדוחות השוואה נעשה שימוש בפרופילים בסיסיים שנוצרו כשהאפשרות
automaticGenerationDuringBuild
מושבתת (Ic144f, b/333024280) - תיקון של החלפות ברירת המחדל של מאפייני הפלאגין
BaselineProfile
ב-Gradle, כדי לאפשר יצירת פרופיל בסיס ובדיקת ביצועים כשמתאימים אישית סוג build שלnonMinified
או של בדיקת ביצועים. (Ib8f05, b/324837887) - תיקון להכללת פרופילים בסיסיים של ספריות ב-AAR לפני AGP 8.3.0-alpha15. (I1d2af, b/313992099)
- תוקנה כתובת ה-URL של הפלט של פרופיל ה-startup והבסיס בסוף המשימה ליצירה. (I802e5, b/313976958)
שינויים משמעותיים אחרים מאז גרסת 1.2.0
- תיעוד נתוני מעקב
- שגיאת EXITCODE 2 הופחתה כשמפעילים את perfetto משגיאה לאזהרה ביומן
- הפעלת מעקב AIDL כברירת מחדל בבדיקות השוואה(נדרשת גרסה 28 של API) (Ia0af2, b/341852305)
- הפעלת מעקב אחר תגים של Porter כברירת מחדל בבדיקות השוואה. לדוגמה, המערכת מתעדת נקודות מעקב של wakelock. (Icfe44, b/286551983)
- הזמן הקצוב לתפוגה של תחילת צילום המעקב הוגדל כדי למנוע קריסות כשמתחילים את המעקב במכשירים איטיים יותר (I98841, b/329145808)
- הוספנו ממשקי API
PerfettoTraceProcessor.Session.queryMetrics
ציבוריים עם וריאנטים של JSON, textproto ו-proto binary (לא מפוענח). הם מאפשרים להריץ שאילתות לגבי מדדים שמובנים ב-TraceProcessor
(I54d7f, b/304038382) - הפעלת התחלה חסומה ברשומת המעקב של Perfetto כדי לצמצם את הסיכון לנתונים חסרים בתחילת המעקב. התכונה נתמכת רק ב-API מגרסה 33 ואילך. (Ie6e41, b/310760059)
- פלט JSON
- נוספו פרטים נוספים בהקשר של מדד השוואה בפלט ה-JSON:
context.artMainlineVersion
– גרסה של מספר שלם של מודול Art הראשי (אם הוא נמצא במכשיר,-1
אחרת)context.build.id
– שווה ל-android.os.Build.IDcontext.build.version.codename
– שווה ל-android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename
– תואם לאות הראשונה של הכינוי של גרסת ה-pre-release (כולל בגרסאות build של גרסאות זמינות) (Ie5020)
- הוספנו את הרשימה
profilerOutput
לפלט ה-JSON כדי להקל על שימוש בכלים לניתוח נתוני פרופיל (למשל Perfetto, Method traces) (I05ddd, b/332604449) - הוספנו אזהרה כשמשתמשים ב-Android Test Orchestrator במודולים של מדדי ביצועים, כי הפעולה הזו תגרום לכתיבה חוזרת של קובצי 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
כדי לכבד את סדר העדיפויות של המדדים, ולצמצם באופן משמעותי את ההשפעה של השהיה/המשך של מדד בעל עדיפות נמוכה יותר על תוצאות של מדד בעל עדיפות גבוהה יותר. לדוגמה, אם משתמשים בספירת ביצועים של מעבדים באמצעות הארגומנט של המדידהcpuEventCounter.enable
, הערך של timeNs לא יורד באופן משמעותי יותר כשמתרחשים השהיות או הפעלות מחדש. (I39c2e, b/286306579, b/307445225) - צמצום הסיכוי שדגימת הסטאק תגרום ל-
measureRepeatedOnMainThread
להגיע לזמן קצוב קפדני לתפוגה בשרשור הראשי, על ידי העברת ההמרה של דגימת הסטאק מהשרשור הראשי. (I487a8, b/342237318) - הסרנו את התיאור הידני של הגישה לממשקי API חדשים של פלטפורמות, כי זה קורה באופן אוטומטי באמצעות בניית מודלים של API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל, R8 גרסה 3.3) ובכל גרסאות ה-build כשמשתמשים ב-AGP 8.1 ואילך (למשל, D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלצים לעדכן ל-D8 בגרסה 8.1 ואילך. למידע נוסף, מומלץ לעיין במאמר הזה. (I9496c, b/345472586)
- הוספנו בדיקה של גרסת agp כדי לשלוח את שם החבילה כארגומנטים של instr. בגרסאות קודמות של AGP 8.4.0, לא ניתן לשלוח את שם החבילה של אפליקציית היעד לאפליקציית המדידה באמצעות ארגומנטים של המדידה. (0c72a3f)
גרסה 1.3.0-beta02
10 ביולי 2024
androidx.benchmark:benchmark-*:1.3.0-beta02
משוחרר. גרסת 1.3.0-beta02 כוללת את ההוספות האלה.
תיקוני באגים
- טיפול מושלם ב-EXITCODE
2
כשמפעילים את Perfetto כדי לתעד אזהרה, אבל להמשיך.
גרסה 1.3.0-beta01
12 ביוני 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
משוחרר. גרסת 1.3.0-beta01 כוללת את ההוספות האלה.
שינויים ב-API
- השם של
MethodTracing.affectsMeasurementOnThisDevice
שונה ל-AFFECTS_MEASUREMENT_ON_THIS_DEVICE
כדי לשמור על עקביות. (I1bdfa) - נוספה ממשק API ניסיוני של
BlackHole.consume()
כדי למנוע חיסול של קוד לא פעיל בבדיקות מיקרו-ביצועים. (If6812, b/286091643) - מעכשיו, בדיקת הביצועים ברמת המיקרו תגרום לזריקת שגיאה בצורה נכונה כדי למנוע מעקב אחר שיטות שיפריע למדידות. המצב הזה מתרחש במכשירים מסוימים כשמפעילים את מעקב ה-method (באמצעות ארגומנטים של מכשירי מדידה או
MicrobenchmarkConfig
), ואם מתבצעת ניסיון מדידה אחרי מעקב אחר method. המכשירים המושפעים פועלים עם API 26-30 או עם גרסאות מסוימות של מודולים ראשיים של ART שהושפעו מההפרעה הזו, וניתן לזהות אותם בסביבת זמן הריצה באמצעותProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
. (Iafb92, b/303660864)
תיקוני באגים
- הגרסה המקסימלית המומלצת של agp שופרה ל-9.0.0-alpha01. (I5bbb0)
- נוספה מצב הידור להקשר של מדד הביצועים (If5612, b/325512900)
- הפעלת מעקב AIDL כברירת מחדל (נדרש API 28) (Ia0af2, b/341852305)
- נוספו פרטים נוספים בהקשר של מדד השוואה בפלט ה-JSON:
context.artMainlineVersion
– גרסה של מספר שלם של מודול Art הראשי (אם הוא נמצא במכשיר, -1 אחרת)context.build.id
– שווה ל-android.os.Build.ID
context.build.version.codename
– שווה ל-android.os.Build.VERSION.CODENAME
context.build.version.abbreviatedCodename
– תואם לאות הראשונה של הכינוי של גרסת המקור (גם בגרסאות build של גרסאות זמינות) (Ie5020)
- תיקון של
StackSampling
כך שיכבד אתandroidx.benchmark.profiling.sampleDurationSeconds
(Ib1d53) - משנים את macro->common dependency ל-
api()
, כדי שיהיה קל יותר להשתמש, למשל, ב-PerfettoTrace
וב-PerfettoConfig
. (Icdae3, b/341851833) - חשוב לוודא שהמשימות
mergeArtProfile
ו-mergeStartupProfile
תמיד מחכות ליצירת פרופיל בסיס. (I623d6, b/343086054) - כשמחליטים אם להפעיל וריאנט, כדאי להביא בחשבון את מצב ההפעלה שלו. (I5d19e, b/343249144)
- הגדלת ברירת המחדל של זמן הקצאת הזמן לתפוגה להתחלה של מעבד המעקב של Perfo. (I87e8c, b/329145808)
גרסה 1.3.0-alpha05
14 במאי 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
משוחרר. גרסת 1.3.0-alpha05 כוללת את ההוספות האלה.
תיקוני באגים
- הוספת חריגה ברורה יותר כשמדד macrobench מחזיר ערכים אפס לכל החזרות (Iab58f, b/314931695)
- נוספו כללי פתרון חלופיים לכללי Proguard של microbench, כולל תמיכה בכללי מאזין ואזהרות או שגיאות אחרות שנצפו. (I14d8f, b/329126308, b/339085669)
- מעקב אחר שיטות פועל בשלב נפרד במהלך בדיקת Macrobenchmark, והוא כבר לא משפיע על המדידות. (If9a50, b/285912360, b/336588271)
- נוספו הצעות נוספות לניפוי באגים להודעה על כישלון בשידור של שגיאת Shader. (I5efa6, b/325502725)
גרסה 1.3.0-alpha04
1 במאי 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
משוחרר. גרסת 1.3.0-alpha04 מכילה את ההוספות האלה.
שינויים ב-API
- נוספה וריאנט
MacrobenchmarkRule#measureRepeated
ניסיוני שמקבלPerfettoConfig
מותאם אישית להקלטת נתוני Perfetto בהתאמה אישית מלאה. חשוב לזכור שהגדרות לא נכונות עשויות לגרום לכשל בכיתות מובנות של מדדים. (Idfd3d, b/309841164, b/304038384) - שינוי השם של
PowerMetric.deviceSupportsPowerEnergy
ל-PowerMetric.deviceSupportsHighPrecisionTracking
לשם הבהרה (I5b82f) - הוספנו את
PowerMetric.deviceBatteryHasMinimumCharge()
ו-PowerMetric.deviceSupportsPowerEnergy()
כדי לאפשר שינוי או דילוג על אמות המידה על סמך יכולת מדידת צריכת האנרגיה של המכשיר. (I6a591, b/322121218)
תיקוני באגים
- נוספה השוואה לפרופיל הבסיס הקודם (I824c8, b/269484510)
- נוספה אפשרות להשתמש ב-DSL כדי להשבית אזהרות (Ic4deb, b/331237001)
- שינוי חריג ביומן המידע כשוריאציות של מדדי השוואה מושבתות (I8a517, b/332772491)
- קל יותר לתעד את ה-traces של ה-method עבור Macrobenchmark שמוגדר להיקף של משך הזמן של ה-
measureBlock()
בפועל. בעבר, הוא הופעל עם הפעלת תהליך היעד ותומך רק בהפעלות במצב התחלתי (cold start) (Iee85a, b/300651094) - מניעת קריסה כשעיבוד המעקב של Perforto מתחיל לאט (I98841, b/329145808)
גרסה 1.3.0-alpha03
17 באפריל 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
משוחרר. גרסת 1.3.0-alpha03 מכילה את ההוספות האלה.
תכונות חדשות
- הוספת ממשקי API
PerfettoTraceProcessor.Session.queryMetrics
ציבוריים עם וריאנטים של JSON, textproto ו-proto binary (לא מפוענח). הם מאפשרים להריץ שאילתות על מדדים שמובנים ב-TraceProcessor (I54d7f, b/304038382) - הוספנו את
profilerOutput
לפלט ה-JSON כדי להקל על שימוש בכלים לניתוח נתוני פרופיל (למשל, perfetto, method traces). (I05ddd, b/332604449) - הוספנו תג צריכת חשמל למדד השוואה של הגדרת Perfetto. לדוגמה, המערכת מתעדת נקודות מעקב של wakelock. (Icfe44, b/286551983)
- הוספה של ארגומנטים inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr
, אפשר להגדיר ל-false כדי להימנע מדילוג על מעקב אחר שיטות כשמשך הזמן הצפוי עלול לגרום ל-ANR – מומלץ מאוד להימנע מכך בהרצות CI. - נוספה ארגומנטים ניסיוניים של inst
androidx.benchmark.profiling.perfCompare.enable
, צריך להגדיר את הערך הזה כ-true כדי להריץ את תזמון ההשוואה בין שלבי המדידה לבין שלבי היצירה של פרופיל. שימושי למשל להערכת התקורה של מעקב אחר שיטות. (I61fb4, b/329146942)
שינויים ב-API
- שינינו את
TraceSectionMetric.Mode
לכיתה אטומה כדי לאפשר הרחבה עתידית בלי לשבור את הצהרות ה-when המקיפות (I71f7b) - הוספנו את
TraceSectionMetric.Mode.Average
ו-.Count
, וסידרנו מחדש את הארגומנטים כך שהארגומנט הנפוץ יותר (mode) יופיע מוקדם יותר ברשימת הארגומנטים, וכך הפחתנו את הצורך לציין שמות של פרמטרים. (Ibf0b0, b/315830077, b/322167531) - השם של
Metric.getResult
השתנה ל-getMeasurements
כדי להתאים לסוג ההחזרה (I42595)
תיקוני באגים
- תיקון כדי לוודא שבדוחות השוואה נעשה שימוש בפרופילים בסיסיים שנוצרו כשהאפשרות
automaticGenerationDuringBuild
מושבתת (Ic144f, b/333024280) - תיקון של החלפות ברירת המחדל של מאפייני הפלאגין
BaselineProfile
ב-Gradle, כדי לאפשר יצירת פרופיל בסיס ובדיקת ביצועים כשמתאימים אישית סוג build שלnonMinified
או של בדיקת ביצועים. (Ib8f05, b/324837887) - תיקון של שטיפת נתוני מעקב אחר שיטות במבחן ביצועים ברמת המאקרו, כך שנתוני המעקב אחר השיטות יתועדו במלואם ויתאימו לשימוש, גם במכשירים איטיים יותר. (I6349a, b/329904950)
- הפעלת התחלה חסומה ברשומת המעקב של Perfetto כדי לצמצם את הסיכון לנתונים חסרים בתחילת המעקב. התכונה נתמכת רק ב-API מגרסה 33 ואילך. (Ie6e41, b/310760059)
- הוספנו אזהרה כשמשתמשים ב-Android Test Orchestrator במודולים של מדדי ביצועים, כי הפעולה הזו תגרום לכתיבה חוזרת של קובצי JSON של פלט לכל מודול. (Ia1af6, b/286899049)
- איך מגדירים פסיק (,) כמפריד אלפיות כדי לשמור על עקביות בפלט של Studio, בלי להתחשב באזור הזמן המקומי של המכשיר (I3e921, b/313496656)
- מעכשיו יש תמיכה ב-
TraceSectionMetric
בפלחים שנוצרו באמצעותTrace.{begin|end}AsyncSection
. (I91b32, b/300434906) - נוספו תוויות log.w / exception לכל הכישלונות בזיהוי בזמן ההפעלה. השינוי הזה לא משנה את ההתנהגות הנוכחית (כך שחלק מהשגיאות יושלחו, וחלק אחר לא יזהו את האפליקציה בזמן ההפעלה), אלא רק מאפשר להבין אותה טוב יותר. בדרך כלל, אלה שהערך שלהם הוא
Log.w()
ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם פריימים. חריגות מתרחשות כשמתגלה הפעלה, מלבד מידע על תזמון הפריימים (מפלחים של UI/RT). (Id240f, b/329145809) - כדי לצמצם את ההפרעות, צריך לבטל את משימות ה-dexopt ברקע לפני שמריצים את Macrobenchmark. (I989ed)
- הוספנו את המדידה
frameCount
ל-FrameTimingMetric
כדי לעזור לכם לזהות תרחישים שבהם המדידות משתנות בגלל שינוי במספר הפריימים שנוצרו (נוספו אנימציות חדשות, תוקנו בעיות של ביטול תוקף). (I1e5aa) - הבהרנו ש-
frameOverrunMs
הוא המדד המועדף למעקב כשהוא זמין במסמכים, ומסבירנו למה. (I18749, b/329478323)
גרסה 1.3.0-alpha02
20 במרץ 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
משוחרר. גרסת 1.3.0-alpha02 כוללת את ההוספות האלה.
תכונות חדשות
תמיכה ניסיונית ב-R8 ב-microbench באמצעות כללי Proguard מוטמעים. לתשומת ליבכם: התמיכה הזו היא ניסיונית, ונדרשת AGP 8.3 כדי לבצע אופטימיזציה למינימום של בדיקות מודול הספרייה. כדי להפעיל את המינימציה או האופטימיזציה של R8 ב-
build.gradle
של מודול נקודת השוואה, צריך להשתמש בקוד הבא. הפעולה הזו אמורה להוביל לשיפור משמעותי בביצועים, בהתאם לעומס העבודה. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
תיקוני באגים
- תוקנה אזהרה לגבי מעקב אחר שיטות, כך שהיא תופיע בשורה נפרדת מהפלט של מבחן ה-microbench. (I0455c, b/328308833)
גרסה 1.3.0-alpha01
21 בפברואר 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
משוחרר. גרסה 1.3.0-alpha01 כוללת את ההוספות האלה.
שינויים ב-API
- השמות של הפרמטרים הבוליאניים
MicrobenchmarkConfig
שונו כדי להימנע מהמילה המיותרת 'צריך' (Ia8f00, b/303387299) - הוספנו את
BenchmarkRule.measureRepeatedOnMainThread
כדי שבדיקות השוואה של השרשור הראשי (למשל, בדיקות שמשפיעות על תצוגות או על ממשקי המשתמש של Compose) יוכלו להימנע מהפעלת שגיאות ANR, במיוחד במהלך חבילות גדולות ב-CI. (I5c86d) - נוספה
FrameTimingGfxInfoMetric
, הטמעה חלופית ניסיונית שלFrameTimingMetric
עם מדידות שמגיעות ישירות מהפלטפורמה, במקום להיחלץ מהמעקב של Perfetto. (I457cb, b/322232828) - נוספה היכולת לדגום פרופיל ART במהלך חזרות
warmUp
ספציפיות. (I17923) - כמה שינויים ב-API של
TraceSectionMetric
:- הוספה של
Mode.Min
,Mode.Max
- הוספת ארגומנטים של תוויות כדי לשנות את שם הקטע כתוויות של מדדים
- נוסף שם המצב לפלט כדי להבהיר את משמעות המדד
- שינינו את ברירת המחדל לסכום, כי רוב השימוש במדד הזה הוא לאירועים חוזרים. חשוב לשים לב לשינויים האלה בשימוש ב-CI, כי הם עלולים ליצור הפסקות או לשבור את הניתוח. (Ic1e82, b/301892382, b/301955938)
- הוספה של
תיקוני באגים
- הודעת שגיאה משופרת בפלאגין של Gradle בפרופיל הבסיס, כשהמכשיר המנוהל שצוין לא קיים (Idea2b, b/313803289)
- תיקון שאפשר לכלול פרופיל בסיס של ספרייה ב-AAR לפני AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- תוקנה כתובת ה-URL של הפלט של פרופיל הבסיס ופרופיל האתחול בסוף המשימה ליצירה (I802e5, b/313976958)
- שינינו את זמן הקצאת הזמן של מקורות הנתונים כדי לנסות לפתור את הבעיה ב-
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d, b/323601788) - מוסיפים שני ארגומנטים של מכשור כדי לשנות את התנהגות השמטת ה-shader, כדי לעקוף קריסות כשמבצעים בדיקת ביצועים של אפליקציות בלי
ProfileInstaller
1.3:androidx.benchmark.dropShaders.enable=true/false
: אפשר להשתמש בה כדי לדלג על כל השמטת שגיאות בקוד שקשורות לשיפור איכות התמונה (כולל השמטות שגיאות בקוד שקשורות להשקות שלStartupMode.Cold
), במיוחד כשבודקים את הביצועים של אפליקציות שעדיין לא משתמשות ב-profileinstaller 1.3androidx.benchmark.dropShaders.throwOnFailure=true/false
: אפשר להשתמש בו כדי לסבול כשלים בניסיון להסיר שגיאות, למשל כשבודקים אפליקציות ללא profileinstaller 1.3 (I4f573)
- דילוג על מעקב אחר שיטות בשרשור של ממשק המשתמש כשהפעולה צפויה להימשך יותר מכמה שניות, וניפוי של מעקב אחר שיטות כשמתבצעת הטלה. (I6e768)
- הבעיה מתרחשת כששמות הקבצים ארוכים מ-200 תווים, כדי למנוע קריסות לא ברורות בזמן כתיבת קבצים או לאחר עיבוד שלהם. (I4a5ab)
- תוקנה בעיה שבה יכול להיות שפריימים ללא סיומת בתחילת המעקב ובסופו ישויכו יחד, מה שעלול לגרום לדיווח שגוי על פריים אחד ארוך במיוחד. (I39353, b/322232828)
- משתמשים ב-
--skip verification
ב-API מגרסה 30 ואילך כשמתקינים מחדש חבילה ב-API מגרסה 30 עד 33 כדי לנקות את פרופילי ה-ART ב-builds של משתמשים. כך אפשר לעקוף אזהרות של Play Protect שגורמות לכשל בחלק מסוגי המכשירים. (Ic9e36) - משתמשים ב-
am force-stop
כדי לסגור אפליקציות שאינן אפליקציות מערכת, כמו System UI או Launcher. (I5e028) - Macrobenchmark ממתין עכשיו ל-
1 second
כדי שהאפליקציה היעד תנקה פרופיל ART (בעבר הוא חיכה ל-500 ms
). (I85a50, b/316082056) - שיפור השגיאה
FrameTimingMetric
כשלא נוצרים פריימים, ותמיד פלט קישור למעקב אחרי הבעיה כשהניתוח של המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9) - תוקנה קריסה ב-
FrameTimingMetric
שנגרמה מאי-ניתוח של מזהה המסגרת, במיוחד במכשירים מסוימים של יצרני ציוד מקורי. (Ia24bc, b/303823815, b/306235276) - הוספת פרטים נוספים להודעות השגיאה והקלה על הדרישות של הבדיקות ב-
FrameMetrics
. (Iadede)
גרסה 1.2
גרסה 1.2.4
17 באפריל 2024
androidx.benchmark:benchmark-*:1.2.4
משוחרר. גרסת 1.2.4 מכילה את ההוספות האלה.
תיקוני באגים
- תוקנה בעיה שבה לא הוגדר srcset בפרופיל הבקרה בגרסאות של מדדי הביצועים. תיקון גם של
automaticGenerationDuringBuild
בספריות שגורמות לתלות מעגלית. (I28ab7, b/333024280) - משתמשים ב-
am force-stop
כדי לסגור אפליקציות שאינן אפליקציות מערכת, כמו System UI או Launcher. התיקון הזה מתקן קריסה של אמות המידה שלStartupMode.COLD
בגלל השגיאה "Package $package must not be running prior to cold start!" (אסור שהחבילה $package תפעל לפני הפעלה מחדש) כתוצאה מכך שההוצאה משימוש של התהליך לא הושלמה. (I5e028)
גרסה 1.2.3
24 בינואר 2024
androidx.benchmark:benchmark-*:1.2.3
משוחרר. גרסה 1.2.3 מכילה את ההוספות האלה.
תיקוני באגים
- הוסרה החרגה מפלאגין Gradle של פרופיל הבסיס כשגרסת AGP היא 8.3.0 ואילך.
- תיקון להכללת פרופילים בסיסיים של ספריות ב-AAR לפני AGP 8.3.0-alpha15.
גרסה 1.2.2
1 בדצמבר 2023
androidx.benchmark:benchmark-*:1.2.2
משוחרר. גרסה 1.2.2 כוללת את השמירות האלה.
פרופילים Baseline
- ביומני הביצוע יופיע נתיב קובץ הפלט של פרופיל הבסיס כמזהה URI של קובץ מקומי (aosp/2843918, aosp/2853665, b/313976958)
גרסה 1.2.1
15 בנובמבר 2023
androidx.benchmark:benchmark-*:1.2.1
משוחרר. גרסה 1.2.1 מכילה את השמירות האלה.
תכונות חדשות
- שיפרנו את הודעת השגיאה שמופיעה כשמשתמש משבית וריאציות בדיקה (b/307478189)
- נוספו מאפיינים שתומכים בשילוב של ריצות בדיקה של AS (b/309805233), (b/309116324)
גרסה 1.2.0
18 באוקטובר 2023
androidx.benchmark:benchmark-*:1.2.0
משוחרר. גרסה 1.2.0 מכילה את ההוספות האלה.
שינויים חשובים מאז גרסה 1.1.0
פרופילים Baseline
- Plugin חדש ל-Gradle לפרופיל בסיס מאפשר תיעוד אוטומטי של פרופילים בסיסיים והכללתם בתהליך העבודה של הבדיקה וה-build.
BaselineProfileRule.collect
עכשיו יציב, גרסה פשוטה ומודרנית של ממשק ה-API הניסיוני הקודם שלBaselineProfileRule.collectBaselineProfile
- פשוט מציינים את
packageName
ומקדמים את האפליקציה
- פשוט מציינים את
- בספריות שיוצרות פרופילים בסיסיים, עכשיו אפשר לסנן את הכללים שנוצרים בקוד (ארגומנט
BaselineProfileRule.collect
) או בצורה פשוטה יותר בפלאגין של gradle. - תיקונים
- תיקון האיסוף של פרופיל הבסיס ב-Android U+ (Id1392, b/277645214)
Macrobenchmark
- הידור
- עכשיו, הכלי Macrobenchmark מאפס בצורה נכונה את מצב הידור בכל פעם שמתבצע הידור. לשם כך, צריך להתקין מחדש את קובץ ה-APK לפני Android 14. לכן מומלץ מאוד לבצע בדיקות ב-Android מגרסה 14 ואילך אם רוצים לשמור מצב (כמו התחברות של משתמש) במה שנמדד.
- אפשר גם לעקוף את הבעיה הזו על ידי שליטה בנפרד בתהליך הידור האפליקציה, ודילוג על הידור באמצעות
CompilationMode.Ignore()
או ארגומנט של הטמעת מכשירי מעקב.
ארגומנטים של Instrumentation
- תמיכה בארגומנט של מכשיר המדידה
androidx.benchmark.dryRunMode.enable
(כבר זמין ב-microbenchmark) להרצות אימות מהירות יותר (למשל, כשיוצרים את מדד הביצועים או לפני שליחת הקוד לבדיקה) - תמיכה ב-
androidx.benchmark.profiling.mode=StackSampling
וב-MethodTracing
. - הוספנו את
androidx.benchmark.enabledRules
כדי לאפשר סינון של פרופיל בסיס בסביבת זמן ריצה לעומת בדיקות של כללי מאקרו-בדיקות - נוספה הארגומנט
androidx.benchmark.perfettoSdkTracing.enable
כדי להפעיל מעקב באמצעות tracing-perfetto, למשל Compose recomposition tracing. חשוב לזכור שבשימוש עםStartupMode.COLD
, התזמון יושפע באופן משמעותי כי ספריית המעקב נטענת ומופעל במהלך הפעלת האפליקציה.
- תמיכה בארגומנט של מכשיר המדידה
הדרישות
- כדי להפעיל את האפשרויות 'צילום פרופיל' או 'איפוס פרופיל' וניקוי מטמון של שגיאות שרטוט, נדרש עכשיו ב-Macrobenchmark
ProfileInstaller
מגרסה 1.3.0 ואילך באפליקציית היעד.
- כדי להפעיל את האפשרויות 'צילום פרופיל' או 'איפוס פרופיל' וניקוי מטמון של שגיאות שרטוט, נדרש עכשיו ב-Macrobenchmark
Metrics API ניסיוניים חדשים
- נוספה פונקציה ניסיונית
TraceSectionMetric
שמאפשרת לחלץ תזמון פשוט מבלוקtrace("") {}
באפליקציה, או TraceMetric שמאפשרת לנצל את יכולת השאילתות המלאה של PerfettoTraceProcessor
. - נוספה
PowerMetric
ניסיונית כדי לתעד את נתוני צריכת החשמל - נוספה תכונה ניסיונית
MemoryCountersMetric
לספירת שגיאות בדפים - הוספנו ממשק API ניסיוני של
PerfettoTraceProcessor
, שמשמש באופן פנימי לחילוץ מדדים ממעקב אחר אירועים במערכת (נקרא גם מעקב אחר אירועים ב-Perfetto)
- נוספה פונקציה ניסיונית
תיקונים
- תוקנו קריסות בזמן התקנה או חילוץ של פרופילים מאפליקציה שמותקנת מכמה קובצי APK (למשל, מ-App Bundle).
- תוקנה בעיה שבה
FrameTimingMetric
התעלם מסגרות עם מזהי מסגרות לא עקביים (בדרך כלל, מסגרות במהלך תנודות ב-API 31 ואילך) (I747d2, b/279088460) - תוקנו שגיאות ניתוח בנתוני מעקב (trace) גדולים מ-64MB (Ief831, b/269949822)
- שגיאות בהירות יותר כשקובץ האימג' של מערכת ההפעלה של המכשיר (במיוחד של המהדמ) לא מוגדר כראוי למעקב או ל-compilation
- דילוג על בדיקת רמת הטעינה של הסוללה במכשירים ללא סוללה (מיקרו ומאקרו)
- שיפור בפלט הקבצים, עם שגיאות ברורות יותר לתיקיות פלט לא חוקיות ועם ברירות מחדל בטוחות יותר
- שיפור היציבות של
StartupMode.COLD
על ידי ביטול עקבי של מטמון השיזרים (שמוצג גם דרךMacrobenchmarkScope.dropShaderCache
) - תוקנה חלופה ל-leanback עבור
startActivityAndWait
.
Microbenchmark
- תכונות
- ניתוח הפרופיל הועבר לשלב נפרד, אחרי מדדים אחרים, כך שרצת בדיקה אחת יכולה להציג גם תוצאות מדויקות של תזמון וגם תוצאות של ניתוח פרופיל.
- ממשקי API ניסיוניים
- הוספנו ממשק API ניסיוני של
MicrobenchmarkConfig
להגדרת מדדים מותאמים אישית ולהגדרת מעקב ויצירת פרופילים. אפשר להשתמש בהם כדי לתעד מעקב אחר שיטות או כדי לתעד נקודות מעקב (אבל חשוב לזכור את העלויות הנלוות של המעקב). - נוספו ממשקי API ניסיוניים לצורך שליטה ב-
BenchmarkState
בנפרד מ-BenchmarkRule
, ללא JUnit - הוספנו רשומה ניסיונית של
PerfettoTrace
כדי לאפשר תיעוד של נתוני Perfetto, עם הגדרה מותאמת אישית, בנפרד מממשקי ה-API למדדי ביצועים.
- הוספנו ממשק API ניסיוני של
- תיקונים
- פתרון לבעיה של מרחבי ריק חסרים בהתחלה של פלט של בדיקת ביצועים ב-Android Studio.
- תוקנה בעיה שבה יכול להיות שלא ניתן יהיה להדפיס אזהרות בפלט של מדדי הביצועים של Android Studio.
- תוקנה קריסה של
SampledProfiling
ב-Android 13 (API 33) ואילך. - שיפור משמעותי בביצועים של
dryRunMode
על ידי דילוג עלIsolationActivity
ועל מעקב Perfetto (מצב ריצה ללא הפעלה מהיר פי 10 בגרסאות ישנות יותר של מערכת ההפעלה).
גרסה 1.2.0-rc02
6 באוקטובר 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
משוחרר. גרסה 1.2.0-rc02 כוללת את ההוספות האלה.
תיקוני באגים
- תיקון הפלט של קובץ Benchmark כך שלא יגרום יותר לשיבושים בהעתקת קובצי הפלאגין של
BaselineProfile
. הקבצים נוצרו והועתק מהמכשיר, אבל השם שלהם השתנה כך שהפלאגין של gradle לא יראה אותם. (I8dbcc, b/303034735, b/296453339) - הבהרה לגבי הודעות השגיאה של טעינה של
tracing-perfetto
כשמזריקים ממודול של macrobenchmark לאפליקציית היעד.
גרסה 1.2.0-rc01
20 בספטמבר 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
משוחרר. גרסה 1.2.0-rc01 כוללת את ההוספות האלה.
תיקוני באגים
- עכשיו מתרחשת זריקה של חריגה (עם הוראות לתיקון) כשהמעקב של Perfetto SDK נכשל בהפעלה ב-Benchmark. (I6c878, b/286228781)
- תיקון קריסה של OOM במהלך המרה של מעקב אחר שיטות ART לפורמט של perfetto. (I106bd, b/296905344)
- (Macrobenchmark) הבהרנו את התווית של מעקב אחר שיטות כשהיא מקושרת בפלט הבדיקה של Studio, ותיקנו את שמות הקובצים של מעקב אחר שיטות כך שיהיו ייחודיים במכשיר או במארח, כדי שלא יתבצע כתיבה מחדש שלהם כשמריצים יותר מבדיקה אחת. (I08e65, b/285912360)
- מוודאת שהמכשיר פעיל בזמן צילום פרופיל בסיס. (I503fc)
גרסה 1.2.0-beta05
30 באוגוסט 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
משוחרר. גרסה 1.2.0-beta05 כוללת את השמירות האלה.
תכונות חדשות
- פלאגין Baseline Profile Gradle תומך עכשיו ב-Android Gradle Plugin 8.3. (aosp/2715214)
גרסה 1.2.0-beta04
23 באוגוסט 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
משוחרר. גרסה 1.2.0-beta04 כוללת את ההצהרות האלה.
תכונות חדשות
- פלאגין Baseline Profiles ל-Gradle תומך עכשיו ב-Android Gradle Plugin 8.3. (aosp/2715214)
תיקוני באגים
- כדי לתקן כשלים בכתיבת קבצים, בהעברת קבצים ובשליפה שלהם (במיוחד קבצים מבדיקות עם פרמטרים), צריך לבצע סינון נוסף של שמות קובצי הפלט, ולהימנע משימוש בתווים '=' ו-':' בשמות קובצי הפלט. (I759d8)
גרסה 1.2.0-beta03
9 באוגוסט 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
משוחרר. גרסה 1.2.0-beta03 מכילה את ההצהרות האלה על ביצוע שינויים.
שינויים ב-API
- הוספת ארגומנט למסנן
TraceSectionMetric
כך שיחול רק על חבילת היעד, מופעל כברירת מחדל (Ia219b, b/292208786)
תיקוני באגים
- שינינו את השם של הארגומנט של המדידה
fullTracing.enable
ל-perfettoSdkTracing.enable
כדי לשמור על עקביות עם שם הארטיפקט והפניות אחרות.fullTracing.enable
ימשיך לפעול כגיבוי. (I7cc00) - נקודות מעקב פנימיות בספריית מדדי הביצועים (כולל מעקב אחר לולאות או שלבים של מיקרו-מדדי ביצועים) יופיעו עכשיו בתצוגת המעקב אחרי המערכת ב-Studio, ויוצגו ב-Perfetto מתחת לתהליך הנכון. (I6b2e7, b/293510459)
- הוסר השגיאה NOT-PROFILEABLE ב-macrobenchmark ב-API 31 ואילך, והבדיקה של האפשרות ליצירת פרופיל הושמטה במכשירים עם הרשאת root ב-eng/userdebug. (I2abac, b/291722507)
- כשמשתמשים באופטימיזציות של פריסה ב-Dex, כללי הפרופיל של האפליקציה שמופיעה בזמן ההפעלה נחשבים עכשיו גם לכללי פרופיל בסיסיים. (aosp/2684246, b/293889189)
גרסה 1.2.0-beta02
26 ביולי 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
משוחרר. גרסה 1.2.0-beta02 מכילה את ההצהרות האלה.
שינויים ב-API
- נוספו ממשקי API ניסיוניים למדדים מותאמים אישית ולהגדרות של מיקרו-בנק (למשל, פרופיל וניתוח נתונים). (I86101, b/291820856)
תיקוני באגים
- דיווח על שגיאה ב-macrobench כשמערכת ההפעלה מוגדרת באופן שגוי למעקב, כפי שתוקנה לאחרונה במהדמרים של API 26/28 ARM64. (I0a328, b/282191686)
- הוספנו פרטים לגבי כשל איפוס הידור כדי להציע לעדכן את הסימולטור, כי בחלק מהסימולטורים הבעיה הזו נפתרה לאחרונה. (I8c815, b/282191686)
- הופכים את
androidx.test.uiautomator:uiautomator:2.2.0
ל-api
במקום ל-implementation
. (I1981e)
גרסה 1.2.0-beta01
18 ביולי 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
משוחרר. גרסה 1.2.0-beta01 כוללת את ההצהרות האלה.
תיקוני באגים
- תיקון אזהרות שנמחקות לפעמים בפלט של Benchmark ב-Studio, ופתרון לבעיה של רווחים לבנים בתחילת הפלט של Benchmark שלא מוצגים ב-Studio (Ia61d0, b/227205461, b/286306579, b/285912360)
- תגובה תוקנה עבור
FrameTimingMetric
. השם של מדד המשנה הואframeDurationCpuMs
. (Ib097f, b/288830934).
גרסה 1.2.0-alpha16
21 ביוני 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
משוחרר. גרסה 1.2.0-alpha16 מכילה את ההצהרות האלה.
שינויים ב-API
- השם של ממשק ה-API
BaselineProfileRule.collectBaselineProfile()
השתנה ל-BaselineProfileRule.collect()
. (I4b665)
תיקוני באגים
- תמיכה ב-Macrobenchmark עבור
androidx.benchmark.profiling.mode = MethodTracing
. (I7ad37, b/285912360) - יצירת הפרופיל של מיקרו-בדיקות הביצועים הועברה לשלב נפרד, כך שהיא מתבצעת ברצף אחרי המדידה, במקום להחליף אותה. קטעי המעקב של
MethodTracing
נכללים עכשיו גם בנתוני המעקב של Perfetto שצולמו, אם הם קיימים. (I9f657, b/285014599) - מוסיפים מדידת ספירה ל-
TraceSectionMetric
באמצעותMode.Sum
. (Ic121a, b/264398606)
גרסה 1.2.0-alpha15
7 ביוני 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
משוחרר. גרסה 1.2.0-alpha15 מכילה את ההצהרות האלה.
תכונות חדשות
- נוספה פונקציית
MemoryUsageMetric
ניסיונית למעקב אחר השימוש בזיכרון של יישום יעד. (I56453, b/133147125, b/281749311) - הוספת תמיכה בהגדרות Perfetto בהתאמה אישית מלאה באמצעות
PerfettoTrace.record
(If9d75, b/280460183) - הוספת נכס כדי לדלג על יצירת פרופיל בסיס. שימוש:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020)
שינויים ב-API
- ממשק ה-API של
collectBaselineProfile
יוצר תמיד פרופילים בסיסיים יציבים. ממשק ה-APIcollectStableBaselineProfile
הוסר, ובמקום זאת צריך להשתמש ב-collectBaselineProfile
. (I17262, b/281078707) - שינינו את הארגומנט
filterPredicate
שלBaselineProfileRule
לערך שאינו null, עם ערך ברירת מחדל שווה ערך, כדי שהתנהגות ברירת המחדל של המסנן תהיה ברורה יותר במסמכים. (I3816e)
תיקוני באגים
- כדי לשפר משמעותית את הביצועים, כדאי להשבית את
IsolationActivity
ואת המעקב של Perfetto ב-dryRunMode
, כי הם היוו את רוב זמן הריצה. (Ie4f7d) - תמיכה במדגם של סטאק הקריאות בבדיקות מאקרו-ביצועים באמצעות ארגומנטים של בדיקת מכשור
androidx.benchmark.profiling.mode=StackSampling
ו-androidx.benchmark.profiling.sampleFrequency
. (I1d13b, b/282188489) - תיקון קריסה כשמשחררים שיבושים ב-Android U (API 34), וגם במהדמרים. (I031ca, b/274314544)
גרסה 1.2.0-alpha14
3 במאי 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
משוחרר. גרסה 1.2.0-alpha14 מכילה את ההצהרות האלה.
תיקוני באגים
- תיקון של
FrameTimingMetric
שמתעלם ממסגרות עם מזהי מסגרות לא עקביים. כתוצאה מכך, חלק מהאנימציות בגרסאות הפלטפורמה האחרונות (API 31 ואילך) יתעלמו מפריימים רבים בזמן שהאנימציה שלRenderThread
מתבצעת (למשל, במהלך תנודות). (I747d2, b/279088460) - תוקנה בעיה בניתוח של מעבד המעקב לגבי מעקבים גדולים מ-64MB. (Ief831, b/269949822)
- תוקנה בעיה ביצירת פרופיל בסיס ב-Android U בגלל הפלט השונה של הפקודה
pm dump-profiles
. (Id1392, b/277645214) - תיקון הסקריפט לנעילת שעון ה-GPU כדי להשוות בין מחרוזות בצורה נכונה (I53e54, b/213935715)
גרסה 1.2.0-alpha13
5 באפריל 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
משוחרר. גרסה 1.2.0-alpha13 מכילה את ההוספות האלה.
שינויים ב-API
- הוספנו פרמטר של סוג פרופיל כשיוצרים פרופילים בסיסיים, כדי לתמוך בתכונה הקרובה של פרופיל סטארט-אפ (Ie20d7, b/275093123)
- הוספנו ממשק API ניסיוני חדש מסוג
TraceMetric
להגדרת מדדים מותאמים אישית לחלוטין על סמך התוכן של מעקב Perfetto. (I4ce31, b/219851406) - הוספת מדד ניסיוני כדי לקבוע את מספר שגיאות הדף במהלך בדיקת ביצועים. (I48db0)
גרסה 1.2.0-alpha12
22 במרץ 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
משוחרר. גרסה 1.2.0-alpha12 מכילה את ההוספות האלה.
תכונות חדשות
- הפלאגין החדש של פרופיל הבסיס ב-Gradle זמין עכשיו בגרסת אלפא. הוא מאפשר ליצור פרופיל בסיס בקלות רבה יותר, ומפשט את תהליך העבודה של המפתחים.
שינויים ב-API
- הסרנו את התמיכה במעקב של Perfetto ב-API 21 וב-API 22, כולל ב-Microbenchmarks ובממשקי ה-API הניסיוניים של
PerfettoTrace
. לפני הגרסה הזו, החיבורים שלUiAutomation
לא היו מהימנים במכשירים מסוימים. (I78e8c) - הוספנו ממשק API ניסיוני ציבורי ל-
PerfettoTraceProcessor
כדי לאפשר ניתוח של תוכן המעקב. זהו צעד נוסף לקראת מדדים מותאמים אישית לחלוטין שמבוססים על נתוני המעקב של Perfetto. (I2659e, b/219851406)
גרסה 1.2.0-alpha11
8 במרץ 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
משוחרר. גרסה 1.2.0-alpha11 מכילה את ההצהרות האלה.
תיקוני באגים
- תוקנו קריסות ב-
MacrobenchmarkRule
וב-BaselineProfileRule
במהלך התקנה מחדש או חילוץ פרופילים מחבילת אפליקציות עם כמה קובצי APK. (I0d8c8, b/270587281)
גרסה 1.2.0-alpha10
22 בפברואר 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
משוחרר. גרסה 1.2.0-alpha10 מכילה את ההצהרות האלה.
תכונות חדשות
- ב-Android מגרסה 14 ואילך, Macrobenchmark כבר לא מתקין מחדש אפליקציות יעד כדי לאפס את מצב הידור, הודות לתכונה חדשה בפלטפורמה. בעבר היה צורך במכשיר עם הרשאת root, או לטפל בהסרה של כל מצב האפליקציה (למשל, התחברות של משתמש) לפני כל הרצת מדד ביצועים. (I9b08c, b/249143766)
תיקוני באגים
- תיקון
DryRunMode
כדי שהתוכנה לא תקרוס יותר עם פרופיל ריק, בגלל דילוג על הידור. במקום זאת, הוא מפעיל חזרה אחת ומחלץ את הפרופיל כדי לוודא שמשהו מתועד. (I2f05d, b/266403227) - תיקון קריסה של
PowerMetric
בזמן בדיקה של נוכחות של powerstats ברמות API ישנות. (5faaf9, b/268253898)
גרסה 1.2.0-alpha09
11 בינואר 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
משוחרר. גרסה 1.2.0-alpha09 מכילה את ההצהרות האלה.
תיקוני באגים
- הפעלנו העברה של
None
לארגומנט של המדידהandroidx.benchmark.enabledRules
כדי להשבית את כל יצירת הפרופילים של אמות המידה או של הבסיס. (I3d7fd, b/258671856) - תיקון של תיעוד
PerfettoTrace
במודולים של אפליקציות (כלומר, חבילות APK לבדיקה שלא כוללות כלי למדידה עצמית) (I12cfc) - תוקנה הסדר של הארגומנטים של adb pull בפרופיל הבסיס בתוצר של Studio (I958d1, b/261781624)
- Arm emulator api 33 מזוהה עכשיו כראוי כאשר מנסים להריץ בדיקת ביצועים ברמת המאקרו, והאזהרה תודפס בצורה נכונה. (69133b,b/262209591)
- דילוג על בדיקת רמת הטעינה של הסוללה במכשירים ללא סוללה ב-Macrobenchmark (fe4114, b/232448937)
גרסה 1.2.0-alpha08
7 בדצמבר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
משוחרר. גרסה 1.2.0-alpha08 מכילה את ההוספות האלה.
שינויים ב-API
- נוספו ממשקי API חדשים וניסיוניים,
PerfettoTrace.record {}
ו-PerfettoTraceRule
, כדי לתעד עקבות של Perfetto (שנקראים גם 'עקבות מערכת') כחלק מבדיקה, כדי לבדוק את ההתנהגות והביצועים של הבדיקה. (I3ba16) - עכשיו אפשר להשתמש ב-
BaselineProfileRule
עם תנאי סינון במקום עם רשימה של קידומות של חבילות. כך לבדיקה תהיה שליטה מלאה על הסינון. (I93240) - מוסיפים API ניסיוני
BaselineProfileRule.collectStableBaselineProfile
שממתין עד שפרופיל בסיס יהיה יציב במשך N חזרות. (I923f3) - נוספה האפשרות לציין תחילית של שם קובץ פלט כשיוצרים פרופילים בסיסיים באמצעות
BaselineProfileRule
. (I7b59f, b/260318655)
תיקוני באגים
- שיפור הבטיחות של כתיבת פלט של קובץ, כדי למנוע מצב שבו קובצי פלט לא נכתבים או מצורפים ללא התראה, במיוחד ב-API 21/22. (If8c44, b/227510293)
- מתקנים את פלט המעקב של
simpleperf
כדי ליצור את הקובץ ולמקם אותו בצורה נכונה. הפעולה הזו אמורה לפתור גם בעיות כלליות יותר שבהן gradle לא מצליח למשוך קובץ. (I12a1c, b/259424099) - שיפור הודעת השגיאה של profileinstaller שמודפסת כשהגרסה של profileinstaller ישנה מדי. עכשיו מוצגת הודעת עדכון לגרסה של profileinstaller (1.2.1) למדידת פרופילים בסיסיים ב-API 31 עד 33, במקום הודעת אי-תמיכה. (Ia517f, b/253519888)
- תיקון כמה כשלים בפקודות מעטפת בהודעת השגיאה Print needed API <=23, כולל כשלים בהגדרת הקלטה בינארית של perfetto וכשלים בהקלטת נתוני מעקב (Ib6b87, b/258863685)
- מיון אוטומטי של כללי הפרופיל שנוצרו כדי לצמצם את מספר השינויים כשהם משתנים לאורך זמן (כשמבצעים צ'ק-אין של כללי הפרופיל במערכת בקרת הגרסאות). (Ie2509)
- תוקנה קריסה בגרסאות build ללא הרשאת root בגרסאות Android מתחת ל-13 (API 33) עם ההודעה
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
(I6c245, b/259508183)
בעיות מוכרות
- MacrobenchmarkScope.dropShaderCache()
עלול לקרוס בגלל רישום שידור חסר במניפסט של הכלי להתקנת פרופילים, שעדיין לא פורסם. (I5c728, b/258619948) כדי לעקוף את הבעיה ב-profileinstaller:1.3.0-alpha02
, מוסיפים את הקטע הבא לקובץ AndroidManifest.xml של האפליקציה (לא של אמת המידה):
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
גרסה 1.2.0-alpha07
9 בנובמבר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07
משוחרר. גרסה 1.2.0-alpha07 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספנו את ממשק ה-API
PowerMetric
למדידת אנרגיה וחשמל בבדיקות ביצועים ברמת המאקרו. (Ife601, b/220183779) - תוקנה
MacrobenchmarkScope.dropShaderCache()
כדי למחוק את מטמון השיזוע בפועל. כך אפשר להסיר כ-20 אלפיות השנייה של רעש מנתוני השוואה (benchmarks) שלStartupMode.COLD
, כי עכשיו ה-shaders נמחקים באופן עקבי בכל חזרה (iteration). בעבר, הידור שלPartial
באמצעות איטרציות של התחממות דיווח על מספרים מהירים באופן שגוי, כי סביר יותר שהאחסון במטמון של שגיאות יתרחש במהלך התחממות. כדי לבצע את התיקון הזה, צריך מכשיר עם הרשאת root או להשתמש ב-profileinstaller:1.3.0-alpha02
באפליקציית היעד. לשינויים ב-API של ספרייתProfileInstaller
, אפשר לעיין בדף ProfileInstaller 1.30-alpha02. (Ia5171, b/231455742) - הוספנו את
TraceSectionMode("label", Mode.Sum)
, שמאפשר למדוד את משך הזמן הכולל שחלף במספר קטעי מעקב עם אותה תווית. לדוגמה,TraceSectionMetric("inflate", Mode.Sum)
ידווח על המדדinflateMs
לגבי משך הזמן הכולל במבחן הביצועים ברמת המאקרו שהושקע באינפלציה. כמו כן, הסרנו את הדרישה ל-API 29, כיTraceSectionMetric
פועל בשילוב עםandroidx.tracing.Trace
חזרה לרמות API נמוכות יותר, באמצעות השימוש ב-forceEnableAppTracing
באפליקציית היעד. (Id7b68, b/231455742)
תיקוני באגים
- שיפור הבטיחות של כל הפקודות הפנימיות של המעטפת על ידי אימות כל הפלט או השגיאות. (I5984d, b/255402908, b/253094958)
- מציינים את המכשיר בפקודה
adb pull
של פרופיל הבסיס, כדי שאפשר יהיה להעתיק בקלות את פקודת ה-pull אם יש כמה מכשירים מחוברים (עד אמולטור אחד) (I6ac6c, b/223359380) - הוספת שגיאה אם קובץ ה-apk לבדיקה של macrobenchmark לא מוגדר ככלי למדידת ביצועים עצמאי. השגיאה הזו מונעת ביצוע של בדיקות ביצועים ברמת המאקרו מתוך התהליך של אפליקציית היעד. בתהליך, macrobench לא יוכל לקמפל/להרוג/להפעיל מחדש את האפליקציה או לשלוט בהרשאות שלו (I4279b)
- תוקנה בעיה ב-
measureRepeated()
שבהStartupMode.COLD
לא הפסיק את תהליך היעד אחריsetupBlock
. עכשיו, אינטראקציה שלsetupBlock
עם האפליקציה לא תגרום להפעלה של תהליך האפליקציה, ולא תתקבל מדידה לא חוקית של הפעלה מחדש. (I8ebb7)
גרסה 1.2.0-alpha06
24 באוקטובר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
משוחרר. גרסה 1.2.0-alpha06 מכילה את ההצהרות האלה.
שינויים ב-API
- לא צריך יותר הרשאת root כדי להשתמש ב-
BaselineProfileRule
ב-Android 13 (API 33), והיא כבר לא נחשבת לניסיונית. (Ie0a7d, b/250083467, b/253094958)- השינוי הזה גם מתקן את האופן שבו פרופילים מאפליקציה נמחקים מהדיסק במכשירים ללא הרשאת root, אבל נדרש עדכון של יחסי התלות של profileinstaller באפליקציית היעד.
- כדי להשתמש ב-
BaselineProfileRule
או ב-CompilationMode.Partial(warmupIterations)
במכשיר ללא הרשאת root, צריך גם לעדכן את אפליקציית היעד כך שתשתמש ב-androidx.profileinstaller.profileinstaller:1.3.0-alpha01
. כך אפשר לשטוף את הפרופיל בדיסק בצורה נכונה, כדי שניתן יהיה לקמפל או לחלץ אותו.
תיקוני באגים
- תיקון קריסה של
SampledProfiling
ב-API מגרסה 33 ואילך. (I40743, b/236109374)
גרסה 1.2.0-alpha05
5 באוקטובר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
משוחרר. גרסה 1.2.0-alpha05 מכילה את ההוספות האלה.
תיקוני באגים
- תיקון של פירוט המסגרות ב'צפייה בנתוני המעקב של המערכת' ב-Studio עבור מעקבים שתועדו במדדי ביצועים (I3f3ae, b/239677443)
- תיקון
FrameTimingMetric
כך שיציין ש-FrameOverrun
מחייב API 31 במקום 29 (I716dd, b/220702554) - מגדירים את המחזור ב-
BaselineProfileRule
, ומעיפים שגיאה ברורה אם חבילת היעד לא מותקנת (הפעולה הזו כבר בוצעה עבור MacrobenchmarkRule). (Ic09a3, b/227991471)
גרסה 1.2.0-alpha04
21 בספטמבר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
משוחרר. גרסה 1.2.0-alpha04 מכילה את ההוספות האלה.
תכונות חדשות
נוספה תמיכה בארגומנט של מכשיר
dryRunMode.enable
למדד הביצועים ברמת המאקרו (כבר זמין ברמת המיקרו) כדי לאפשר פיתוח מקומי מהיר יותר ואימות של אוטומציה של אפליקציות (למשל, בשלב של שליחת הקוד לבדיקה). הפקודה הזו משנה את מספר החזרות ל-1, מדלגת על הידור, משביתה את כל שגיאות התצורה ומשביתה את הפלט של קובץ ה-JSON של המדידה. (Ib51b4, b/175149857)בשורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
בקובץ build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
תיקוני באגים
- תוקן
StartupTimingMetric
כך שלא יהיה צורך להפעיל פעילויות למעקב דרךMacrobenchmarkScope.startActivityAndWait()
. המשמעות היא שהמדד יכול לזהות הפעלות, למשל, מהתראות, מ-Context.startActivity()
, מהניווט מבוסס-הפעילות באפליקציה או מפקודות מעטפת. (Ia2de6, b/245414235) - תיקון באג שבו
startActivityAndWait
יפוג הזמן שלו בהמתנה להשלמת ההפעלה במהדמנים, על ידי הפחתת החומרה של זיהוי הפריימים. (Ibe2c6, b/244594339, b/228946895)
גרסה 1.2.0-alpha03
7 בספטמבר 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
משוחרר. גרסה 1.2.0-alpha03 כוללת את ההוספות האלה.
תכונות חדשות
- הוספנו ממשקי API ניסיוניים לשימוש ב-
BenchmarkState
בנפרד, ללא קשר ל-BenchmarkRule
או ל-JUnit4
. (Id478f, b/228489614)
תיקוני באגים
- הוספנו חלופה ל-Leanback עבור
startActivityAndWait
. (01ed77, b/242899915)
גרסה 1.2.0-alpha02
24 באוגוסט 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
משוחרר. גרסה 1.2.0-alpha02 מכילה את ההוספות האלה.
שינויים ב-API
- ברירת המחדל היא
am force stop
עבורMacrobenchmarkScope.killProcess()
, גם כשיש גישה ל-root, מלבד במהלך יצירת פרופיל Baseline. אפשר לשנות את הערך הזה באמצעות ארגומנט בוליאני אופציונלי. (02cce9, b/241214097)
תיקוני באגים
- תמיכה ביצירת פרופיל בסיס לאפליקציות מערכת. (I900b8, b/241214097)
- תמיכה בבדיקת מדדי צריכת החשמל של ODPM במכשירים ללא הרשאת root. (a38c78, b/229623230)
גרסה 1.2.0-alpha01
27 ביולי 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
משוחרר. גרסה 1.2.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות
- רכיב חדש של tracing-perfetto-common שמאפשר לכלים להפעיל מעקב של Perfetto SDK באפליקציה שמציגה אותו (I2cc7f)
נוספה ארגומנטים של מכשור
androidx.benchmark.enabledRules
כדי לאפשר סינון של הפעלות של מבחני ביצועים ברמת המאקרו רק למבחני ביצועים, או רק ליצירת פרופיל בסיס. מעבירים את הערך 'Macrobenchmark' או 'BaselineProfile' כדי להריץ רק סוג אחד של בדיקה, למשל כשמפעילים רק יצירתBaselineProfiles
באמולטור. אפשר גם להשתמש ברשימת ערכים מופרדים בפסיקים. (I756b7, b/230371561)לדוגמה, בקובץ build.gradle של ה-macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
או משורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
שינויים ב-API
- נוספה
PowerMetric
חדשה למדידת משימות של אנרגיה וחשמל במדדי ביצועים. (I9f39b, b/220183779) - נוספה דרך חדשה להדרכה
CompilationMode.Ignore
כדי לדלג על איפוס הפרופיל וההדרכה. (Ibbcf8, b/230453509) - נוספו פרמטרים חדשים ל-
BaselineProfileRule#collectBaselineProfile
כדי לסנן את קובץ הפלט לפי שמות חבילות (If7338, b/220146561) - מאפשרת למפתחים לרוקן את המכשיר כדי למדוד את ניהול צריכת האנרגיה. (I6a6cb)
- הוספנו את היכולת לנקות את מטמון השיזרים ב-
MacrobenchmarkScope
. (I32122) - מאפשרת למפתח להגדיר את תצוגת סוג המדד ולפרט את קטגוריות המשנה הרצויות. (I810c9)
- בעבר, אם הבדיקה בוצעה במכשיר שלא נתמך, הופיעה הודעת השגיאה
UnsupportedOperationException
. עכשיו השגיאה UOE מתרחשת רק אם משתמשים במדד במכשיר שאינו נתמך (למשל:PowerMetric.configure
). (I5cf20, b/227229375) - נוספו המדדים
TotalPowerMetric
ו-TotalEnergyMetric
למדידת הכוח והאנרגיה הכוללים בכל קטגוריית מערכת בבדיקות המאקרו-מעבד. (I3b26b, b/224557371)
תיקוני באגים
- תוקנה בעיה שבה שיטות מורכבות לא אופסו כראוי בין כל בדיקת ביצועים ברמת המאקרו בגרסאות build לא מותאמות ל-root. לצערנו, כדי לעשות זאת צריך להתקין מחדש את קובץ ה-apk בכל חזרה על התהליך, וכך ינוקו נתוני האפליקציה בכל בדיקת ביצועים ברמת המאקרו. (I31c74, b/230665435)
- תיקון קריסה של הקלטת המעקב ב-API 21/22 (If7fd6, b/227509388, b/227510293, b/227512788)
- שיפרנו את זיהוי השלמת ההפעלה של הפעילות כדי לפתור את החריגה 'לא ניתן לקרוא מדדים' בבדיקות המאקרו-ביצועים של סטארט-אפים. (Ia517c)
גרסה 1.1.1
גרסה 1.1.1
9 בנובמבר 2022
androidx.benchmark:benchmark-*:1.1.1
משוחרר. גרסה 1.1.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון בעיה ב-
android.system.ErrnoException: open failed: EACCES
שעלולה להתרחש בחלק ממכשירי Android11 (API 30 ואילך). זוהי תיקון שנבחר מתוך1.2.0-alpha01
. (aosp/2072249)
גרסה 1.1.0
גרסה 1.1.0
15 ביוני 2022
androidx.benchmark:benchmark-*:1.1.0
משוחרר. גרסה 1.1.0 כוללת את השמירות האלה.
- הגרסה הזו זהה לגרסה
androidx.benchmark:benchmark-*:1.1.0-rc03
.
שינויים חשובים מאז גרסה 1.0.0
התמיכה ב-Jetpack Macrobenchmarks מאפשרת למדוד אינטראקציות של האפליקציה כולה, כמו הפעלה וגלילה, ומספקת יכולת לתעד עקבות ולמדוד קטעי עקבות.
תמיכה בפרופילים Baseline
CompilationMode.Partial
כדי למדוד את היעילות של פרופילים בסיסיים.@BaselineProfileRule
כדי ליצור באופן אוטומטי פרופילי Baseline לתהליך משתמש קריטי נתון.
תמיכה במדדי הקצאה ובפרופיל במהלך הרצות של Microbenchmark.
גרסה 1.1.0-rc03
1 ביוני 2022
androidx.benchmark:benchmark-*:1.1.0-rc03
משוחרר. גרסה 1.1.0-rc03 כוללת את ההוספות האלה.
תיקוני באגים
הימנעו מהתקנה מחדש של חבילת היעד בכל מחזור של בדיקת הביצועים. ( aosp/2093027, b/231976084)
מסירים את העיכוב
300ms
מהחשבוןpressHome()
. (aosp/2086030, b/231322975)שיפור מהירות המחזור של Macrobenchmark על ידי אופטימיזציה של פקודות המעטפת שנעשה בהן שימוש ברקע. (aosp/2086023, b/231323582)
תמיכה במכשירים בניהול Gradle בזמן יצירת פרופילים בסיסיים באמצעות Macrobenchmarks. (aosp/2062228, b/228926421)
גרסה 1.1.0-rc02
11 במאי 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
משוחרר. גרסה 1.1.0-rc02 כוללת את השמירות האלה.
- חשוב לדעת שהגרסה הזו כוללת שינוי בהתנהגות, כי עכשיו האפליקציות מותקנות מחדש באופן מלא בין כל נקודת השוואה כדי להבטיח מדידות מדויקות.
תיקוני באגים/שינויים בהתנהגות
תוקנה בעיה שבה הידור האפליקציה לא אופס כראוי בין בדיקות ביצועים ברמת המאקרו, ולא אופס בכלל בגרסאות build ללא הרשאת root. כך ניתן לפתור מקרים רבים שבהם הפעלת כמה בדיקות תגרום לכך של-
CompilationMode
תהיה השפעה קטנה או אפסית על המדידות. כדי לעקוף את הבעיה הזו, אפליקציית היעד מתקינה מחדש באופן מלא כל שיטת בדיקה, וכך נתוני האפליקציה יימחקו בין כל בדיקת מאקרו-ביצועים. (I31c74, b/230665435)מכיוון שהפעולה הזו מונעת מאפליקציות להגדיר מצב לפני הבדיקות, עכשיו אפשר לדלג על הידור או התקנה מחדש כדי לעקוף את הבעיה הזו. לדוגמה, אפשר לבצע הידור מלא של היעד באמצעות פקודת מעטפת
cmd package compile -f -m speed <package>
, ואז לעקוף את שלב הידור ה-macrobenchmark.לדוגמה, בקובץ build.gradle של ה-macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
או משורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
הוספנו את הארגומנט
androidx.benchmark.enabledRules
לכלי למדידה, כדי שאפשר יהיה לשתף מודול בין בדיקות מאקרו-ביצועים לבין בדיקות ליצירת פרופיל בסיס. מעבירים את הערך 'Macrobenchmark' או 'BaselineProfile' כדי להריץ רק סוג אחד של בדיקה, למשל כשיוצרים אתBaselineProfiles
באמולטור. (I756b7, b/230371561)לדוגמה, בקובץ build.gradle של ה-macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
או משורת הפקודה של Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
גרסה 1.1.0-rc01
20 באפריל 2022
androidx.benchmark:benchmark-*:1.1.0-rc01
משוחרר. גרסה 1.1.0-rc01 כוללת את השמירות האלה.
תיקוני באגים
- קישורי הפלט של פרופיל הבסיס ב-Android Studio כוללים עכשיו שם קובץ ייחודי. כך הפלט תמיד משקף את התוצאות העדכניות ביותר של השימוש ב-
BaselineProfileRule
. ( aosp/2057008, b/228203086 )
גרסה 1.1.0-beta06
6 באפריל 2022
androidx.benchmark:benchmark-*:1.1.0-beta06
משוחרר. גרסה 1.1.0-beta06 כוללת את השמירות האלה.
תיקוני באגים
- תיקון קריסה של הקלטת נתוני המעקב ב-API 21/22 (If7fd6, b/227509388)
- שיפרנו את זיהוי השלמת ההפעלה של הפעילות כדי לפתור את החריגה 'לא ניתן לקרוא מדדים' בבדיקות המאקרו-ביצועים של סטארט-אפים. (Ia517c)
- תיקון מדדי ההפעלה של בדיקות Macrobenchmarks כשמשתמשים ב-
CompilationMode.None()
. לפני השינוי הזה,CompilationMode.Partial()
נראה איטי יותר מ-Compilation.None()
. (611ac9).
גרסה 1.1.0-beta05
23 במרץ 2022
androidx.benchmark:benchmark-*:1.1.0-beta05
משוחרר. גרסה 1.1.0-beta05 כוללת את השמירות האלה.
תיקוני באגים
- אפשר להפסיק את החבילה אחרי דילוג על התקנת הפרופיל כשמשתמשים ב-
CompilationMode.None
. (aosp/1991373) - תוקנה בעיה שבה Macrobenchmarks לא יכול לאסוף מדדי הפעלה בזמן השימוש ב-
StartupMode.COLD
. (aosp/2012227 b/218668335)
גרסה 1.1.0-beta04
23 בפברואר 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
משוחרר. גרסה 1.1.0-beta04 כוללת את ההצהרות האלה.
תיקוני באגים
תיקון של מדדים חסרים ב-Android 10, ושל השגיאה
NoSuchElementException
שנגרמת בגלל שמות תהליכים שלא מתועדים בצורה נכונה בנתוני המעקב. (Ib4c17, b/218668335)משתמשים ב-
PowerManager
לזיהוי של הגבלת עומס תרמי בגרסה Q (API 29) ואילך. כך ניתן לצמצם באופן משמעותי את התדירות של תוצאות חיוביות שגויות בזיהוי של הגבלת הביצועים כתוצאה מהתחממות (ניסיון חוזר לבדיקת הביצועים אחרי תקופת צינון של 90 שניות), ולהאיץ באופן משמעותי את בדיקות הביצועים בגרסאות build של משתמשים. הוא גם מספק זיהוי של הגבלת מהירות גם כשהשעונים נעולים (אם הם נעולים על ערך גבוה מדי לסביבה הפיזית של המכשיר). (I9c027, b/217497678, b/131755853)מסננים את פרופיל הדגימה של simpleperf לשרשור
measureRepeated
בלבד כדי לפשט את הבדיקה (Ic3e12, b/217501939)תמיכה במדדים מתהליכי משנה של ממשק משתמש בעל שם באפליקציות עם תהליכים מרובים (Ice6c0, b/215988434)
סינון הכללים של פרופיל הבסיס לטירגוט ל-Android 9 (SDK 28). aosp/1980331 b/216508418
דילוג על התקנת הפרופיל כשמשתמשים ב-
Compilation.None()
. בנוסף, יש לדווח על אזהרות כשהאפליקציה משתמשת בגרסה ישנה יותר שלandroidx.profileinstaller
ושל הפלאגין של Android Gradle. aosp/1977029
גרסה 1.1.0-beta03
9 בפברואר 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
משוחרר. גרסה 1.1.0-beta03 כוללת את ההצהרות האלה.
שינויים ב-API
- הוספנו את
AudioUnderrunMetric
לספריית macrobenchmark עם דגל ניסיוני כדי לאפשר זיהוי של מחסור בנתוני אודיו (Ib5972) BaselineProfileRule
לא מקבל יותר בלוקsetup
כי הוא פועל כמוprofileBlock
. (Ic7dfe, b/215536447)לדוגמה:
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
תיקוני באגים
- תוקנה בעיה שבה לא ניתן היה לעדכן את עקבות הפרופיל של microbench בהפעלות הבאות כשהם מקושרים בפלט של Studio (I5ae4d, b/214917025)
- מניעת יצירת קובצי הידור של פקודות מעטפת ב-API 23 (Ice380)
- השמות שונו מ-
FrameCpuTime
ל-FrameDurationCpu
ומ-FrameUiTime
ל-FrameDurationUi
כדי להבהיר שמדובר באורך הזמן, ולא בחותמות זמן, וכדי להתאים לתחיליות. (I0eba3, b/216337830)
גרסה 1.1.0-beta02
26 בינואר 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
משוחרר. גרסה 1.1.0-beta02 כוללת את ההצהרות האלה.
תיקוני באגים
- התוצאות של Microbenchmark Stack Sampling או של Method Tracing Profile מקושרות עכשיו בפלט של Studio, בדומה לפלטים אחרים של פרופיל, והן לא משביתות את מדד ההקצאה. (Idcb65, b/214440748, b/214253245)
- עכשיו, הפקודה
adb pull
מודפסת ב-BaselineProfileRule ב-logcat ובפלט של Studio כדי למשוך את קובץ הטקסט של BaselineProfile שנוצר. (f08811)
גרסה 1.1.0-beta01
12 בינואר 2022
androidx.benchmark:benchmark-*:1.1.0-beta01
משוחרר. גרסה 1.1.0-beta01 כוללת את ההצהרות האלה.
תיקוני באגים
- תיקון של בעיה שבה המערכת התעלמה מהפעלת הארגומנט של הכלי למעקב בזמן אמת. (I37373, b/210619998)
- הוסר
CompliationModes
שהוצא משימוש (I98186, b/213467659) - החלפת הארגומנט של פרופיל הבסיס
CompilationMode.Partial
למערך (enum) לשם הבהרה. (Id67ea)
גרסה 1.1.0-alpha13
15 בדצמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
משוחרר. גרסה 1.1.0-alpha13 מכילה את ההצהרות האלה.
שינויים ב-API
- הוספת מעקב מערכת בעל עלות נמוכה לפלט של מבחן המיקרו ב-Android Q (API מגרסה 29 ואילך). שימו לב: בשלב הזה לא מתבצע מעקב מותאם אישית (דרך ממשקי ה-API של Jetpack
android.os.Trace
אוandroidx.tracing
) כדי לא להשפיע על התוצאות. המעקב הזה יכול לעזור בזיהוי של אי-יציבות, במיוחד ממקורות מחוץ למדד. (I298be, b/205636583, b/145598917) - להבהיר את
CompilationModes
בשלושה סוגים – מלא, ללא, חלקי. בעבר, השמות שלהם לא היו עקביים והם נקראו לפי מאפיינים וארגומנטים של הידור (שאנחנו מתייחסים אליהם עכשיו כפרטי הטמעה). כך תוכלו להבין טוב יותר את הפשרות, השילובים האפשריים וההתנהגות בגרסאות השונות של הפלטפורמה. (I3d7bf, b/207132597) - ההגדרה והמדידה תמיד מופיעות עכשיו בזוגות, בסדר. עכשיו אפשר לשלוח שאילתה לגבי שם החבילה והחזרה על הפעולה (אבל יכול להיות שהחזרה על הפעולה תהיה
null
בתרחישי התחממות מסוימים). (Id3b68, b/208357448, b/208369635)
תיקוני באגים
- תוקנה בעיה שבה
CompilationMode.Speed
הוגדר בטעות כ-None
(I01137)
גרסה 1.1.0-alpha12
17 בנובמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
משוחרר. גרסה 1.1.0-alpha12 מכילה את ההוספות האלה.
תכונות חדשות
- הוספת המדד הניסיוני TraceSectionMetric למדידת זמני אירועים בהתאמה אישית שמבוססים על נתוני מעקב. (I99db1, b/204572664)
תיקוני באגים
- מפעילים את המכשיר בכל איטרציה כדי לוודא שאפשר לבדוק את ממשק המשתמש – צריך להשבית את מסך הנעילה. (Ibfa28, b/180963442)
- תיקון מספר קריסות במצב פרופיל של דגימת סטאק במהדמנים ובמכשירים ללא הרשאת root (Icdbda, b/202719335)
- הסרנו השהיה של 0.5 שניות בסוף כל חזרה – אם המדדים חסרים אחרי השינוי הזה, יש לדווח על באג. (Iff6aa)
- הפחתת הסיכויים לנתונים שנמחקים, והקטנת יתרת הזיכרון שנדרשת למעקב (Id2544, b/199324831, b/204448861)
- אפשר להקטין את גודל המעקב ב-40% בערך על ידי מעבר לפורמט אחסון קומפקטי של תזמון. (Id5fb6, b/199324831)
- עדכנו את ההטמעות של מדדי ההפעלה כך שהן תמיד יסתיימו בסוף renderthread. כך הנתונים יהיו עקביים יותר בגרסאות השונות של הפלטפורמה, ויתאימו יותר למדידות באפליקציה. (Ic6b55)
גרסה 1.1.0-alpha11
3 בנובמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
משוחרר. גרסה 1.1.0-alpha11 מכילה את השמירות האלה.
שינויים ב-API
- עכשיו ל-Macrobenchmark יש
minSdkVersion
של23
. (If2655) - הוספה של
BaselineProfileRule
ניסיוני חדש שיכול ליצור פרופילים בסיסיים של תהליך השימוש הקריטי באפליקציה. תיעוד מפורט יפורסם בהמשך. (Ibbefa, b/203692160) - הוסר הווריאנט של הממשק measureRepeated, שנוסף למבצעי קריאה מ-Java כי הוא גרם לאי-בהירות בהשלמה או בפתרון של השיטה. שוב, קוראים ב-Java יצטרכו להחזיר את Unit.Instance מ-measureRepeated. אם זה לא נוח לך, אפשר לדווח על באג ונוכל לבדוק את הנושא בגרסה עתידית. (Ifb23e, b/204331495)
גרסה 1.1.0-alpha10
27 באוקטובר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
משוחרר. גרסה 1.1.0-alpha10 מכילה את ההצהרות האלה.
שינויים ב-API
- העברת StartupTimingMetric לגרסה קודמת כדי שתעבוד ב-API 23. ההטמעה החדשה הזו גם מטפלת טוב יותר ב-reportFullyDrawn() כדי להמתין עד שהתוכן התואם יומר. (If3ac9, b/183129298)
- נוספו JvmOverloads לכמה שיטות של MacrobenchmarkScope למבצעי קריאה מ-Java. (I644fe, b/184546459)
- יש לספק פונקציה חלופית של MacrobenchmarkRule.measureRepeated שמשתמשת ב-
Consumer<MacrobenchmarkScope>
לשימוש בסיסי בשפת Java. (If74ab, b/184546459)
תיקוני באגים
- תיקון לבעיות שקשורות לכך שהמעקב לא מתחיל מוקדם מספיק ונתוני מדדים חסרים. הפעולה הזו אמורה לתקן את החריגות מסוג 'לא ניתן לקרוא מדדים כלשהם במהלך בדיקת הביצועים' שנגרמו על ידי הספרייה עצמה. (I6dfcb, b/193827052, b/200302931)
- השם של FrameNegativeSlack שונה ל-FrameOverrun כדי להבהיר את המשמעות שלו – כמה הפריימים חורגים מתקציב הזמן שלהם. (I6c2aa, b/203008701)
גרסה 1.1.0-alpha09
13 באוקטובר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
משוחרר. גרסה 1.1.0-alpha09 מכילה את ההצהרות האלה.
תיקוני באגים
- תמיכה בהסרת מטמון דפי הליבה ללא הרשאת root ב-API 31/S+, כדי לשפר את הדיוק של ההפעלות ב-StartupMode.COLD. (Iecfdb, b/200160030)
גרסה 1.1.0-alpha08
29 בספטמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
משוחרר. גרסה 1.1.0-alpha08 מכילה את ההצהרות האלה.
שינויים ב-API
- הפעלת מבחני ביצועים מאקרו של גלילה כדי להריץ אותם חזרה ל-API 23 (If39c2, b/183129298)
- הוספת סוג חדש של מדד לדגימה לממשק המשתמש ולפלט JSON, שמתמקד בפרמטרים של percentiles של כמה דגימות לכל מחזור. (I56247, b/199940612)
- מעבר למדדים של נקודה צפה בכל ספריות אמות המידה (המדדים מקוצרים בממשק המשתמש של Studio). (I69249, b/197008210)
גרסה 1.1.0-alpha07
1 בספטמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
משוחרר. גרסה 1.1.0-alpha07 מכילה את ההוספות האלה.
שינויים ב-API
- העלינו את רמת ה-API המינימלית ל-21 כדי לשקף את רמת ה-API הנמוכה ביותר שאנחנו מתכוונים לתמוך בה בעתיד. הגרסה הנוכחית של ממשק ה-API המינימלי שנתמכת עדיין מועברת דרך RequiredApi(), והיא 29 (I440d6, b/183129298)
תיקוני באגים
- תיקונים ב-
ProfileInstaller
כדי להקל על אפליקציות שמשתמשות בפרופילים בסיסיים להריץ בדיקות MacroBenchmark באמצעותCompilationMode.BaselineProfile
. (I42657, b/196074999) הערה: צריך גם לעדכן ל-androidx.profileinstaller:profileinstaller:1.1.0-alpha04
ואילך. - נקודות השוואה של
StartupMode.COLD
+CompilationMode.None
יציבות יותר עכשיו. (I770cd, b/196074999)
גרסה 1.1.0-alpha06
18 באוגוסט 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
משוחרר. גרסה 1.1.0-alpha06 מכילה את ההוספות האלה.
שינויים ב-API
- נוספה ארגומנטים של מכשור
androidx.benchmark.iterations
כדי לאפשר שינוי ידני של מספר החזרות בזמן בדיקה או יצירת פרופיל באופן מקומי. (6188be, b/194137879)
תיקוני באגים
- עברנו ל-Simpleperf בתור כלי ברירת המחדל לניתוח פרופיל באמצעות דגימה ב-API מגרסה 29 ואילך. (Ic4b34, b/158303822)
בעיות מוכרות
CompilationMode.BaselineProfile
נמצא בשלבי פיתוח. בשלב הזה, עדיף לא להשתמש במדד הזה כדי לקבוע את איכות הפרופיל.
גרסה 1.1.0-alpha05
4 באוגוסט 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
משוחרר. גרסה 1.1.0-alpha05 מכילה את ההצהרות האלה.
1.1.0-alpha04
בוטלה לפני הפרסום בגלל קריסה אקראית. b/193827052
שינויים ב-API
- החלפתם את startActivityAndWait כדי להפעיל את ההפעלה דרך
am start
, וכך הפחתתם את הזמן של כל מחזור מדידה בכ-5 שניות, אבל לא תהיה יותר תמיכה ב-Intent Parcelables. (I5a6f5, b/192009149
תיקוני באגים
- הפחתת מידת האגרסיביות של זיהוי המצערת התרמית, וחישובו מחדש של הבסיס אם המצערות מזוהות בתדירות גבוהה. (I7327b)
- תיקון של FrameTimingMetric כך שפועלת ב-Android S בטא (Ib60cc, b/193260119)
- כדי לתמוך טוב יותר ב-
CompilationMode.BaselineProfile
, אפשר להשתמש ב-EmptyActivity
כדי להוציא את אפליקציית היעד ממצב של עצירה בכוח. (Id7cac, b/192084204) - שינינו את סיומת קובץ המעקב ל-
.perfetto-trace
כדי להתאים לתקן הפלטפורמה. (I4c236, b/174663039) - המדד StartupTimingMetric מפיק עכשיו את המדד fullyDrawnMs כדי למדוד את הזמן עד שהאפליקציה מסיימת את העיבוד. כדי להגדיר את המדד הזה לאפליקציה, צריך להפעיל את Activity.reportFullyDrawn כשהתוכן הראשוני מוכן, למשל כשפריטי הרשימה הראשוניים נטענים מהמסד הנתונים או מהרשת. (השיטה reportFullyDrawn זמינה ללא בדיקות של גרסת build ב-ComponentActivity). שימו לב שהבדיקה צריכה לפעול מספיק זמן כדי לתעד את המדד (הקריאה startActivityAndWait לא ממתינה ל-reportFullyDrawn). (If1141, b/179176560)
- הפחתת העלות של הוספת מטא-נתונים של Ui למעקב אחר אירועים ב-50 אלפיות השנייה או יותר (Ic8390, b/193923003)
- הגדלת תדירות הסקרים באופן משמעותי כשמפסיקים את המעקב, מה שיכול להפחית, למשל, את זמן הריצה של מדד הביצועים בזמן ההפעלה ב-30% ומעלה (Idfbc1, b/193723768)
גרסה 1.1.0-alpha03
16 ביוני 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
משוחרר. גרסה 1.1.0-alpha03 כוללת את ההוספות האלה.
תכונות חדשות
- הוספנו
CompilationMode.BaselineProfile
חדש לתמיכה בפרופילים שהותקנו באמצעות ספריית ProfileInstaller של Jetpack. (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. בנוסף לבדיקת ביצועים שמאפשרת למדוד לולאות של מעבדים, בדיקת ביצועים ברמת המאקרו מאפשרת למדוד אינטראקציות של אפליקציה שלמה, כמו הפעלה וגלילה, ולתעד עקבות. מידע נוסף זמין במסמכי התיעוד של הספרייה.
androidx.benchmark:benchmark-*:1.1.0-alpha02
משוחרר. גרסה 1.1.0-alpha02 מכילה את ההוספות האלה.
תכונות חדשות
נוספו ארטיפקטים של Macrobenchmark (androidx.benchmark:benchmark-macro-junit4
ו-androidx.benchmark:benchmark-macro
)
- איך מתעדים מדדי ביצועים של הפעלה, גלילה או אנימציה מהאפליקציה, באופן מקומי או ב-CI
- איך מתעדים ומעיינים בנתוני מעקב מתוך Android Studio
תיקוני באגים
- פתרון עקיף לבעיה בהרשאות המעטפת בספריית הפלט ב-Android 12 (הערה: יכול להיות שתצטרכו לעדכן את Android Gradle Plugin לגרסה 7.0.0 canary ואת Android Studio לגרסה Arctic Fox (2020.3.1) כדי להמשיך לצלם קובצי פלט במכשירים המושפעים). (Icb039)
- תמיכה בשמירת תצורה במטמון ב-BenchmarkPlugin (6be1c1, b/159804788)
- פלט קובץ פשוט – מופעל כברירת מחדל, בספרייה שלא דורשת את
requestLegacyExternalStorage=true
(8b5a4d, b/172376362) - תיקון של ספרייה שמודפסת אזהרות logcat על אי-מציאת חוט JIT בגרסאות פלטפורמה שבהן הוא לא נמצא. (I9cc63, b/161847393)
- תיקון לתדירות המקסימלית של מכשיר הקראה. (I55c7a)
גרסה 1.1.0-alpha01
10 ביוני 2020
התכונות androidx.benchmark:benchmark-common:1.1.0-alpha01
, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
וגם androidx.benchmark:benchmark-junit4:1.1.0-alpha01
משוחררות. גרסה 1.1.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות בגרסה 1.1
- מדד הקצאה – נקודות השוואה לשוק מריצות עכשיו שלב נוסף אחרי החימום והתזמון, שמתעד את ספירת ההקצאות. הקצאות יכולות לגרום לבעיות בביצועים בגרסאות ישנות יותר של הפלטפורמה (140ns ב-O הפכו ל-8ns ב-M – נמדד ב-Nexus5X, עם שעונים נעולים). המדד הזה מוצג בפלט של מסוף Android Studio, וגם ב-
- תמיכה בפרופיל – עכשיו אפשר לתעד נתוני פרופיל להרצת ביצועים, כדי לבדוק למה הקוד פועל לאט. ב-Benchmark יש תמיכה בתיעוד של מעקב אחר שיטות או דגימת שיטות מ-ART. אפשר לבדוק את הקבצים האלה באמצעות הכלי לניתוח ביצועים ב-Android Studio, באמצעות קובץ > פתיחה.
- פלאגין Benchmark ל-Gradle מספק עכשיו הגדרות ברירת מחדל להגדרה פשוטה יותר:
testBuildType
מוגדר כ-release כברירת מחדל, כדי להימנע משימוש ביחסי תלות עם כיסוי קוד מובנה. buildType של הגרסה היציבה מוגדר גם כ-buildType שמוגדר כברירת מחדל, וכך Android Studio יכול לבחור באופן אוטומטי את גרסת ה-build הנכונה כשפותחים פרויקט בפעם הראשונה. (b/138808399)signingConfig.debug
משמש כברירת המחדל של הגדרת החתימה (b/153583269)
** תיקוני באגים **
- הפחתנו באופן משמעותי את זמן ההעברה של תקופת החימום, שבה המדידה הראשונה בכל מדד השוואה הייתה גבוהה באופן מלאכותי בהשוואה למדידות אחרות. הבעיה הזו הייתה בולטת יותר בבדיקות השוואה קטנות מאוד (1 מיקרו-שנייה או פחות). (b/142058671)
- תוקנה שגיאת
InstrumentationResultParser
שמודפסת לכל מדד ביצועים כשמריצים אותו משורת הפקודה. (I64988, b/154248456)
בעיות מוכרות
- כשמפעילים את Benchmark בשורת הפקודה או ב-Gradle, התוצאות לא מודפסות ישירות. כדי לעקוף את הבעיה, אפשר להריץ את הקוד דרך Studio או לנתח את קובץ הפלט בפורמט JSON כדי למצוא את התוצאות.
- דיווח על מדדי ביצועים נכשל בשליפת הדוח ממכשירים שבהם מותקנת אפליקציה עם applicationId שמסתיים ב-'android' או ב-'download' (ללא קשר לרישיות). משתמשים שנתקלים בבעיה הזו צריכים לשדרג את Android Gradle Plugin לגרסה 4.2-alpha01 ואילך.
גרסה 1.0.0
Benchmark Version 1.0.0
20 בנובמבר 2019
הגרסאות androidx.benchmark:benchmark-common:1.0.0
, androidx.benchmark:benchmark-gradle-plugin:1.0.0
ו-androidx.benchmark:benchmark-junit4:1.0.0
פורסמו ללא שינויים מהגרסה 1.0.0-rc01. גרסה 1.0.0 כוללת את ההצהרות האלה.
תכונות עיקריות בגרסה 1.0.0
ספריית Benchmark מאפשרת לכתוב מדדי ביצועים של קוד אפליקציה ולקבל תוצאות במהירות.
הוא מונע בעיות בהגדרות של גרסאות build וזמן ריצה, ומייצב את ביצועי המכשיר כדי להבטיח שהמדידות יהיו מדויקות ועקביות. אפשר להריץ את מדדי הביצועים ישירות ב-Android Studio או ב-Continuous Integration כדי לעקוב אחרי ביצועי הקוד לאורך זמן ולמנוע נסיגה.
התכונות העיקריות כוללות:
- ייצוב השעון
- סדר עדיפויות אוטומטי של שרשורים
- תמיכה בבדיקת ביצועים של ממשק המשתמש, כמו בדוגמה ל-RecyclerView
- התחממות והפעלה חוזרת עם תמיכה ב-JIT
- פלט של בדיקת ביצועים בפורמט JSON לעיבוד לאחרי
גרסה 1.0.0-rc01
23 באוקטובר 2019
התכונות androidx.benchmark:benchmark-common:1.0.0-rc01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01
וגם androidx.benchmark:benchmark-junit4:1.0.0-rc01
משוחררות. גרסה 1.0.0-rc01 כוללת את ההוספות האלה.
תכונות חדשות
- הוספת מעקב systrace לנקודות השוואה
תיקוני באגים
- תוקנה בעיה של חוסר יציבות במדדים, שבה JIT לא הסתיים לפני ההתחממות בגלל ביטול העדיפות (b/140773023)
- ספריית פלט JSON מאוחדת ב-Android Gradle Plugin 3.5 וב-3.6
גרסה 1.0.0-beta01
9 באוקטובר 2019
התכונות androidx.benchmark:benchmark-common:1.0.0-beta01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
וגם androidx.benchmark:benchmark-junit4:1.0.0-beta01
משוחררות. גרסה 1.0.0-beta01 מכילה את ההצהרות האלה.
תכונות חדשות
- הרצת איסוף אשפה לפני כל חימום מראש כדי לצמצם את לחץ הזיכרון מבדיקה אחת למבדיקה הבאה (b/140895105)
תיקוני באגים
- הוספנו תלות ב-
androidx.annotation:android-experimental-lint
כדי שקוד Java ייצור שגיאות איתור שגיאות בקוד (lint) בצורה נכונה כשלא נעשה שימוש ב-API הניסיוני, בדומה למה שמסופק על ידי ההערה הניסיונית של Kotlin למבצעי קריאה ב-Kotlin. - עכשיו מתבצע זיהוי תקין של השימוש בארגומנטים של מכשירי המדידה
additionalTestOutputDir
לצורך פלט ב-Android Gradle Plugin 3.6, כדי לדעת מתי AGP יטפל בהעתקת הנתונים. - תיקון של תדירות השעון שלא זוהתה ב-JSON כדי להדפיס בצורה נכונה את
-1
(b/141945670).
גרסה 1.0.0-alpha06
18 בספטמבר 2019
התכונות androidx.benchmark:benchmark-common:1.0.0-alpha06
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06
וגם androidx.benchmark:benchmark-junit4:1.0.0-alpha06
משוחררות. גרסה 1.0.0-alpha06 מכילה את ההצהרות האלה.
תכונות חדשות
- נוספה בדיקה לשימוש שגוי בחבילה הישנה של מפעיל הבדיקות, שמספקת עכשיו הודעת שגיאה מועילה יותר
שינויים ב-API
- ההערה הניסיונית
ExperimentalAnnotationReport
גלויות לכולם עכשיו. עכשיו נדרש התווית הזו כדי להשתמש ב-API הניסיוני BenchmarkState#report
גרסה 1.0.0-alpha05
5 בספטמבר 2019
התכונות androidx.benchmark:benchmark-common:1.0.0-alpha05
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05
וגם androidx.benchmark:benchmark-junit4:1.0.0-alpha05
משוחררות. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
שינויים ב-API
- ממשק ה-API של
BenchmarkState.reportData
מסומן עכשיו כניסיוני
תיקוני באגים
- תיקון לסקריפט לנעילת השעון, שנכשל במכשירים שבהם חסרות תוכנות המעטפת
cut
אוexpr
. - תוקנה בעיה במשימה
./gradlew lockClocks
שגרמה להיתקעות במכשירים שהופעלו בהם הרשאות root באמצעות גרסה ישנה יותר של השירות su, שלא תמכה בדגל-c
.
גרסה 1.0.0-alpha04
7 באוגוסט 2019
התכונות androidx.benchmark:benchmark-common:1.0.0-alpha04
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04
וגם androidx.benchmark:benchmark-junit4:1.0.0-alpha04
משוחררות. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
הוספנו גם מסמכי עזרה חדשים שמסבירים איך להשתמש בספריית Benchmark בלי Gradle, גם לשימוש במערכות build שונות (כמו Bazel או Buck) וגם כשמריצים ב-CI. מידע נוסף זמין במאמרים יצירת מדדי ביצועים ללא Gradle והרצת מדדי ביצועים בשילוב עם Continuous Integration.
תכונות חדשות
- פלאגין Gradle
- עכשיו המערכת משביתה באופן אוטומטי את כיסוי הבדיקה ומגדירה את
AndroidBenchmarkRunner
כברירת מחדל (b/138374050) - נוספה תמיכה בהעתקת נתונים חדשה שמבוססת על AGP, כשמריצים בדיקות ביצועים וכשמשתמשים ב-AGP מגרסה 3.6 ואילך
- עכשיו המערכת משביתה באופן אוטומטי את כיסוי הבדיקה ומגדירה את
- תוספות לפורמט JSON
- משך הזמן הכולל של הפעלת בדיקת העמידה בתקן בפלט (b/133147694)
@Parameterized
אמות המידה שמשתמשות במחרוזת שם (לדוגמה@Parameters(name = "size={0},depth={1}")
) מפלטות עכשיו שמות וערכים של פרמטרים לכל אמת מידה בפלט ה-JSON (b/132578772)
- מצב פרימטר לבדיקות (b/138785848)
- הוספנו מצב 'הרצה ללא הפעלה' להרצה של כל לולאת ביצועי השוואה פעם אחת בלבד, כדי לבדוק אם יש שגיאות או קריסות בלי לתעד מדידות. אפשר להשתמש באפשרות הזו, למשל, כדי להריץ במהירות מדדי ביצועים לפני שליחת הקוד כדי לוודא שהם לא פגומים.
שינויים ב-API
- מבנה המודול השתנה, והספרייה התפצלה (b/138451391)
benchmark:benchmark-junit4
מכילה כיתות עם יחסי תלות ב-JUnit:AndroidBenchmarkRunner
ו-BenchmarkRule
, ששתיהן הועברו לחבילהandroidx.benchmark.junit4
benchmark:benchmark-common
מכיל את שאר הלוגיקה, כולל ה-API של BenchmarkState- הפיצול הזה יאפשר לספרייה לתמוך בבדיקות ביצועים ללא ממשקי API של JUnit4 בעתיד
- אזהרות לגבי הגדרות אישיות נחשבות עכשיו כשגיאות, והן יגרמו לקריסה של הבדיקה (b/137653596)
- המטרה היא לעודד מדידות מדויקות יותר, במיוחד בסביבת CI.
- אפשר להפחית את השגיאות האלה לאזהרות באמצעות ארגומנט של מכשור. לדוגמה:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
תיקוני באגים
- כשמתרחשות שגיאות בכתיבה באחסון חיצוני במכשירי Q, מוצגות הודעות תיאוריות יותר עם הצעות לפתרון הבעיה
- המסכים מופעלים באופן אוטומטי במהלך הרצות של מדדי ביצועים, במקום להיכשל כשהמסך כבוי
תכנים שנוספו על ידי גורמים חיצוניים
- תודה ל-Sergey Zakharov על השיפורים בפלט JSON ועל התיקון לבעיות שקשורות לכיבוי המסך.
גרסה 1.0.0-alpha03
2 ביולי 2019
androidx.benchmark:benchmark:1.0.0-alpha03
ו-androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03
משוחררים. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
- חשיפת משך השינה עקב הגבלת הספק תרמית לכל אמת מידה בדוח ה-JSON המלא
תיקוני באגים
- לא צריך יותר להחיל את פלאגין Gradle אחרי הפלאגינים של Android והבלוק של Android
- נוספה תמיכה בדוחות השוואה לשוק במכשירי Android 10 שמשתמשים באחסון מוגבל
גרסה 1.0.0-alpha02
6 ביוני 2019
androidx.benchmark:1.0.0-alpha02
ו-androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02
משוחררים. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
שימו לב שאנחנו מתייחסים לסכימת ה-JSON כ-API. אנחנו מתכננים לפעול לפי אותן מגבלות יציבות כמו ב-API אחרים: יציבות (למעט מקרים נדירים מאוד) אחרי שהגרסה עוברת לגרסת בטא, ותיקונים בגרסה הסופית. בנוסף, אנחנו מתכננים להוסיף תכונות רק לגרסאות משניות, ולבצע שינויים או הסרות רק בגרסאות ראשיות.
שינויים ב-API
סכימה מעודכנת של JSON. סביר להניח ששינויים נוספים בסכימת ה-JSON יהיו מוגבלים להוספות:
- שינינו את המבנה של אובייקט התוצאה כדי לתמוך בקבוצות מדדים נוספות בעתיד (b/132713021)
- הוספנו לאובייקט ברמה העליונה מידע על הקשר של הרצה של בדיקה, כמו פרטי המכשיר וה-build, וגם אם השעונים נעולים (b/132711920)
- השמות של מדדי הזמן כוללים עכשיו את הסימן 'ns' (b/132714527)
- נוספו נתונים סטטיסטיים נוספים לכל מדד שדווח (מקסימום, חציון, מינימום), והוסרו נתונים סטטיסטיים פשוטים יותר של סיכום 'ננו' (b/132713851)
הסרת פלט XML (b/132714414)
זיהוי של הגבלת מהירות כתוצאה מהתחממות הוסר מ-
BenchmarkState.reportData
API (b/132887006)
תיקוני באגים
- תוקנה בעיה שבה
./gradlew lockClocks
לא נשאר במיקום שלו במכשירים מסוימים עם מערכת הפעלה מהדור האחרון (b/133424037) - זיהוי של ויסות נתונים הושבת במהדורת האמולטור (b/132880807)
גרסה 1.0.0-alpha01
7 במאי 2019
androidx.benchmark:benchmark:1.0.0-alpha01
משוחרר. ההתחייבויות (commits) שכלולות בגרסה הזו זמינות כאן.