השוואה לשוק

מודדים בצורה מדויקת את ביצועי הקוד ב-Android Studio.
העדכון האחרון גרסה יציבה מועמד לפרסום גרסת בטא גרסת אלפא
7 באוגוסט 2024 1.2.4 1.3.0-rc01 - -

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

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

נקודת מאקרו

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

מגניב

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

Kotlin

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

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

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

מגניב

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

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

Kotlin

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

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

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

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

מגניב

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

Kotlin

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

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

מגניב

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

משוב

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

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

מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.

גרסה 1.3

גרסה 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.
  • ממשקי API למדדים ניסיוניים חדשים

    • נוסף TraceSectionMetric ניסיוני, שמאפשר לחלץ תזמון פשוט מחסימות של trace("") {} באפליקציה, או TraceMetric כדי למנף את יכולת השאילתות המלאה של Perfetto TraceProcessor.
    • נוסף 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 לבנצ'מרק.
  • תיקונים
    • פתרון חסר של רווחים לבנים מובילים בפלט של נקודת ההשוואה של 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

גרסה 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 לשלוש מחלקות – מלא, ללא, חלקי. בעבר הם היו שמות באופן לא עקבי על שם ארגומנטים מסוג הידור (compilation) (שאנו מתייחסים אליהם עכשיו כאל פרטי הטמעה) ושל תכונות. כך יכולים להיות ברורים יותר החסרונות, השילובים הפוטנציאליים וההתנהגות בין גרסאות הפלטפורמה. (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 הנמוכה ביותר שאמורה לקבל תמיכה בעתיד. התמיכה ב-min API הנוכחי עדיין ניתנת להעברה באמצעות requiredApi(), וכרגע הוא 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 מכילה את התחייבויות אלה.

תכונות חדשות

תיקוני באגים

  • קוד 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 לגרסה 7.0.0 Canary ואת Android Studio ל-Arctic Fox (2020.3.1), כדי להמשיך לתעד את קובצי הפלט במכשירים המושפעים). (Icb039)
  • תמיכה בשמירה במטמון של הגדרות אישיות ב-BenchmarkPlugin (6be1c1, b/159804788)
  • פלט קובץ פשוט יותר – מופעל כברירת מחדל, בספרייה שלא מחייבת שימוש ב-requestLegacyExternalStorage=true (8b5a4d, b/172376362)
  • תיקון אזהרות Logcat של הדפסת ספרייה במקרים של אי-איתור שרשור JIT בגרסאות פלטפורמה שבהן הוא לא נמצא. (I9cc63, b/161847393)
  • תיקון לתדירות המקסימלית של קריאה במכשיר. (I55c7a)

גרסה 1.1.0-alpha01

10 ביוני 2020

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

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

  • מדד הקצאה – השוואה לשוק מופעלת עכשיו שלב נוסף אחרי שלב ההכנה והתזמון, ומתעדת את ספירת ההקצאות. הקצאות יכולות לגרום לבעיות בביצועים בגרסאות ישנות של הפלטפורמה (140 אלפיות השנייה ב-O הפכו ל-8 אלפיות שנייה ב-M – נמדדות ב-Nexus5X עם שעונים נעולים). המדד הזה מוצג בפלט של מסוף Android Studio, וגם
  • תמיכה ביצירת פרופילים – עכשיו אפשר לתעד נתוני פרופיילינג לגבי הרצת השוואה לשוק, כדי לבדוק למה הקוד פועל לאט. השוואה לשוק תומכת בתיעוד שיטת המעקב או בדגימת שיטה מ-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
  • הוספת תמיכה בדוחות השוואה לשוק של מכשירי 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 משוחרר. התחייבות למחיר הנמוך ביותר בגרסה הזו זמינים כאן.