השוואה לשוק
העדכון האחרון | גרסה יציבה | מועמד לפרסום | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
21 באוגוסט 2024 | 1.3.0 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות בנקודת ההשוואה, צריך להוסיף את מאגר Google Maven ל בפרויקט שלכם. נקראו מאגר Maven של Google מידע.
נקודת מאקרו
כדי להשתמש ב-Macrobenchmark
בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle
על
מודול מקרובנצ'מרק:
מגניב
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
מיקרובנצ'מרק
כדי להשתמש ב-Microbenchmark
בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle
על
מודול מיקרובנצ'מרק:
מגניב
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. נשמח לשמוע אם גילית בעיות חדשות או אם יש לך רעיונות לשיפור הספרייה הזו. מומלץ לעיין בעיות קיימות בספרייה הזו לפני שיוצרים ספר חדש. אפשר להוסיף את ההצבעה שלך לבעיה קיימת על ידי לחיצה על לחצן הכוכב.
מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.
גרסה 1.3
גרסה 1.3.0
21 באוגוסט 2024
androidx.benchmark:benchmark-*:1.3.0
משוחרר. גרסה 1.3.0 כוללת את ההתחייבויות האלה.
שינויים במיקרו-בנצ'מרק מאז 1.2.0
- מעקב השיטה מופעל כברירת מחדל בנקודות מיקרו-בנצ'מרקים במהלך ההפעלה ברוב המכשירים
- מעקב השיטות פועל כשלב נפרד, לאחר המדידות
- מעקב שיטות בפלטפורמות מסוימות, ובגרסאות ART ישפיע על שלבי המדידה מאוחרים יותר. בגרסאות האלה, מעקב השיטות מושבת כברירת מחדל ואזהרה מודפסת בפלט של Studio
- נקודות השוואה ומקרי ANR ב-thread הראשי
- נוסף
measureRepeatedOnMainThread
לנקודות השוואה לשרשורים בממשק המשתמש (למשל, אלה שיוצרים אינטראקציה עם ממשקי משתמש של כתיבה או תצוגה), כדי למנוע מקרי ANR במהלך ההפעלה של שניות רבות. - המערכת תדלג על מעקבי שיטות אם צפוי לעבור את המועד האחרון למניעת מקרי ה-ANR. צריך להגדיר את
androidx.benchmark.profiling.skipWhenDurationRisksAnr
כ-False כדי להשבית את ההתנהגות הזו (לא מומלץ להפעלות CI).
- נוסף
- הקטנה
- הטמעת כללי הגנה מוטמעים לשיפור המיקרו-בנצ'מרק (microbench) באמצעות הקטנה מופעלת
- הקטנה/R8 במודול ספרייה מחייבת AGP 8.3, ואפשר להפעיל אותו דרך
android.buildTypes.release.androidTest.enableMinification
בbuild.gradle
- נוסף API ניסיוני של
BlackHole.consume()
כדי למנוע ביטול של קוד מת (If6812, b/286091643)
- ערכים
- תכונה ניסיונית של מונה אירועי מעבד (CPU) (מדדים מ-
perf_event_open
, שמחייבים את הרמה הבסיסית (root) ברוב הגרסאות של הפלטפורמה), גישה דרךInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(אפשר להגדיר אותה לערךtrue
), וניתן להגדיר אתandroidx.benchmark.cpuEventCounter.events
לדוגמה. עד (Instructions,CpuCycles
). האפשרות הזו אמורה להיות נתמכת באמולטורים מסוימים של ניפוי באגים, אבל התמיכה לא נבדקה
- תכונה ניסיונית של מונה אירועי מעבד (CPU) (מדדים מ-
שינויים בנקודת ההשוואה MACRObench מאז 1.2.0
- שיטה למעקב אחרי שינויים במקרובנצ'מרקים.
- עכשיו דוחות ה-method מוגדרים למשך הזמן של ה
measureBlock
, ויכולים לתעד כמה סשנים אם התהליך מתחיל כמה פעמים. - בעבר, מעקב השיטה פעל רק עבור
StartupMode.COLD
נקודות השוואה, ולא יתעד שום דבר לגביmeasureBlocks
שלא התחיל מחדש את תהליך היעד - מעקבי שיטה קבועים תואמים במקרובנצ'מרק, כך שמעקבי השיטה צריכים להיות מתועדים במלואם, גם במכשירים איטיים יותר. (I6349a, b/329904950)
- עכשיו דוחות ה-method מוגדרים למשך הזמן של ה
- פעולת איטרציה נכונה של פרופיל ART במהלך איטרציות נפרדות של
warmUp
כשהתהליך מתבטל, כדי שמדידותCompilationMode.Partial(warmup=N)
יהיו מדויקות יותר. (I17923) - הודעה על כשל בשידור של תוכנת ההצללה
- נוספו הצעות לניפוי באגים להורדת ההודעה על כשל בשידור של תוכנת הצללה (shader)
- הוספת שני ארגומנטים של אינסטרומנטציה לביטול התנהגות של שחרור של תוכנת ההצללה (shader) כדי לעקוף קריסות בזמן השוואה בין אפליקציות ללא
ProfileInstaller
1.3:androidx.benchmark.dropShaders.enable=true/false
: אפשר להשתמש באפשרות הזו כדי לדלג על כל שחרור של תוכנת ההצללה (כולל זו שבוצעה בהשקות שלStartupMode.Cold
), ולחשוב בזמן ביצוע השוואה לאפליקציות שעדיין לא משתמשות ב-Profileinstaller 1.3.androidx.benchmark.dropShaders.throwOnFailure=true/false
: יכולה לשמש כדי להתמודד עם כשלים כשמנסים להסיר תוכנות הצללה (shader), לדוגמה בזמן ביצוע השוואה לאפליקציות ללא 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 / חריגות נוספו לכל הכשלים בזיהוי ההפעלה. הפעולה הזו לא משנה את ההתנהגות הנוכחית (כך ששגיאות מסוימות מובילות לשגיאות מסוימות, ושגיאות אחרות לא מצליחות לזהות את ההפעלה ברקע), רק הופכות את התהליך למובן יותר. בדרך כלל, המדדים ש
Log.w()
ולא מדווחים בהם על מדדי ההפעלה הם מקרים שבהם חסרים אירועים שאינם פריים. המערכת מזהה חריגות כשמזוהה הפעלה, למעט מידע על תזמון הפריימים (מפרוסות של ממשק משתמש או RT). (Id240f, b/329145809) - המדידה של
frameCount
נוספה אלFrameTimingMetric
כדי לסייע בגילוי תרחישים שבהם המדידות משתנות בעקבות שינוי במספר הפריימים שנוצרו (נוספו אנימציות חדשות, תוקנו בעיות התוקף). (I1e5aa) - הבהרנו ש-
frameOverrunMs
הוא המדד המועדף למעקב כשהוא זמין ב-Docs, ולמה. (I18749, b/329478323) - תוקנה בעיה שבה פריימים לא קטועים, בהתחלה ובסוף של המעקב, היו יכולים להתחבר יחד. התוצאה עלולה להיות דיווח שגוי על פריים אחד ארוך במיוחד. (I39353, b/322232828)
- אפשר לשפר את השגיאה
FrameTimingMetric
כשהפריימים לא מופקים, ותמיד ליצור פלט של קישור למעקב במקרה של כשל בניתוח המדד כדי לאבחן את הבעיות. (I956b9) - תוקנה קריסה ב-
FrameTimingMetric
שלא הצליחה לנתח את מזהה המסגרת, במיוחד במכשירים מסוימים של OEM (יצרן ציוד מקורי). (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
פלאגין לשדרוג כדי לאפשר יצירת פרופיל בסיסי והשוואה לשוק בעת התאמה אישית של סוג ה-build שלnonMinified
או של נקודת ההשוואה. (Ib8f05, b/324837887) - תיקון הבעיה שגרמה להכללה של פרופילים בסיסיים של ספריות ב-AAR לפני AGP 8.3.0-alpha15. (I1d2af, b/313992099)
- תוקנה כתובת ה-URL לפלט של פרופיל ההפעלה הבסיסית ופרופיל ההפעלה בסוף משימת היצירה. (I802e5, b/313976958)
שינויים משמעותיים אחרים מאז 1.2.0
- תיעוד עקבות
- שגיאת יציאה מקוד 2 מופחתת בהתחלת הפעולה בדיוק משגיאה לאזהרה רשומה ביומן
- הפעלה של מעקב AIDL כברירת מחדל בנצ'מרקים(נדרש API 28) (Ia0af2, b/341852305)
- הפעלת מעקב אחרי תגים של ניוד כברירת מחדל בנתוני ההשוואה לשוק. הפעולה הזו מתעדת, לדוגמה, נקודות מעקב של Warelock. (Icfe44, b/286551983)
- הזמן הקצוב לתפוגה של התחלת תיעוד מעקב מוגבר כדי למנוע קריסות כשמפעילים את המעקב במכשירים איטיים יותר (I98841, b/329145808)
- נוספו ממשקי API ציבוריים
PerfettoTraceProcessor.Session.queryMetrics
עם וריאנטים של JSON, textproto ופרוטו בינארי (לא מפוענח). הם מאפשרים להריץ שאילתות על מדדים מובְנים ב-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
– תואמת לאות הראשונה של שם קוד טרום-השקה (כולל בגרסאות build של גרסאות) (Ie5020)
- נוספה רשימת
profilerOutput
לפלט JSON ליצירת כלים פשוטים יותר סביב מעקבי פרופיילינג (למשל Perfetto, מעקבי Method) (I05ddd, b/332604449) - נוספה אזהרה כשנעשה שימוש במודולים של נקודות השוואה ב-Android Test בפלטפורמת הבדיקה, מכיוון שכתוצאה מכך קובצי JSON הפלט של כל מודול יוחלפו שוב ושוב. (Ia1af6, b/286899049)
- כדאי להפעיל Cast כששמות קבצים ארוכים מ-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
, ערכי TimeN כבר לא מצטמצמים באופן משמעותי כשמתבצעת השהיה/המשך. (I39c2e, b/286306579, b/307445225) - פחות סיכוי לדגימת מקבץ שגורמת ל-
measureRepeatedOnMainThread
להגיע לזמן הקצוב לתפוגה של ה-thread הראשי על ידי העברת ההמרה של דגימת המקבץ מה-thread הראשי. (I487a8, b/342237318) - הוסרה חלוקה ידנית של הגישה לממשקי API של פלטפורמות חדשות, כי זה קורה באופן אוטומטי באמצעות בניית מודלים של API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל R8 גרסה 3.3) ובכל גרסאות ה-build כשמשתמשים ב-AGP 8.1 ואילך (למשל D8 גרסה 8.1). ללקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה D8 ואילך. למידע נוסף, מומלץ לעיין במאמר הזה. (I9496c, b/345472586)
- נוספה בדיקת גרסת agp כדי לשלוח שם חבילה כ-instrg. בגרסה הקודמת ל-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) - עכשיו המיקרו-בנצ'מרק יישלף בצורה נכונה כדי למנוע ממעקב השיטה להפריע למדידות. המצב הזה מתרחש במכשירים מסוימים כשהמעקב בשיטה אילוץ על (באמצעות ארגומנטים של אינסטרומנטציה או
MicrobenchmarkConfig
), ואם נעשה ניסיון לבצע מדידה לאחר מעקב שיטה. במכשירים המושפעים פועלים API 26-30 או גרסאות מסוימות של מודול ראשי ART שמושפעות מההפרעה הזו, ואפשר לזהות אותם בזמן הריצה באמצעותProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
. (Iafb92, b/303660864)
תיקוני באגים
- גרסת ה-Agp המקסימלית שעברה שינוי מומלצת ל-9.0.0-alpha01. (I5bb0)
- נוסף מצב הידור להקשר של ההשוואה לשוק (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) - שנו את התלות המשותפת למאקרו ל-
api()
, כך שקל יותר להשתמש לדוגמהPerfettoTrace
וגםPerfettoConfig
(Icdae3, b/341851833) - חשוב לוודא ש-
mergeArtProfile
ו-mergeStartupProfile
משימות תמיד ימתינו ליצירת פרופיל בסיסי. (I623d6, b/343086054) - כשמחליטים אם להפעיל את הווריאציה, כדאי להביא בחשבון את מצב הפעלת הווריאנט. (I5d19e, b/343249144)
- ברירת המחדל של הזמן הקצוב לתפוגת ההתחלה הוגדלה עבור מעבד מעקב מדויק. (I87e8c, b/329145808)
גרסה 1.3.0-alpha05
14 במאי 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
משוחרר. גרסה 1.3.0-alpha05 מכילה את התחייבויות אלה.
תיקוני באגים
- ביטול חריג ברור יותר כשמדד המאקרו מחזיר אפס ערכי אפס לכל איטרציות (Iab58f, b/314931695)
- נוספו עוד כללי מעקף לכללי ההגנה על המיקרו-בייט, כולל תמיכה בכללי ההאזנה ואזהרות / שגיאות אחרות שזוהו. (I14d8f, b/329126308, b/339085669)
- מעקב השיטות פועל כשלב נפרד במהלך Macrobenchmark, והוא לא משפיע יותר על המדידות. (If9a50, b/285912360, b/336588271)
- נוספו הצעות נוספות לניפוי באגים כדי לשחרר את ההודעה על כשל בשידור של תוכנת ההצללה. (I5efa6, b/325502725)
גרסה 1.3.0-alpha04
1 במאי 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
משוחרר. גרסה 1.3.0-alpha04 מכילה את התחייבויות אלה.
שינויים ב-API
- נוספה וריאנט ניסיוני של
MacrobenchmarkRule#measureRepeated
, שלוקחPerfettoConfig
בהתאמה אישית לתיעוד מעקב של Perfetto בהתאמה אישית מלאה. חשוב לזכור שהגדרות שהוגדרו בצורה שגויה עלולות לגרום לכשל במחלקות מדדים מובנות. (Idfd3d, b/309841164, b/304038384) - יש לשנות את השם של
PowerMetric.deviceSupportsPowerEnergy
ל-PowerMetric.deviceSupportsHighPrecisionTracking
לצורך הבהרה (I5b82f) - נוספו
PowerMetric.deviceBatteryHasMinimumCharge()
ו-PowerMetric.deviceSupportsPowerEnergy()
כדי לאפשר שינוי של נקודות השוואה או לדלג עליהן על סמך היכולת למדידת ביצועים של מכשירים. (I6a591, b/322121218)
תיקוני באגים
- נוספה השוואה לפרופיל הבסיס הקודם (I824c8, b/269484510)
- נוסף DSL כדי להשבית אזהרות (Ic4deb, b/331237001)
- חריג השתנה ליומן מידע כשוריאציות ההשוואה לשוק מושבתות (I8a517, b/332772491)
- קל יותר לתעד את מעקבי השיטות של Macrobenchmark בהיקף של משך הזמן של
measureBlock()
בפועל. בעבר, הוא התחיל בהשקה של תהליך היעד ונתמך רק בהפעלות במצב התחלתי (Iee85a, b/300651094) - נמנעים מקריסות כשהפעלה של מעבד מעקב מדויק (I98841, b/329145808)
גרסה 1.3.0-alpha03
17 באפריל 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
משוחרר. גרסה 1.3.0-alpha03 מכילה את התחייבויות אלה.
תכונות חדשות
- הוספת ממשקי API ציבוריים של API
PerfettoTraceProcessor.Session.queryMetrics
עם וריאנטים של JSON, textproto ו-proto בינארי (לא מפוענח). הם מאפשרים להריץ שאילתות על מדדים מובנים ב-TraceProcessor (I54d7f, b/304038382) - נוסף
profilerOutput
לפלט JSON לצורך שימוש קל יותר בכלים שונים למעקב אחרי פרופיילינג (למשל, perfetto, עקבות שיטה). (I05ddd, b/332604449) - נוסף תג הפעלה ל-Bnchmark Perfetto Config. הפעולה הזו מתעדת, לדוגמה, נקודות מעקב של Warelock. (Icfe44, b/286551983)
- הארגומנט
androidx.benchmark.profiling.skipWhenDurationRisksAnr
שנוסף, ניתן להגדיר כ-False כדי למנוע דילוג על מעקב אחר שיטות כשמשך הזמן הצפוי עלול לגרום ל-ANR. מומלץ מאוד להימנע מכך בהפעלות של CI. - נוסף ארגומנט הטמעה ניסיוני
androidx.benchmark.profiling.perfCompare.enable
, הגדר אותו כ-TRUE כדי להריץ תזמון השוואה בין שלבי המדידה ושלבי הפרופיילינג. שימושי, למשל הערכת התקורה של מעקב השיטות. (I61fb4, b/329146942)
שינויים ב-API
- שינינו את
TraceSectionMetric.Mode
למחלקה חתומה כדי לאפשר הרחבה עתידית בלי פירוט של ההצהרות (I71f7b) - נוספו
TraceSectionMetric.Mode.Average
ו-.Count
וסדרו מחדש ארגומנטים, כך שהארגומנט השכיח יותר (mode) הופיע מוקדם יותר ברשימת הארגומנטים, והצטמצם הצורך בציון שמות פרמטרים. (Ibf0b0, b/315830077, b/322167531) - שינית את השם של
Metric.getResult
ל-getMeasurements
כדי להתאים לסוג ההחזרה (I42595)
תיקוני באגים
- צריך לתקן כדי להבטיח שהנקודות השוואה מבוססות על פרופילים בסיסיים שנוצרו כש-
automaticGenerationDuringBuild
מושבת (Ic144f, b/333024280) - צריך לתקן את השינויים במאפיינים של
BaselineProfile
פלאגין לשדרוג כדי לאפשר יצירת פרופיל בסיסי והשוואה לשוק בעת התאמה אישית של סוג ה-build שלnonMinified
או של נקודת ההשוואה. (Ib8f05, b/324837887) - מעקבי שיטה קבועים תואמים במקרובנצ'מרק, כך שמעקבי השיטה צריכים להיות מתועדים במלואם, גם במכשירים איטיים יותר. (I6349a, b/329904950)
- אפשר להפעיל את התחלת החסימה ברשומת המעקב של Perfetto כדי לצמצם את הסיכון להחמצת נתונים בתחילת המעקב. הפעולה הזו נתמכת רק ב-API מגרסה 33 ואילך. (Ie6e41, b/310760059)
- נוספה אזהרה כשנעשה שימוש במודולים של נקודות השוואה ב-Android Test בפלטפורמת הבדיקה, מכיוון שכתוצאה מכך קובצי 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
הוא המדד המועדף למעקב כשהוא זמין ב-Docs, ולמה. (I18749, b/329478323)
גרסה 1.3.0-alpha02
20 במרץ 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
משוחרר. גרסה 1.3.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
תמיכת R8 ניסיונית במיקרו-בסיס באמצעות כללי הגנה מוטמעים. לתשומת ליבכם: התמיכה הזו ניסיונית והיא דורשת גישה ל-AGP 8.3 להקטנה של בדיקות מודול של ספרייה. כדאי להשתמש באפשרויות הבאות כדי להפעיל הקטנה/אופטימיזציה של R8 במודול
build.gradle
של ההשוואה לשוק. פעולה זו אמורה להוביל לשיפור משמעותי בביצועים, בהתאם לעומס העבודה. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
תיקוני באגים
- מתקנים את האזהרה על שיטת המעקב כך שתהיה בשורה נפרדת מהפלט של המיקרו-בנצ'. (I0455c, b/328308833)
גרסה 1.3.0-alpha01
21 בפברואר 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
משוחרר. גרסה 1.3.0-alpha01 מכילה את התחייבויות אלה.
שינויים ב-API
- שיניתם את השם של
MicrobenchmarkConfig
פרמטרים בוליאניים כדי להימנע משימוש במילה 'צריך' (Ia8f00, b/303387299) - הוספנו את
BenchmarkRule.measureRepeatedOnMainThread
, כך שנקודות השוואה הראשיות לשרשורים (למשל אלה שנוגעים לממשקי משתמש של 'תצוגות' או 'כתיבה') יכולות למנוע הפעלה של מקרי ANR, במיוחד במהלך חבילות גדולות ב-CI. (I5c86d) - נוסף
FrameTimingGfxInfoMetric
, הטמעה חלופית ניסיונית שלFrameTimingMetric
עם מדידות שמגיעות ישירות מהפלטפורמה, ולא נשלפה מהמעקב של Perfetto. (I457cb, b/322232828) - הוספה של יכולת להוסיף פרופיל ART במהלך איטרציות נפרדות של
warmUp
. (I17923) - כמה שינויים ב-API של
TraceSectionMetric
:- הוספה של
Mode.Min
,Mode.Max
- הוספת ארגומנט של תווית כדי לשנות את שם הקטע כתווית של מדד
- שם המצב נוסף לפלט כדי להבהיר את משמעות המדד
- ערך ברירת המחדל השתנה ל'סיכום', מאחר שרוב השימוש במדד הזה הוא לאירועים חוזרים חשוב לשים לב לשינויים האלה בשימוש ב-CI, כי הם עלולים לגרום לאי-רציפות או לנתק את הניתוח. (Ic1e82, b/301892382, b/301955938)
- הוספה של
תיקוני באגים
- הודעת שגיאה משופרת בפלאגין GRid של פרופיל הבסיס כשמכשיר מנוהל שצוין לא קיים (Idea2b, b/313803289)
- תיקון הבעיה להכללת פרופילים בסיסיים של ספריות ב-AAR לפני AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- תוקנה כתובת URL לפלט של פרופיל הבסיס ופרופיל ההפעלה בסוף משימת היצירה (I802e5, b/313976958)
- הזמן הקצוב לתפוגה של מקור הנתונים שונה כדי לנסות לתקן את
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d, b/323601788) - הוספת שני ארגומנטים של אינסטרומנטציה לביטול התנהגות של שחרור של תוכנת ההצללה (shader) כדי לעקוף קריסות בזמן השוואה בין אפליקציות ללא
ProfileInstaller
1.3:androidx.benchmark.dropShaders.enable=true/false
: אפשר להשתמש באפשרות הזו כדי לדלג על כל שחרור של תוכנת ההצללה (כולל זו שבוצעה בהשקות שלStartupMode.Cold
), ולחשוב בזמן ביצוע השוואה לאפליקציות שעדיין לא משתמשות ב-Profileinstaller 1.3.androidx.benchmark.dropShaders.throwOnFailure=true/false
: יכולה לשמש כדי להתמודד עם כשלים כשמנסים להסיר תוכנות הצללה (shader), לדוגמה בזמן ביצוע השוואה לאפליקציות ללא profileinstaller 1.3 (I4f573)
- המערכת תדלג על מעקב השיטה בשרשור של ממשק המשתמש כשצפוי להימשך יותר מכמה שניות. מעקב אחר שיטות הניקוי מתבצע במהלך ההשלכה. (I6e768)
- כדאי להפעיל Cast כששמות קבצים ארוכים מ-200 תווים כדי למנוע קריסות לא ברורות בזמן כתיבת קבצים או עיבוד קבצים. (I4a5ab)
- תוקנה בעיה שבה פריימים לא קטועים, בהתחלה ובסוף של המעקב, היו יכולים להתחבר יחד. התוצאה עלולה להיות דיווח שגוי על פריים אחד ארוך במיוחד. (I39353, b/322232828)
- כדי לנקות פרופילי ART בגרסאות build של משתמשים, צריך להשתמש ב-
--skip verification
ב-API 30 ואילך כשמתקינים מחדש חבילה ב-API 30-33. הפעולה הזו עוזרת לעקוף אזהרות של Play Protect שגורמות לכשלים בסוגים מסוימים של מכשירים. (Ic9e36) - אפשר להשתמש ב-
am force-stop
כדי לסגור אפליקציות אם הן לא אפליקציית מערכת, כמו ממשק המשתמש או מרכז האפליקציות. (I5e028) - בשלב הזה, מדד Macrobench ממתין ל-
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 של פרופיל הבסיס שלא מוגדר בווריאנטים של המקובל בשוק. מתקן גם את
automaticGenerationDuringBuild
בספריות שגורמות לתלות מעגלית. (I28ab7, b/333024280) - אפשר להשתמש ב-
am force-stop
כדי לסגור אפליקציות אם הן לא אפליקציית מערכת, כמו ממשק המשתמש או מרכז האפליקציות. הפעולה הזו מתקנת את נקודות ההשוואה שלStartupMode.COLD
שקורסות מ"אין אפשרות להפעיל חבילה $package לפני הפעלה במצב התחלתי (cold start)!" בגלל שה-alling לא מצליח באופן מלא. (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 כוללת את ההתחייבויות האלה.
פרופילים בסיסיים
- ביומני הביצוע יוצג הנתיב של קובץ הפלט של הפרופיל הבסיסי כ-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 Profile Gradle מאפשר לתעד ולכלול באופן אוטומטי את הפרופילים הבסיסיים בתהליך העבודה של הבדיקה והפיתוח.
BaselineProfileRule.collect
יציב עכשיו – גרסה פשוטה ופשוטה של ה-API הניסיוני הקודם שלBaselineProfileRule.collectBaselineProfile
- רק מציינים
packageName
ומניעים את האפליקציה
- רק מציינים
- בספריות שיוצרות פרופילים בסיסיים, אפשר עכשיו לסנן את הכללים שנוצרו בקוד (ארגומנט
BaselineProfileRule.collect
), או אפילו יותר פשוט בפלאגין gradle - תיקונים
- תוקן באופן קבוע באיסוף הפרופיל הבסיסי ב-Android U+ (Id1392, b/277645214)
מאקרובנצ'מרק
- הידור
- עכשיו, ב-Macrobenchmark מתבצע איפוס מלא של מצב הידור לכל הידור. כדי לעשות את זה, צריך להתקין מחדש את ה-APK לפני Android 14. לכן מומלץ מאוד לקבוע השוואה לשוק ב-Android 14 ואילך אם רוצים לשמור על המצב היציב (כמו התחברות של משתמשים) במה שנמדד.
- אפשר גם לעקוף את הבעיה: אפשר לשלוט בנפרד על הידור של אפליקציות ולדלג על הידור באמצעות
CompilationMode.Ignore()
או ארגומנט אינסטרומנטציה.
ארגומנטים של אינסטרומנטציה
- תמיכה בארגומנט אינסטרומנטציה
androidx.benchmark.dryRunMode.enable
(כבר זמין במיקרו-בנצ'מרק) להפעלות אימות מהירות יותר (למשל, כשיוצרים את נקודת ההשוואה או בהגשה מראש) - תמיכה עבור
androidx.benchmark.profiling.mode=StackSampling
ו-MethodTracing
. - הוספת את
androidx.benchmark.enabledRules
כדי לאפשר בדיקות של פרופיל הבסיס לסינון בזמן ריצה לעומת בדיקות כללים של מקרובנצ'מרק - נוסף ארגומנט
androidx.benchmark.perfettoSdkTracing.enable
כדי לאפשר מעקב באמצעות מעקב אחר ביצועים, למשל: הרכב מעקב אחר יצירה מחדש. חשוב לשים לב שכשמשתמשים בשילוב עםStartupMode.COLD
, התזמון יושפע באופן משמעותי כי ספריית המעקב נטענת ומופעלת במהלך ההפעלה של האפליקציה.
- תמיכה בארגומנט אינסטרומנטציה
הדרישות
- כדי להפעיל צילום / איפוס של פרופיל, וניקוי המטמון של תוכנת ההצללה (shader), צריך להתקין את
ProfileInstaller
בגרסה 1.3.0 ומעלה באפליקציית היעד של Macrobench.
- כדי להפעיל צילום / איפוס של פרופיל, וניקוי המטמון של תוכנת ההצללה (shader), צריך להתקין את
ממשקי API למדדים ניסיוניים חדשים
- נוסף
TraceSectionMetric
ניסיוני, שמאפשר לחלץ תזמון פשוט מחסימות שלtrace("") {}
באפליקציה, או TraceMetric כדי למנף את יכולת השאילתות המלאה של PerfettoTraceProcessor
. - נוסף
PowerMetric
ניסיוני כדי לתעד מידע על צריכת החשמל - נוסף הדף הניסיוני
MemoryCountersMetric
כדי לספור שגיאות בדפים - נוסף API ניסיוני
PerfettoTraceProcessor
, שמשמש באופן פנימי לחילוץ מדדים ממעקבי המערכת (שנקראים גם מעקבי Perfetto)
- נוסף
תיקונים
- תוקנו קריסות במהלך התקנה או חילוץ פרופילים מאפליקציה שהותקנה מכמה חבילות APK (למשל, מ-App Bundle).
- תוקן
FrameTimingMetric
התעלמות ממסגרות עם מזהי מסגרת לא עקביים (בדרך כלל פריימים במהלך הדים ב-API 31 ואילך) (I747d2, b/279088460) - תוקנו שגיאות בניתוח של דוחות > 64MB (Ief831, b/269949822)
- שגיאות הבהרה במקרים שבהם תמונת מערכת ההפעלה של המכשיר (במיוחד אמולטור) לא מוגדרת כראוי למעקב או להידור
- דילוג על בדיקת רמת הטעינה של מכשירים ללא סוללה (מיקרו ומאקרו)
- פלט קובץ משופר, שגיאות ברורות יותר בספריות פלט לא חוקיות וברירות מחדל בטוחות יותר
- שופרה היציבות של
StartupMode.COLD
על ידי שחרור עקבי של המטמון של תוכנת ההצללה (חשיפה גם דרךMacrobenchmarkScope.dropShaderCache
) - חלופה ל-leanback תוקנה עבור
startActivityAndWait
.
מיקרובנצ'מרק
- פרטים
- יצירת הפרופילים הועברה לשלב נפרד, אחרי מדדים אחרים, כך שבהרצת בדיקה אחת ניתן להציג גם תזמון מדויק וגם תוצאות פרופיילינג.
- ממשקי 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 מכילה את שמירות האלה.
תיקוני באגים
- צריך לתקן את הפלט של קובץ ההשוואה לשוק כדי להפסיק את ההעתקה של קובץ הפלאגין
BaselineProfile
. קבצים נוצרו והועתקו מהמכשיר, אבל השמות שלהם השתנו כך שהפלאגין מסוג gradle לא יראה אותם. (I8dbcc, b/303034735, b/296453339) - בוצע הבהרה של
tracing-perfetto
לגבי טעינת הודעות שגיאה בזמן החדרה ממודול מאקרובנצ'מרק לאפליקציית היעד.
גרסה 1.2.0-rc01
20 בספטמבר 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
משוחרר. גרסה 1.2.0-rc01 מכילה את שמירות האלה.
תיקוני באגים
- עכשיו יש חריג (עם הוראות לפתרון) כשהמעקב אחר Perfetto SDK לא מתחיל בנקודת השוואה. (I6c878, b/286228781)
- תיקון קריסת OOM בזמן המרת מעקב אחר שיטת ART -> בפורמט Perfetto. (I106bd, b/296905344)
- (מאקרובנצ'מרק) תווית למעקב ברורה בשיטה כשיהיה קישור לפלט הבדיקה ב-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 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)
תיקוני באגים
- השם של ארגומנט האינסטרומנט
fullTracing.enable
השתנה ל-perfettoSdkTracing.enable
כדי לשמור על עקביות עם שם פריט המידע שנוצר בתהליך הפיתוח (Artifact) והפניות אחרות.fullTracing.enable
ימשיך לפעול כחלופה. (I7cc00) - נקודות מעקב פנימיות בספריית ההשוואה לשוק (כולל לולאה/מעקב שלב של המיקרובנצ'מרק) יופיעו עכשיו במציג המעקב של מערכת Studio, ויקובצו בתהליך הנכון ב-Perfetto. (I6b2e7, b/293510459)
- הוסרה שגיאת המאקרו NOT-PROFILEABLE ב-API 31 ואילך, ודילוג על בדיקת הפרופיל במכשירים עם הרשאות בסיס ב-eng/userdebug. (I2abac, b/291722507)
- כשמשתמשים באופטימיזציות של Dex Layouts, הכללים ליצירת פרופיל בהפעלה נחשבים עכשיו גם לכללים בסיסיים בפרופיל. (aosp/2684246, b/293889189)
גרסה 1.2.0-beta02
26 ביולי 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
משוחרר. גרסה 1.2.0-beta02 מכילה את התחייבויות אלה.
שינויים ב-API
- נוספו ממשקי API ניסיוניים למדדים מותאמים אישית של מיקרובנצ' ולתצורה (למשל, Profiler ויומני מעקב). (I86101, b/291820856)
תיקוני באגים
- דיווח על שגיאה במאקרובנץ' כשמערכת ההפעלה מוגדרת באופן שגוי למעקב, כפי שתוקנה לאחרונה באמולטורים של API 26/28 ARM64. (I0a328, b/282191686)
- נוספו פרטים לכשל באיפוס ההידור בהצעה לעדכן את האמולטור, כי חלק מאמולטורים פתרו את הבעיה הזו לאחרונה. (I8c815, b/282191686)
- מגדירים את
androidx.test.uiautomator:uiautomator:2.2.0
כ-api
במקום תלות שלimplementation
. (I1981e)
גרסה 1.2.0-beta01
18 ביולי 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
משוחרר. גרסה 1.2.0-beta01 מכילה את התחייבויות אלה.
תיקוני באגים
- תיקון אזהרות שמוסתרות לפעמים בפלט של ההשוואה לשוק ב-Studio, ופתרון עקיף של רווחים לבנים מהפלט של ההשוואה לשוק שלא מופיעים ב-Studio (Ia61d0, b/227205461, b/286306579, b/285912360)
- תוקנה תגובה עבור
FrameTimingMetric
. מדד המשנה הואframeDurationCpuMs
. (Ib097f, b/288830934).
גרסה 1.2.0-alpha16
21 ביוני 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
משוחרר. גרסה 1.2.0-alpha16 מכילה את התחייבויות אלה.
שינויים ב-API
- השם של API
BaselineProfileRule.collectBaselineProfile()
השתנה ל-BaselineProfileRule.collect()
. (I4b665)
תיקוני באגים
- תמיכה ב-מאקרובנצ'מרק ל-
androidx.benchmark.profiling.mode = MethodTracing
. (I7ad37, b/285912360) - הפרופיילינג של המיקרובנצ'מרקים עבר לשלב נפרד, לכן הוא מתרחש ברצף אחרי המדידה במקום להחליף אותו.
MethodTracing
קטעי מעקב נכללים עכשיו גם במעקב Perfetto שתועד, אם יש כאלה. (I9f657, b/285014599) - צריך להוסיף את מדידת הספירה לפונקציה
TraceSectionMetric
עםMode.Sum
. (Ic121a, b/264398606)
גרסה 1.2.0-alpha15
7 ביוני 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
משוחרר. גרסה 1.2.0-alpha15 מכילה את התחייבויות אלה.
תכונות חדשות
- נוסף
MemoryUsageMetric
ניסיוני למעקב אחר שימוש בזיכרון של אפליקציית יעד. (I56453, b/133147125, b/281749311) - הוספת תמיכה בהגדרות מותאמות אישית של Perfetto באופן מלא באמצעות
PerfettoTrace.record
(If9d75, b/280460183) - נוסף נכס כדי לדלג על יצירת פרופיל בסיסי. שימוש:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020)
שינויים ב-API
- ה-API של
collectBaselineProfile
תמיד יוצר פרופילי בסיס יציבים. ממשק ה-API שלcollectStableBaselineProfile
הוסר ובמקום זאת יש להשתמש ב-collectBaselineProfile
. (I17262, b/281078707) - הפרמטר
filterPredicate
שלBaselineProfileRule
שונה לערך שאינו null, עם ערך ברירת מחדל מקביל כך שהתנהגות ברירת המחדל של המסנן תהיה ברורה יותר ב-Docs. (I3816e)
תיקוני באגים
- כדי לשפר את הביצועים באופן משמעותי, צריך להשבית את המעקב אחר
IsolationActivity
ואת המעקב אחר Perfetto ב-dryRunMode
, כי אלה היו רוב זמן הריצה. (Ie4f7d) - תמיכה בדגימות מקבץ קריאות במדדי מאקרובנצ'מרקים באמצעות ארגומנטים בבדיקת אינסטרומנטציה
androidx.benchmark.profiling.mode=StackSampling
ו-androidx.benchmark.profiling.sampleFrequency
. (I1d13b, b/282188489) - תיקון הקריסה כשמשחררים תוכנות הצללה (shader) ב-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 מכילה את התחייבויות אלה.
תכונות חדשות
- הפלאגין החדש להדרגה של פרופיל הבסיס פורסם בגרסת אלפא, כדי שיהיה קל יותר ליצור פרופיל בסיסי ולפשט את תהליך העבודה של המפתחים.
שינויים ב-API
- הוסרה התמיכה במעקב אחר Perfetto ב-API 21 ו-22, שכוללת גם את נקודות המיקרו-בנצ'מרקים וגם את ממשקי ה-API הניסיוניים של
PerfettoTrace
. לפני הגרסה הזו,UiAutomation
חיבורים לא היו מהימנים במכשירים מסוימים. (I78e8c) - נוסף ממשק API ניסיוני ציבורי ל-
PerfettoTraceProcessor
כדי לאפשר ניתוח של תוכן למעקב. זהו שלב לקבלת מדדים מותאמים אישית לחלוטין שמבוססים על נתוני מעקב של Perfetto. (I2659e, b/219851406)
גרסה 1.2.0-alpha11
8 במרץ 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
משוחרר. גרסה 1.2.0-alpha11 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנו קריסות ב-
MacrobenchmarkRule
וב-BaselineProfileRule
בהתקנה מחדש או בחילוץ פרופילים מ-App Bundle עם מספר חבילות APK. (I0d8c8, b/270587281)
גרסה 1.2.0-alpha10
22 בפברואר 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
משוחרר. גרסה 1.2.0-alpha10 מכילה את התחייבויות אלה.
תכונות חדשות
- ב-Android מגרסה 14 ואילך, בזכות תכונת פלטפורמה חדשה, אפליקציית Macrobenchmark כבר לא מתקינים מחדש אפליקציות יעד כדי לאפס את מצב הידור. בעבר היה צורך להסיר מכשיר עם הרשאות בסיס או לטפל בכל מצבי האפליקציה (למשל התחברות של משתמש) לפני כל הפעלה של נקודת השוואה. (I9b08c, b/249143766)
תיקוני באגים
- צריך לתקן את
DryRunMode
כך שלא תקרוס יותר עם פרופיל ריק עקב דילוג על הידור. במקום זאת, הוא מריץ איטרציה אחת ומחלץ את הפרופיל כדי להבטיח שמשהו יתועד. (I2f05d, b/266403227) - תיקון הקריסה של
PowerMetric
בבדיקת נוכחות של powerstats ברמות API ישנות. (5faaf9, b/268253898)
גרסה 1.2.0-alpha09
11 בינואר 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
משוחרר. גרסה 1.2.0-alpha09 מכילה את התחייבויות אלה.
תיקוני באגים
- בוצעה העברה של ארגומנט האינסטרומנטציה
None
עדandroidx.benchmark.enabledRules
כדי להשבית את כל נקודות ההשוואה / יצירת פרופיל הבסיס. (I3d7fd, b/258671856) - תיקון הצילום של
PerfettoTrace
במודולים של אפליקציה (כלומר חבילות APK לבדיקה ללא אינסטרומנטציה עצמית) (I12cfc) - תוקן סדר הארגומנטים של שליפת פרופיל הבסיס בפלט של Studio (I958d1, b/261781624)
- ממשק ה-API 33 של אמולטור זרוע (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 ישנה מדי. עכשיו המשמעות היא לעדכן את הגרסה של מנהל ההתקנה של הפרופיל (1.2.1) למדידת הפרופילים הבסיסיים ב-API 31 עד 33, במקום לציין שהיא לא נתמכת. (Ia517f, b/253519888)
- תיקון מספר כשלים בפקודת מעטפת בהודעת שגיאה הדרושה להדפסת ממשק API <=23, כולל כשלים בצילום משהו בינארי ובכישלונות של תיעוד מעקב (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()
עלול לקרוס בגלל שחסר מרשם שידורים במניפסט של 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
למדידת אנרגיה וחשמל במדדי מאקרובנצ'מרקים. (Ife601, b/220183779) - בוצע תיקון של
MacrobenchmarkScope.dropShaderCache()
כדי לשחרר את המטמון של תוכנת ההצללה (shader). הפעולה הזו מסירה כ-20 אלפיות שנייה של רעש מנקודות השוואה שלStartupMode.COLD
, כי תוכנות הצללה נמחקות עכשיו באופן עקבי בכל איטרציה. בעבר, אם נעשה שימוש בהידור שלPartial
באמצעות איטרציות בשלב החימום, התקבל דיווח על מספרים מהירים שגויים, כי היה סיכוי גבוה יותר ששמירה במטמון של תוכנת ההצללה תתרחש במהלך תקופת ההכנה. כדי לתקן את הבעיה, צריך מכשיר עם הרשאות בסיס או להשתמש ב-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
בפרופיל הבסיסי, כך שאפשר להעתיק את פקודת המשיכה בקלות אם כמה מכשירים מחוברים (עד אמולטור אחד) (I6ac6c, b/223359380) - יש להוסיף שגיאה אם ה-APK של הבדיקה של macrobenchmark לא מוגדר כאינסטרומנטציה עצמית. השגיאה הזו מונעת השוואה לתמחור המאקרו בתוך התהליך של אפליקציית היעד. בתהליך הזה, ל-מאקרו בנצ' לא תהיה אפשרות להדר/למחוק/להפעיל את האפליקציה במצב התחלתי (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)- השינוי הזה גם מתקן את האופן שבו פרופילים של אפליקציה נמחקים לדיסק במכשירים שלא עברו תהליך רוט (Root), אבל נדרש עדכון בתלות של מנהל ההתקנה של אפליקציית היעד.
- כדי להשתמש ב-
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, מדלגת על הידור (compilation), מסתירה את כל שגיאות ההגדרה ומשביתה את הפלט של קובץ ה-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 במאקרו בנצ'מרק:
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, שמאפשרת למדוד אינטראקציות בכל האפליקציה כמו הפעלה וגלילה, מספקת אפשרות לתעד מעקב וגם למדוד קטעי מעקב.
תמיכה בפרופילים בסיסיים
CompilationMode.Partial
כדי למדוד את היעילות של פרופילים בסיסיים.@BaselineProfileRule
כדי ליצור באופן אוטומטי פרופילים בסיסיים של תהליך משתמש קריטי.
תמיכה במדדי הקצאה profiling במהלך הפעלות של 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 מנוהלים במהלך יצירת פרופילים בסיסיים באמצעות 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>
, ולאחר מכן לעקוף את שלב ההידור במאקרובנצ'מרק.לדוגמה ב-build.gradle במאקרו בנצ'מרק:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
או משורת הפקודה Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
אפשרה לשתף מודול בין נתוני מאקרובנצ'מרקים לבין יצירת בדיקות של פרופיל הבסיס על ידי הוספת ארגומנט האינסטרומנטציה
androidx.benchmark.enabledRules
. העברה ב-'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 מכילה את שמירות האלה.
תיקוני באגים
- לקישורים לפלט פרופיל הבסיס ב-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)
- תיקון מדדי ההפעלה של מדדי מאקרובנצ'מרקים כשמשתמשים ב-
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
לזיהוי ויסות חום (throttle) ב-Q (API 29) ומעלה. כך תפחיתו משמעותית את התדירות של תוצאות חיוביות בזיהוי ויסות נתונים תרמי (ניסיון חוזר לתמחור בתעשייה אחרי 90) תקופת צינון שנייה), והאצת נקודות ההשוואה באופן משמעותי ביחס למשתמש לבנות. הוא גם מספק זיהוי ויסות נתונים גם כשהשעונים נעולות (אם הן נעולות גבוה מדי לגודל הפיזי של המכשיר הסביבה). (I9c027, b/217497678, b/131755853)סינון פרופיילינג שנדגם באמצעות דגימה פשוטה ל-thread
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
לספריית המאקרו של ההשוואה לשוק מתחת לסימון הניסיוני כדי לאפשר זיהוי של בעיות אודיו (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)
- מניעת פקודות במעטפת הידור (compilation) ב-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 מכילה את התחייבויות אלה.
תיקוני באגים
- דגימת ערימה של מיקרובנצ'מרק / פרופיל מעקב שיטה והתוצאות מקושרות עכשיו בפלט של 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
- הוספת מעקב מערכת עם תקורה נמוכה לפלט Microsoftbench ב-Android Q (API מגרסה 29 ואילך). חשוב לשים לב שנכון לעכשיו, התכונה הזו לא מתעדת מעקב מותאם אישית (באמצעות
android.os.Trace
אוandroidx.tracing
ממשקי API של Jetpack) כדי למנוע השפעה על התוצאות. המעקב הזה אמור לעזור לאבחון חוסר יציבות, במיוחד ממקורות שמחוץ לנקודת ההשוואה. (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)
- הטמעות מעודכנות של מדדי הפעלה שיסתיימו תמיד ב- הסוף של רינדור השרשור. ההפרדה הזו תהיה עקבית יותר בפלטפורמות השונות וממפותות יותר למדידות בתוך האפליקציה. (Ic6b55)
גרסה 1.1.0-alpha11
3 בנובמבר 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
משוחרר. גרסה 1.1.0-alpha11 מכילה את התחייבויות אלה.
שינויים ב-API
- מדד מאקרובנצ'מרק כולל עכשיו
minSdkVersion
של23
. (If2655) - מוסיפה
BaselineProfileRule
ניסיוני חדש שיכול ליצור פרופילים בסיסיים עבור התהליך הקריטי של המשתמש באפליקציה. תיעוד מפורט בהמשך. (Ibbefa, b/203692160) - הסרה של וריאנט של ממשק מדידה חוזר, שהתווסף עבור מתקשרים של Java, מכיוון שזה גרם לעמימות בהשלמת/פתרון של . מתקשרים ל-Java יצטרכו שוב להחזיר את Unit.Instance מ- בוצעה מדידה חוזרת. אם זו אי נוחות, אפשר לדווח על באג, יוכל לחזור למצב הזה בגרסה עתידית. (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, שמתמקד ב אחוזונים של דגימות מרובות לכל איטרציה. (I56247, b/199940612)
- מעבר למדדי נקודה צפה (floating-point) לאורך נקודת ההשוואה ספריות (קטועות בממשק המשתמש של 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 הנמוכה ביותר שאמורה לקבל תמיכה בעתיד. ה-minSDK הנוכחי שנתמך ב-minSDK ממשיך להיות מועבר באמצעות DemandApi(), וכרגע הוא 29 (I440d6, b/183129298)
תיקוני באגים
- תיקון
ProfileInstaller
כדי להקל על אפליקציות שמשתמשות בפרופילים בסיסיים להריץ נקודות מאקרו באמצעות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
- בוצעה החלפה של startActivityAnd Wait כדי להפעיל הפעלה דרך
am start
, מה שמקטין את הסיכוי כל איטרציה של מדידה בכ-5 שניות, בעלות של הפסקת התמיכה של Intents. (I5a6f5, b/192009149
תיקוני באגים
- הפחתת מידת האגרסיביות של זיהוי ויסות חום לחשב מחדש את ערך הבסיס אם מזוהות ויסות נתונים לעיתים קרובות. (I7327b)
- מתקן FrameTimingMetric כדי לפעול בגרסת בטא של Android S (Ib60cc, b/193260119)
- אפשר להשתמש ב-
EmptyActivity
כדי להוציא את אפליקציית היעד ממצב של עצירה ידנית כדי לתמוך טוב יותר ב-CompilationMode.BaselineProfile
. (Id7cac, b/192084204) - הסיומת של קובץ המעקב שונתה ל-
.perfetto-trace
כדי להתאים לתקן הפלטפורמה. (I4c236, b/174663039) - StartupTimingMetric מפיקה עכשיו את הפלט של "fullDrawnMs" ערך כדי למדוד את הזמן עד לסיום העיבוד של האפליקציה. שפת תרגום כדי להגדיר את המדד הזה לאפליקציה, קוראים ל-Activity.reportFullyDrawn כאשר התוכן הראשוני שלכם מוכן, למשל כשהפריטים ברשימה הראשונית נטענים מ-DB או מהרשת. (שיטת reportFullyDrawn זמינה ללא בדיקות של גרסאות build ב-ComponentActivity). חשוב לשים לב שהבדיקה חייבת להימשך מספיק זמן כדי לתעד את המדד (startActivityAnd Wait לא מחכה ל-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
חדש כדי לתמוך בפרופילים שהותקנו באמצעות ספריית Jetpack ProfileInstaller. (aosp/1720930)
תיקוני באגים
קוד Gradle לדוגמה למניעת שגיאות השוואה לשוק עודכן, ועכשיו הוא משתמש ב-API שלא הוצא משימוש, עם תחביר שתומך גם במשתמשי .gradle.kts.
למשל:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
גרסה 1.1.0-alpha02
18 במאי 2021
ההשוואה לשוק בגרסה 1.1.0-alpha02 מספקת רכיב גדול לביצוע ההשוואה לשוק – Macrobenchmark. בנוסף למדד בנצ'מרק, שמאפשר למדוד לולאות של המעבד (CPU) וגם מאקרובנצ'מרק מאפשר למדוד אינטראקציות בכל האפליקציה, כמו הפעלה וגלילה, ולתעד את המעקבים. מידע נוסף זמין במסמכי התיעוד של הספרייה.
androidx.benchmark:benchmark-*:1.1.0-alpha02
משוחרר. גרסה 1.1.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
נוספו פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) של מאקרובנצ'מרק (androidx.benchmark:benchmark-macro-junit4
ו-androidx.benchmark:benchmark-macro
)
- תיעוד מדדי הביצועים של ההפעלה, הגלילה או האנימציה מהאפליקציה, באופן מקומי או ב-CI
- תיעוד ובדיקה של מעקבים מתוך Android Studio
תיקוני באגים
- בעיה בהרשאות המעטפת בספריית הפלט ב-Android 12 (הערה – יכול להיות שיהיה צורך לעדכן את הפלאגין Android Gradle ל-canary בגרסה 7.0.0 ואת Android Studio ל-Arctic Fox (2020.3.1), כדי להמשיך לתעד את קובצי הפלט במכשירים המושפעים). (Icb039)
- תמיכה בשמירה במטמון של הגדרות אישיות ב-BenchmarkPlugin (6be1c1, b/159804788)
- פלט קובץ פשוט יותר – מופעל כברירת מחדל, בספרייה שלא מחייבת שימוש ב-
requestLegacyExternalStorage=true
(8b5a4d, b/172376362) - תיקון אזהרות Logcat של הדפסת ספרייה במקרים של אי-איתור שרשור JIT בגרסאות פלטפורמה שבהן הוא לא נמצא. (I9cc63, b/161847393)
- תיקון לתדירות המקסימלית של קריאה במכשיר. (I55c7a)
גרסה 1.1.0-alpha01
10 ביוני 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01
, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
ו-androidx.benchmark:benchmark-junit4:1.1.0-alpha01
שוחררו. גרסה 1.1.0-alpha01 מכילה את התחייבויות אלה.
התכונות החדשות של גרסה 1.1
- מדד הקצאה – השוואה לשוק מופעלת עכשיו שלב נוסף אחרי שלב ההכנה והתזמון, ומתעדת את ספירת ההקצאות. הקצאות יכולות לגרום לבעיות בביצועים בגרסאות ישנות של הפלטפורמה (140 אלפיות השנייה ב-O הפכו ל-8 אלפיות שנייה ב-M – נמדדות ב-Nexus5X עם שעונים נעולים). המדד הזה מוצג בפלט של מסוף Android Studio, וגם
- תמיכה ביצירת פרופילים – עכשיו אפשר לתעד נתוני פרופיילינג לגבי הרצת השוואה לשוק, כדי לבדוק למה הקוד פועל לאט. השוואה לשוק תומכת בתיעוד שיטת המעקב או בדגימת שיטה מ-ART. אפשר לבדוק את הקבצים האלה בעזרת ה-Profiler ב-Android Studio באמצעות קובץ > פתיחה.
- עכשיו הפלאגין Gradle של ההשוואה לשוק מספק עכשיו ברירות מחדל להגדרה פשוטה יותר:
testBuildType
מוגדר להפצה כברירת מחדל, כדי להימנע משימוש ביחסי תלות עם כיסוי קוד מובנה. סוג ה-buildType של הגרסה מוגדר גם כ-buildType שמוגדר כברירת מחדל, כך ש-Android Studio יכול לבחור באופן אוטומטי את וריאנט ה-build הנכון כשפותחים פרויקט בפעם הראשונה. (b/138808399)signingConfig.debug
משמש כהגדרת ברירת המחדל לחתימה (b/153583269)
** תיקוני באגים **
- צמצמו באופן משמעותי את התקורה של המעבר בשלב החימום, שבה המדידה הראשונה של כל נקודת השוואה הייתה גבוהה באופן מלאכותי מאחרים. הבעיה הזו הייתה בולטה יותר בנקודות השוואה קטנות מאוד (מיקרו-שנייה אחת או פחות). (b/142058671)
- תוקנה שגיאה אחת (
InstrumentationResultParser
) שמודפסת בכל נקודת השוואה בזמן הרצה משורת הפקודה. (I64988, b/154248456)
בעיות מוכרות
- בשורת הפקודה וברמה הדרגתית של ההשוואה לשוק, התוצאות לא תודפס באופן ישיר. אפשר לעקוף את הבעיה באמצעות הרצה ב-Studio או ניתוח של קובץ הפלט של JSON כדי לקבל תוצאות.
- המערכת לא מצליחה לשלוף את הדוח ממכשירים שבהם מותקנת אפליקציה עם מזהה application שמסתיים ב-android או בהורדה (לא תלוי-רישיות). משתמשים שנתקלו בבעיה הזו צריכים לשדרג את הפלאגין 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
ספריית ההשוואה לשוק מאפשרת לכתוב נקודות השוואה לביצועים של קוד אפליקציה ולקבל תוצאות במהירות.
המדיניות הזו מונעת בעיות בהגדרות של build וזמן ריצה, ומייצבת את ביצועי המכשיר, כדי להבטיח שהמדידות מדויקות ועקביות. כדאי להפעיל את נקודות ההשוואה ישירות ב-Android Studio או באינטגרציה רציפה (CI) כדי לבחון את ביצועי הקוד לאורך זמן ולמנוע רגרסיות.
התכונות העיקריות כוללות:
- ייצוב השעון
- תעדוף אוטומטי של שרשורים
- תמיכה בבדיקת הביצועים של ממשק המשתמש, כמו בדוגמה של 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 ל-Bנצ'מרקים
תיקוני באגים
- תוקנה בעיה של חוסר יציבות במדד, שבמקרים שבהם 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 ייצור שגיאות איתור שגיאות בקוד כשלא משתמשים ב-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
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
שינויים ב-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
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
הוספנו גם תיעוד חדש לאופן השימוש בספריית ההשוואה לשוק ללא Gradle, לשימוש עם מערכות build שונות (כמו Bazel או Buck) וגם לצורך הרצה ב-CI. מידע נוסף זמין במאמרים יצירת נקודות השוואה ללא Gradle והרצת נקודות השוואה באינטגרציה רציפה (CI).
תכונות חדשות
- פלאגין של Gradle
- עכשיו כיסוי הבדיקה משבית באופן אוטומטי ומגדיר את
AndroidBenchmarkRunner
כברירת מחדל (b/138374050) - נוספה תמיכה בעותק נתונים חדש מבוסס AGP, בזמן הפעלת נקודות השוואה ובשימוש ב-AGP 3.6 ואילך
- עכשיו כיסוי הבדיקה משבית באופן אוטומטי ומגדיר את
- הוספות של פורמט JSON
- זמן הריצה הכולל של בדיקת ההשוואה לשוק בפלט (b/133147694)
- נקודות השוואה של
@Parameterized
שמשתמשות במחרוזת שם (לדוגמה,@Parameters(name = "size={0},depth={1}")
) יעשו עכשיו פלט של שמות פרמטרים וערכים לכל נקודת השוואה בפלט ה-JSON (b/132578772)
- מצב Dry Run (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 מספקות הודעות תיאוריות יותר עם הצעות לפתרון הבעיה.
- המסכים מופעלים באופן אוטומטי במהלך הפעלות השוואה לשוק, במקום להיכשל כשהמסך כבוי
תרומות חיצוניות
- תודה לסרגיי זאקהרוב שתורם לשיפורים בפלט JSON ולתיקון הבעיות בכיבוי המסך.
גרסה 1.0.0-alpha03
2 ביולי 2019
androidx.benchmark:benchmark:1.0.0-alpha03
ו-androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
- חשיפת משך השינה עקב ויסות נתונים (throttle) תרמי לכל נקודת השוואה בדוח JSON המלא
תיקוני באגים
- אין יותר צורך להשתמש בפלאגין של Gradle אחרי החסימה של 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
לא נדבק בחלק ממכשירי OS האחרונים (b/133424037) - זיהוי ויסות נתונים מושבת לאמולטור (b/132880807)
גרסה 1.0.0-alpha01
7 במאי 2019
androidx.benchmark:benchmark:1.0.0-alpha01
משוחרר. התחייבות למחיר הנמוך ביותר
בגרסה הזו זמינים
כאן.