השוואה לשוק

מדידת הביצועים של הקוד ב-Android Studio בצורה מדויקת.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫1 ביולי 2026 1.4.1 - - ‎1.5.0-alpha07

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

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

Macrobenchmark

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

Groovy

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

Kotlin

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

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

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

Groovy

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

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

Kotlin

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

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

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

כדי להשתמש בפלאגין, מוסיפים את השורה הבאה לבלוק 'plugins' בקובץ build.gradle ברמה העליונה:

Groovy

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

Kotlin

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

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

Groovy

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

משוב

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

יצירת דיווח על בעיה חדשה

מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.

גירסה 1.5

גרסה ‎1.5.0-alpha07

‫1 ביולי 2026

androidx.benchmark:benchmark-*:1.5.0-alpha07 מופץ. גרסה ‎1.5.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • לכידת מעקב ב-Perfetto במכשיר בצורה פשוטה יותר. (I48810)
  • העברה של ממשקי ה-API של התוסף הניסויי TraceProcessor.runServer מ-androidx.benchmark:benchmark-macro אל androidx.benchmark:benchmark-common, ואל חבילת androidx.benchmark. כך יהיה אפשר להשתמש בהם בעתיד בבדיקות מיקרו. (Ie25bb, b/393640753)

תיקוני באגים

  • עדכון ההטמעה של traceprocessor (וגם של Perfetto Trace capture לא מקובץ) לשימוש ב-Perfetto גרסה 56.0 ‏ (I8fb9d)
  • כברירת מחדל, הערכים של androidx.benchmark.requireAot ו-androidx.benchmark.requireAot מוגדרים כ-true. הגדרות ברירת המחדל הבטוחות יותר האלה מבטיחות שההידור יתבצע לפני הפעלת מיקרו-בנצ'מרקים (מופעל כברירת מחדל באמצעות תוסף הבנצ'מרק gradle כשמשתמשים ב-AGP מגרסה 8.4 ואילך), ושהפונקציה measureRepeated לא תופעל בשרשור הראשי, שבו היא עלולה לגרום ל-ANR. (I1bc3c, b/379115078)
  • הארכנו את הזמן הקצוב לתפוגה של הפקודה kill ב-Perfetto מ-5 ל-30 שניות (רק עבור סשנים של Perfetto שנלכדו בבדיקת ביצועים). הוספנו רישום שגיאות ברור יותר ביומן כשהבעיה מתרחשת. (If188f, b/435589290)

גרסה ‎1.5.0-alpha06

‫6 במאי 2026

androidx.benchmark:benchmark-*:1.5.0-alpha06 מופץ. גרסה ‎1.5.0-alpha06 מכילה את השמירות האלה.

תיקוני באגים

  • הטיפול בסביבות מרובות משתמשים צריך להיות חלק כשמעבירים קבצים מספריית הפלט של ההשוואה לספריית הפלט של הבדיקה הנוספת. (I90da5, ‏ b/489358149)

גרסה ‎1.5.0-alpha05

‫25 במרץ 2026

androidx.benchmark:benchmark-*:1.5.0-alpha05 מופץ. גרסה ‎1.5.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • בוצע עדכון של ArtMetric כדי להתחשב בחבילות ברמה העליונה, וזה חשוב במיוחד כשמשתמשים ב-AGP/R8 בגרסה 9.1 ואילך, או באפשרות הגלובלית -repackageclasses. בעבר, ArtMetric לא הצליח לזהות את טעינות המחלקות האלה במדידות של artClassLoad.... (If8a35, ‏ b/487402058)

תכונות חדשות - נוסף ארגומנט חדש של מכשור androidx.benchmark.requireLockedClocks שמאפשר להפעיל בדיקה כדי לראות אם שעוני המעבד נעולים במכשירים עם הרשאות Root. (Id82e8, b/468039042)

גרסה ‎1.5.0-alpha04

‫11 במרץ 2026

androidx.benchmark:benchmark-*:1.5.0-alpha04 מופץ. גרסה ‎1.5.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הוספתי את JvmOverloads אל PowerMetric.Energy ואל PowerMetric.Power (Iac0d0, ‏ b/481371562).

תיקוני באגים

  • בוצע עדכון של ArtMetric כדי להתחשב בחבילות ברמה העליונה, וזה חשוב במיוחד כשמשתמשים ב-AGP/R8 בגרסה 9.1 ואילך, או באפשרות הגלובלית -repackageclasses. בעבר, ArtMetric לא הצליח לזהות את טעינות המחלקות האלה במדידות של artClassLoad.... (I207ca, ‏ b/487402058)

גרסה ‎1.5.0-alpha03

‫11 בפברואר 2026

androidx.benchmark:benchmark-*:1.5.0-alpha03 מופץ. גרסה ‎1.5.0-alpha03 מכילה את השמירות האלה.

  • העדכון תלוי בגרסת הבטא UiAutomator 2.4.

גרסה ‎1.5.0-alpha02

‫28 בינואר 2026

androidx.benchmark:benchmark-*:1.5.0-alpha02 מופץ. גרסה ‎1.5.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • הוספנו תמיכה חלקית ביצירת פרופיל Baseline למודולים של Kotlin Multiplatform. בדרך כלל אפשר להגדיר תלויות בפרופילים באמצעות ההגדרה baselineProfile של Gradle בבלוק התלויות, אבל כרגע זה לא עובד במודולים של KMP.

    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // THIS DOES NOT WORK
          // baselineProfile(":yourProducerProject")
        }
      }
    }
    
  • במקום זאת, צריך להגדיר את יחסי התלות באמצעות התוסף baselineProfile. (Ie19c4)

    plugins {
        id("org.jetbrains.kotlin.multiplatform")
        id("com.android.kotlin.multiplatform.library")
        id("androidx.baselineprofile.consumer")
    }
    
    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // ...
        }
      }
    }
    // Define dependencies
    // This works !
    baselineProfile {
      variants {
        androidMain {
          from(project(":yourProducerProject"))
        }
      }
    }
    

גרסה ‎1.5.0-alpha01

‫17 בדצמבר 2025

androidx.benchmark:benchmark-*:1.5.0-alpha01 מופץ. גרסה ‎1.5.0-alpha01 מכילה את השמירות האלה.

  • ‫Macrobenchmark 1.5 משתמש ב-UiAutomator 2.4 כדי לפשט את האינטראקציה עם האפליקציה שנמדדת. האובייקט MacrobenchmarkScope מרחיב עכשיו את UiAutomatorTestScope, מה שמאפשר לכם להשתמש בממשקי ה-API המודרניים של UiAutomator, כמו onElement { ... }.click().
  • מידע נוסף על UiAutomator 2.4 זמין במאמרי העזרה.

תכונות חדשות

  • פלאגין Baseline Profile Gradle לא דורש יותר newDsl=false ב-AGP 9.0 (‏Iaaac7, ‏b/443311090)
  • הרחבת הגדרות המעקב כך שיכללו את גודל הליבה (למשל, קטנה/גדולה) בנקודת ההשוואה של עקבות המערכת/Perfetto שתועדו. (I8e397, b/457469959)

שינויים ב-API

  • (ב-UiAutomator) שונה startActivity wait ל-wait for new window. (I35da6, ‏ b/440021797)
  • ייצוב של ממשקי BlackHole API ב-androidx.benchmark. (I2b67e, ‏ b/451749438)
  • הוספת @JvmOverloads עבור בנאים נוחים לשימוש עבור PerfettoTraceRule. ‫(I1510a, ‏ b/443763207)

גרסה 1.4

גרסה 1.4.1

‫10 בספטמבר 2025

androidx.benchmark:benchmark-*:1.4.1 מופץ. גרסה 1.4.1 מכילה את השמירות האלה.

תיקוני באגים

  • הערך perfettoSdkTracing=true (לדוגמה, כשעוקבים אחרי יצירת הודעה במיקרו-בנצ'מרק) יגרום להפסקת תהליך היעד אם הוא כבר פועל, ולא צוין StartupMode. (Ib2c1f)

גרסה 1.4.0

‫30 ביולי 2025

androidx.benchmark:benchmark-*:1.4.0 מופץ. גרסה 1.4.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.3.0

Microbenchmark

  • העברנו את משימות Gradle‏ lockClocks ו-unlockClocks לפרויקטים של השוואה לשוק, במקום לרמה העליונה, כדי לכבד את הבידוד של פרויקט Gradle.
  • שינינו את הקוד של BenchmarkRule כך שהוא מבוסס על קורוטינות, ושיפרנו את ההתנהגות של yield(). הפעולה הזו אמורה להפחית באופן משמעותי את הסיכון ל-ANR במהלך הפעלות של בדיקות השוואתיות, במיוחד הפעלות ארוכות של CI. הערה: צריך להריץ את נקודות ההשוואה של ממשק המשתמש עם measureRepeatedOnMainThread

Macrobenchmark

  • נוסף פתרון עקיף ב-API 34 ומעלה ל-CompilationMode.None(), שהביצועים שלו לא עקביים בגלל שהאימות של ART מתבצע עכשיו באופן חלקי בזמן ההידור של האפליקציות אחרי ההפעלה הראשונה.
  • תכונה ניסיונית – Startup Insights יכולה להדגיש בעיות נפוצות מסוימות בבדיקת מאקרו של הפעלה על ידי העברת MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))).
  • נוסף ArtMetric שאפשר להשתמש בו כדי לזהות קומפילציה של JIT וטעינת מחלקות לא אופטימלית – שניהם שימושיים לאימות האופטימיזציות של פרופיל ה-Baseline.

פרופילים של Baseline

  • מעכשיו, BaselineProfileRule אוסף פרופילים לאפליקציות מרובות תהליכים.

שינויים אחרים

  • הפונקציה TraceProcessor הועברה לספרייה משלה (androidx.benchmark:benchmark-traceprocessor) כדי שאפשר יהיה להשתמש בה מחוץ למדדים של Macrobenchmark, במקרים אחרים. אפשר גם להריץ אותו ב-JVM במחשב על ידי הגדרה של ServerLifecycleManager משלכם.

גרסה ‎1.4.0-rc01

‫18 ביוני 2025

androidx.benchmark:benchmark-*:1.4.0-rc01 מופץ. גרסה ‎1.4.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • נוסף פתרון עקיף לתמונות בזמן ריצה שגורמות ל-CompilationMode.None() לא למדוד את הביצועים במקרה הגרוע ביותר אחרי האיטרציה הראשונה. לצערנו, הפתרון העקיף הזה מחייב השהיה של 5 שניות כדי להשחית בכוונה את תמונת זמן הריצה בתחילת כל חבילת בדיקות מאקרו (I4a4f1).

גרסה ‎1.4.0-beta02

‫4 ביוני 2025

androidx.benchmark:benchmark-*:1.4.0-beta02 מופץ. גרסה ‎1.4.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף BaselineProfileConfig.Builder כדי להקל על מפתחי Java להתקשר אל BaselineProfileRule.collectWithResults(). (I94905)

גרסה ‎1.4.0-beta01

‫7 במאי 2025

androidx.benchmark:benchmark-*:1.4.0-beta01 מופץ. גרסה ‎1.4.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה וריאציה של בנאי PerfettoTraceRule שמקבלת PerfettoConfig (Ie53ba)

תיקוני באגים

  • בוצע עדכון בפורמט של קישור לתובנות לגבי הפעלה כדי להשתמש בפלאגין הנכון, ונוסף תו הפרדה ברור יותר (: קצר יותר מ-%3A, ושניהם נתמכים) (Ie18ef)TraceProcessor
  • תמיד משתמשים בהפסקת פעולה כדי להפסיק תהליכים, גם כשמבצעים פעולות רוט ומפסיקים אפליקציות מערכת. תיקון חריגים בטופס: Expected no stdout/stderr from killall ... No such process. (Idca2c)

חישוב צריכת הנתונים

  • נוסף handler לחריגות ב-Proxy עבור TraceProcessorHttpServer (I480f5)

גרסה ‎1.4.0-alpha11

‫9 באפריל 2025

androidx.benchmark:benchmark-*:1.4.0-alpha11 מופץ. גרסה ‎1.4.0-alpha11 מכילה את השמירות האלה.

שינויים ב-API

  • השתנה משך הזמן הקצוב לתפוגה של הארגומנט TraceProcessor: משך הזמן הקצוב לתפוגה הוא timeoutMs ארוך לשימושיות של Java caller. (I9fbb5)
  • סימון של בנאי TraceProcessor כפנימי. המתקשרים צריכים להשתמש ב-TraceProcessor.startServer או ב-TraceProcessor.runServer. (Ia8c5b)

תיקוני באגים

  • כשמשתמשים בפקודה MacrobenchmarkScope.killProcess כדי להפסיק את הפעולה של האפליקציה, צריך לאמת את התוצאות של פקודת ההפסקה כדי למנוע כשל שקט ושגיאת זמן קצוב לתפוגה. (I84555)

עדכונים של תלות

  • הספרייה הזו מטרגטת עכשיו את רמת השפה Kotlin 2.0 ונדרשת KGP 2.0.0 או גרסה חדשה יותר. (Idb6b5)

גרסה ‎1.4.0-alpha10

‫26 במרץ 2025

androidx.benchmark:benchmark-*:1.4.0-alpha10 מופץ. גרסה ‎1.4.0-alpha10 מכילה את השמירות האלה.

שינויים ב-API

  • הארכנו את הזמן הקצוב לתפוגה שמוגדר כברירת מחדל לטעינת השרת ולשאילתות ב-TraceProcessor ל-120 שניות (לעומת 60/30 שניות בעבר), וגם אפשרנו להגדיר את שניהם באמצעות פרמטר אחד של זמן קצוב לתפוגה. (Ifec87)

תיקוני באגים

  • תוקנו כמה בעיות שהתרחשו כשמבצעים השוואה בין ביצועים או כשמצלמים פרופילים של אפליקציה בלי profileinstaller, והוא כלול ב-BroadcastReciever. הבעיה הזו משפיעה רק על הפעלות במכשירים עם הרשאת Root. (Ied308)

גרסה ‎1.4.0-alpha09

‫12 במרץ 2025

androidx.benchmark:benchmark-*:1.4.0-alpha09 מופץ. גרסה ‎1.4.0-alpha09 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את TraceProcessor ו-Session API עם ידיות שאפשר לסגור, כדי להקל על השימוש במחזורי חיים מותאמים אישית. זהו גם צעד לקראת שימוש קל יותר ב-Coroutine וב-Java API. הפונקציות של התוסף TraceProcessor.runServer {} מסומנות עכשיו כניסיוניות, כי סביר להניח שהן יועברו ויהפכו ללא ניסיוניות בעתיד. (I358b4)

תיקוני באגים

  • תוקנה הבעיה שבה לא ניתן היה לצלם את פרופיל ההשוואה לביצועים ואת פרופיל הבסיס באמצעות API 36 בגלל שינוי ב-pgrep toybox שדורש עכשיו -a להדפסת שורת הפקודה המלאה. (Idc991)
  • סינון של הגדרת ברירת המחדל למעקב כדי לצמצם את הסיכון לאובדן נתונים במעקבים ברמות API חדשות יותר. (I54e8a)
  • הוספנו ארגומנט ניסיוני של אינסטרומנטציה, androidx.benchmark.killExistingPerfettoRecordings, שאפשר להגדיר לו את הערך false כדי לאפשר המשך של לכידת עקבות קיימת של Perfetto. כברירת מחדל, כדי למנוע הפרעות, מתבצעת השבתה של קבצים קיימים של מעקב אחר פעולות ב-Perfetto במכשיר. (I02a3c)
  • שדה ה-JSON‏ context.osCodenameAbbreviated יהיה עכשיו REL בגרסאות של מערכת ההפעלה שפורסמו ב-API 35 ומעלה, כי הפלטפורמה הבסיסית כבר לא תומכת בשמות קוד לא מספריים. (Ib17fd)
  • תוקנה קריסה ב-FrameTimingMetric כשמתרחשים פריימים שמסונכרנים מחדש. (I7c6f4, b/394610806)
  • ההנחה ש-Choreographer#doFrame הוא החלק העליון של מסגרת הסטאק בשרשור הראשי עבור FrameTimingQuery כבר לא תקפה. (Iee0e0, ‏ b/340206285)

גרסה ‎1.4.0-alpha08

‫12 בפברואר 2025

androidx.benchmark:benchmark-*:1.4.0-alpha08 מופץ. גרסה ‎1.4.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • העברנו את ממשקי ה-API של התוספים TraceProcessor.runSession() למצב ניסיוני, כי סביר להניח שבסופו של דבר הם יהפכו לבנאים קונקרטיים ב-Android. (Ib0528, ‏ b/393640753)
  • רוב ההטמעה של Startup Insights היא עכשיו ציבורית או ניסיונית, ועוברת לארטיפקט TraceProcessor. ראו StartupInsights. (I0aa00)
  • הוצאנו משימוש את BenchmarkRule.runWithTimingDisabled {} לטובת BenchmarkRule.runWithMeasurementDisabled {}, שמתאר בצורה ברורה יותר את ההתנהגות – כל המדדים מושהים. בנוסף, צריך לחשוף את מחלקת העל MicrobenchmarkScope כי אי אפשר להצהיר מחדש על הפונקציה runWithMeasurementDisabled כדי לפתוח גישה, כי היא מוטמעת. (I9e23b, ‏ b/389149423, ‏ b/149979716)
  • ספריות ההשוואה עברו ל-Kotlin 2.0. (I9d1e0)
  • הוסר ארגומנט של מכשור androidx.benchmark.startupProfiles.enable. הוא כבר לא שימושי, כי אפשר לשלוט בו באמצעות הארגומנט includeInStartupProfile ב-BaselineProfileRule.collect(). (I39eb4)

תיקוני באגים

  • צמצמנו את מספר הפונקציות הפנימיות של Microbenchmark שמופעלות במהלך יצירת פרופיל, כדי שיהיה ברור יותר למשל ב-Method traces (Ifaed8)
  • תיקון ספקולטיבי לקריסות: 'Failed to stop [ProcessPid(processName=perfetto, pid=...)]'. מעכשיו, במקום לקרוס, Benchmark ירשום הודעה ביומן אם לא תהיה אפשרות לעצור תהליך Perfetto ברקע לפני הפעלת ההשוואה לשוק. (I37d3e, ‏ b/323601788)
  • תיקון IllegalStateExceptions עם התווית 'פלט צפוי של stdout pm dump-profiles' שנגרמו כתוצאה מבדיקה קפדנית מדי של פורמט הפלט. (I358dc)

גרסה ‎1.4.0-alpha07

‫29 בינואר 2025

androidx.benchmark:benchmark-*:1.4.0-alpha07 מופץ. גרסה ‎1.4.0-alpha07 מכילה את השמירות האלה.

תכונות חדשות

  • BaselineProfileRule כולל עכשיו API של collectWithResults(...) שכולל רשימה של נתיבים לפרופילים המחושבים. (I056f8)
  • נוסף ארגומנט האינסטרומנטציה androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline, שאפשר להגדיר לו את הערך false כדי להשבית את ההתנהגות של measureRepeatedOnMainThread שגורמת להפסקת הפעולה כשמגיעים למועד האחרון, לצורך בדיקות מקומיות. לא מומלץ להשתמש באפשרות הזו, כי היא מגדילה את הסיכוי להתרחשות של שגיאות ANR במהלך הבדיקות. (Idbeec, b/353226476)

שינויים ב-API

  • הוספת @JvmOverloads לקונסטרוקטור MicrobenchmarkConfig. (I13fd3)
  • שינינו את הקוד של BenchmarkRule כך שהוא מבוסס על קורוטינות, ושיפרנו את ההתנהגות של yield(). במסגרת השינוי הזה הוסרו כמה ממשקי BenchmarkState API ניסיוניים, אבל נחליף אותם לפי הצורך. בנוסף, הוספנו את runWithMeasurementDisabled כדי להבהיר את ההתנהגות (כל המדידות מושהות). בעתיד, המדיניות runWithTimingDisabled תצא משימוש. (I19837, b/389149423, b/311242861)
  • מעבירים את PerfettoTraceProcessor אל TraceProcessor בארטיפקט androidx.benchmark:benchmark-traceprocessor חדש, ורוב ה-API שלו לא ניסיוני. כל TraceMetric מותאם אישית או כל דבר שקורא ממעקבים יצטרך להתעדכן לייבוא החדש של TraceProcessor. ממשק ה-API החדש TraceProcessor פועל בדיוק כמו ממשק ה-API הישן, אבל הוא ספריית ממשק עצמאית (בדומה לשכבת androidx.sqlite מ-Room) עם הטמעה ספציפית ל-Android שמוטמעת ב-macrobenchmark. אפשר להשתמש בארטיפקט החדש גם ב-JVM, אבל כרגע צריך להפעיל עותק משלכם של קובץ ה-TraceProcessor הבינארי ולספק יציאה להתחברות אליו. (I3a767, I62563, b/381134564)

תיקוני באגים

  • הצגת הודעת שגיאה ברורה יותר כש-MacrobenchmarkScope.startActivityAndWait לא מצליח להפעיל את תהליך היעד (יכול להיות שזה בגלל קריסה בתהליך היעד), במקום ההודעה המעורפלת יותר 'לא ניתן לאשר את השלמת הפעלת הפעילות' (I3539b)
  • תוקנו כמה שגיאות תחביר בדוגמאות של Kotlin, והוסף הדגשת תחביר בכמה דוגמאות של Java / build.gradle. (Ib3808)
  • הוספנו הבהרות למסמכי הפרמטרים ArtMetric ו-CaptureInfo. (I96e60)

גרסה ‎1.4.0-alpha06

‫11 בדצמבר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha06 מופץ. גרסה ‎1.4.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • הוסר השימוש ב-@Language("sql") ב-PerfettoTraceProcessor.Session.query(), כי ההדגשה או הניתוח ב-Studio לא פועלים. ‫(Idc2fa, ‏ b/377733398)

תיקוני באגים

  • הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify לגבי ערכי null, שהן אנוטציות של שימוש בטיפוסים. מפתחי Kotlin צריכים להשתמש בארגומנט המהדר הבא כדי לאכוף שימוש נכון: -Xjspecify-annotations=strict (זוהי ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin). ‫(I46810, ‏ b/326456246)
  • תוקן ArtMetric כדי לדווח על טעינת מחלקה (לא על הפעלה), והמסמכים שופרו כדי להבהיר את התנהגות זמן הריצה. (I9915c)
  • ב-Android Multiuser, מריצים פקודות כמשתמש root רק במכשירים עם הרשאות root. (I88b44)

גרסה ‎1.4.0-alpha05

‫13 בנובמבר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha05 מופץ. גרסה ‎1.4.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • נפתרה בעיה ב-API 34 ומעלה שגרמה לכך שהביצועים של CompilationMode.None() לא היו עקביים ולא ייצגו את הביצועים הראשוניים במקרה הגרוע. השינוי הזה נועד לעקוף שינוי בפלטפורמה שמאפשר למצב הקומפילציה של ART‏ verify לקמפל אפליקציות באופן חלקי (משפיע רק על טעינת מחלקות) זמן קצר אחרי ההפעלה הראשונה. (Ie48d0)
  • תוקנה בעיה שבה (במיוחד) אפשר היה לתעד עקבות קצרים שלא דיווחו על מדידה ממדדי Macrobenchmark מובנים, כי שם התהליך נחתך בעקבות Perfetto. עכשיו, כדי לעקוף את הבעיה הזו, כלי ההשוואה המקרוסקופית מחפש את שם החבילה הקטום בכל השאילתות המובנות, בנוסף לשם החבילה הצפוי. שימו לב שאפשר להטמיע את אותו אופן פעולה בהטמעות מותאמות אישית של TraceMetric או בקריאות ישירות אחרות של PerfettoSession.query, על ידי שינוי של process.name LIKE "$packageName" בשאילתת Perfetto ל-(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))"). (I5bf01, b/377565760)

גרסה ‎1.4.0-alpha04

‫30 באוקטובר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha04 מופץ. גרסה ‎1.4.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • (ניסיוני) הפעלה של יצירת פרופיל בסיסי והשוואה בין אפליקציות שמותקנות למשתמש משני, למשל כל אפליקציה במכשירי Android Auto ללא ראש. התמיכה הזו נבדקה בתרחישים מסוימים, אבל אם היא לא עובדת בשבילכם, אתם יכולים לדווח לנו על באג. (I9fcbe, ‏ b/356684617, ‏ b/373641155)

תיקוני באגים

  • isProfileable תמיד מוחלף בגרסאות של השוואה לשוק, וגם isDebuggable תמיד מוחלף בגרסאות של השוואה לשוק ובגרסאות של nonMinified (תיעוד פרופיל בסיסי). (I487fa, ‏ b/369213505)
  • תוקן באג בזיהוי קומפילציה בחלק מהמכשירים הפיזיים לפני API 28 – משפיע על json context.compilationMode, וגם על ההתנהגות של androidx.benchmark.requireAot=true (שכבר לא מופעל באופן שגוי) (Ic3e08, ‏ b/374362482)
  • במדדים CpuEventCounter, אם מזוהים מדידות לא תקינות (למשל, instructions/cpucycles==0) (I8c503)

גרסה ‎1.4.0-alpha03

‫16 באוקטובר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha03 מופץ. גרסה ‎1.4.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • Macrobenchmark: נוסף ArtMetric, שאפשר להשתמש בו כדי לבדוק את כיסוי הפרופיל או את הביצועים הכלליים של Android RunTime. מציג את המספר ואת משך הזמן הכולל של JIT, של הפעלת המחלקה (אם זמין) ושל אימות המחלקה. בנוסף, בוצעו שינויים CaptureInfo כדי לכלול גרסה אופציונלית של ART mainline עם ברירת מחדל. (I930f7)
  • מוסיפים את coefficientOfVariation לפלט ה-JSON של ההשוואה לשוק כדי להציג את היציבות במהלך הפעלת השוואה לשוק. (Ib14ea)

תיקוני באגים

  • תוקן CollectBaselineProfileTask כשיש רווחים במכשיר AVD. ‫(Ia0225, b/371642809)
  • תיקון משוער של שגיאות מחריגים של StartupMode.COLD: Package <packagename> must not be running prior to cold start!. עכשיו, MacrobenchmarkScope.killProcess() (כולל הפעולה שמופעלת לפני כל איטרציה, שמשמשת להטמעה של התנהגות StartupMode.COLD) ימתין לאימות שכל התהליכים של האפליקציה הפסיקו לפעול. ‫(I60aa6, b/351582215)
  • תוקנה בעיה שבה השגיאה UNLOCKED_ הופיעה בחלק מהאמולטורים עם הרשאות רוט. (Ic5117)
  • הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify לגבי ערכי null, שהן אנוטציות של שימוש בטיפוסים. מפתחי Kotlin צריכים להשתמש בארגומנט המהדר הבא כדי לאכוף שימוש נכון: -Xjspecify-annotations=strict (זוהי ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin). ‫(I7104f, ‏ b/326456246)

גרסה ‎1.4.0-alpha02

‫2 באוקטובר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha02 מופץ. גרסה ‎1.4.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • העברנו את המשימות של Gradle‏ lockClocks ו-unlockClocks לפרויקטים של השוואה לשוק, במקום שהן יהיו זמינות ברמה העליונה. השינוי הזה היה הכרחי כי לצערנו אין דרך לרשום את הפעולות האלה כפעולות ברמה העליונה בלי לפגוע בבידוד הפרויקט. (I02b8f, b/363325823)

תיקוני באגים

  • BaselineProfileRule אוסף עכשיו פרופילים לאפליקציות מרובות תהליכים על ידי שליחת אות לכל תהליך שפועל בסוף הבלוק כדי ליצור פרופילים. אם קומפילציה שמבוססת על פרופיל לא מצליחה למצוא תהליך לשידור, הקומפילציה תיכשל, כי לא צפויים נתונים של פרופיל בתוכה. בנוסף, נוסף ארגומנט אינסטרומנטציה לשליטה במשך ההמתנה של ה-dump: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • מ-Benchmark 1.3.2: תוקנה הבעיה שגרמה לכך שלא הייתה אפשרות למשוך קבצים של פרופיל Baseline או תוצאות של Macrobenchmark מ-Baseline Profile Gradle Plugin ב-Firebase Test Lab‏ (FTL). ‫(I2f678, ‏ b/285187547)

כדי להשתמש ב-FTL, צריך להחיל את הפלאגין על מודול פרופיל ה-Baseline בבלוק הפלאגין, עם:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

ואז מגדירים את Firebase Test Lab עם:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

בנוסף, צריך להוסיף את מכשיר ה-FTL שנוצר לתוסף של פרופיל ה-Baseline:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

גרסה ‎1.4.0-alpha01

‫18 בספטמבר 2024

androidx.benchmark:benchmark-*:1.4.0-alpha01 מופץ. גרסה ‎1.4.0-alpha01 מכילה את השמירות האלה.

תכונה חדשה – תובנות לגבי הפעלת אפליקציות

  • אפשר להפעיל את הגרסה הראשונית של התובנות לגבי הפעלת האפליקציה ב-Macrobenchmark. (09fae38)

כדי להפעיל השוואה לשוק בסטארטאפ:

  @Test
  fun startup {
      macrobenchmarkRule.measureRepeated(
          
          packageName = "com.example.my.application.id"
          metrics = listOf(StartupTimingMetric()),
          iterations = 5,
          startupMode = StartupMode.COLD,
          compilationMode = CompilationMode.None(),
          experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
          ) {
          scope.startActivityAndWait(...)
      }
  }

לאחר מכן, הפעלת ההשוואה של הסטארטאפ תנתח את העקבות כדי לחפש בעיות נפוצות, ותדפיס אותן אחרי המדדים בפלט הבדיקה של Studio בכרטיסייה 'השוואה', למשל:

StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│   ├──   timeToFullDisplayMs                min  1,147.2,   median  1,208.8,   max  1,307.4
│   └──   timeToInitialDisplayMs             min  1,147.2,   median  1,208.8,   max  1,307.4
├── App Startup Insights
│   ├── App in debuggable mode (expected: false)
│   │   └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│   ├── Potential CPU contention with another process (expected: < 100000000ns)
│   │   └── seen in iterations: 4(105022546ns)
│   └── Main Thread - Binder transactions blocked (expected: false)
│       └── seen in iterations: 7(true)
└── Traces
    └── Iteration 0 1 2 3 4 5 6 7 8 9

התכונה הזו עדיין נמצאת בתהליך פיתוח, ובהמשך נשפר את התיעוד ואת יכולת ההרחבה שלה. נשמח לקבל משוב.

תכונות חדשות

  • נוספה מאפיין gradle‏ androidx.baselineprofile.suppressWarnings כדי להשבית את כל האזהרות של פרופיל הבסיס. (314153a)
  • מדדי מיקרו-בנצ'מרק מוצגים עכשיו ב-Perfetto traces כדלפקים. (3214854)
  • נוספו סקריפטים ניסיוניים להשבתת jit (נדרשת גישת root או הפעלה מחדש של זמן הריצה) ולאיפוס של מצב הביצועים או הבדיקה של המכשיר. הם לא מתפרסמים כרגע כמשימות gradle. (7c3732b)
  • נוסף ארגומנט של השוואה לביצועים כדי לדלג על בדיקות כשמריצים באמולטור. כשהאפשרות automaticGenerationDuring build מופעלת, גם מדדי השוואה לשוק יפעילו יצירה של פרופיל Baseline. הפעולה תיכשל אם נעשה שימוש באמולטורים. עם הארגומנט החדש skipBenchmarksOnEmulator, אפשר לדלג על הבדיקה. (0c2ddcd)
  • שינוי הלוגיקה להפעלת אירועי ביצועים כדי שתפעל ב-API 23 ומעלה (2550048)

שינויים ב-API

  • הארגומנט הקיים של הניסוי PerfettoConfig עד MacrobenchmarkRule.measureRepeated() הועבר לאובייקט החדש ExperimentalConfig.

תיקוני באגים

  • הגדלת מספר הניסיונות החוזרים של lockClocks.sh (99e9dac)
  • אם כבר קיימים סוגי build של nonMinified ושל השוואה לשוק, אל תיצרו אותם. בגלל באג, גם אם סוגי ה-build של nonMinified ושל ההשוואה היו קיימים, הם היו נוצרים מחדש. (e75f0a5)
  • להתעלם מפלחים לא סופיים מתוצאות TraceSectionMetric. (a927d20)
  • שיפור הבדיקה של האמולטור כדי להתייחס לקידומת sdk_. (1587de8)
  • התייחסות לחבילות שלא פועלות כאל חבילות שנוקו ב-FrameTimingGfxInfoMetric. (35cc79c)
  • תוקנה בעיה שגרמה לכך שהפונקציה androidx.benchmark.cpuEventCounter הפיקה ערכים פגומים לאירועים שאינם אירועי הוראות. (06edd59)
  • תיקנו את resumeTiming/runWithTimingDisabled כך שיכבד את סדר העדיפות של המדדים, ויפחית באופן משמעותי את ההשפעה של השהיה או הפעלה מחדש של מדד עם עדיפות נמוכה על התוצאות של מדד עם עדיפות גבוהה יותר. לדוגמה, אם משתמשים במונה ביצועים של CPU באמצעות ארגומנט המכשיר cpuEventCounter.enable, הערך של timeNs לא יקטן באופן משמעותי יותר כשמשהים או מפעילים מחדש את המכשיר. (5de0968)

גרסה 1.3

גרסה 1.3.4

‫26 במרץ 2025

androidx.benchmark:benchmark-*:1.3.4 מופץ. גרסה 1.3.4 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנו בעיות של חוסר תאימות בבידוד פרויקט Gradle בפלאגין Benchmark Baseline Gradle. (b/404523257)

גרסה 1.3.3

‫16 באוקטובר 2024

androidx.benchmark:benchmark-*:1.3.3 מופץ. גרסה 1.3.3 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן CollectBaselineProfileTask כשבמכשיר AVD יש רווחים (Ia0225, ‏ b/371642809)

גרסה 1.3.2

‫2 באוקטובר 2024

androidx.benchmark:benchmark-*:1.3.2 מופץ. גרסה 1.3.2 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה הבעיה שבה לא הייתה אפשרות למשוך קבצים של תוצאות פרופיל Baseline או Macrobenchmark מ-Baseline Profile Gradle Plugin ב-Firebase Test Lab‏ (FTL). ‫(I2f678, ‏ b/285187547)

כדי להשתמש ב-FTL, צריך להחיל את הפלאגין על מודול פרופיל ה-Baseline בבלוק הפלאגין, עם:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

ואז מגדירים את Firebase Test Lab עם:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

בנוסף, צריך להוסיף את מכשיר ה-FTL שנוצר לתוסף של פרופיל ה-Baseline:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

גרסה 1.3.1

‫18 בספטמבר 2024

androidx.benchmark:benchmark-*:1.3.1 מופץ. גרסה 1.3.1 מכילה את השמירות האלה.

תיקוני באגים

  • נוספה מאפיין gradle‏ androidx.baselineprofile.suppressWarnings כדי להשבית את כל האזהרות של פרופיל ה-Baseline (I7c36e, ‏ b/349646646)
  • הפלאגין Baseline Profile Gradle תוקן כך שישתמש בקבצים nonMinified… ו-benchmark… קיימים אם הם נוצרו על ידי האפליקציה, במקום ליצור עטיפות. (Ia8934, ‏ b/361370179)
  • תוקנה בעיה ב-java.lang.AssertionError: ERRORS (not suppressed): EMULATOR כש-automaticGenerationDuringBuild מופעלת באמולטורים. הארגומנט החדש משמש לדילוג על הבדיקה. (If3f51, ‏ b/355515798)
  • הקטנת מיקרו-מדדים – שמירה על מחלקות משנה של org.junit.runner.notification.RunListener בספריית מדדים של ProGuard (Ic8ed5, b/354264743)
  • תיקון TraceSectionMetric כדי להתעלם מפרוסות שלא מסתיימות. בעבר, משך הזמן של אירועים כאלה נחשב כ-1-, למשל במהלך סיכום או חיפוש של משך הזמן המינימלי. (If74b7)
  • תוקנה בעיה ב-FrameTimingGfxInfoMetric שגרמה לקריסה של הפעלת המדד אם התהליך לא פעל כבר. (I6e412)

גרסה 1.3.0

‫21 באוגוסט 2024

androidx.benchmark:benchmark-*:1.3.0 מופץ. גרסה 1.3.0 מכילה את השמירות האלה.

שינויים ב-Microbenchmark מאז גרסה 1.2.0

  • ברוב המכשירים, מעקב אחר שיטות מופעל כברירת מחדל במיקרו-בנצ'מרקים.
    • מעקב אחר שיטות מופעל כשלב נפרד, אחרי המדידות – כך אפשר להפיק גם מדידות מדויקות וגם מעקב אחר שיטות מהרצה אחת של השוואה לשוק
    • תיעוד method בחלק מהגרסאות של Android OS ו-ART ישפיע על שלבי מדידה מאוחרים יותר – בגרסאות האלה, תיעוד method מושבת כברירת מחדל, ואזהרה מודפסת בפלט של סטודיו
  • נקודות השוואה של ה-Thread הראשי ו-ANR
    • נוספה measureRepeatedOnMainThread למדדי ביצועים של שרשור ממשק המשתמש (למשל, מדדים שמתקשרים עם ממשקי משתמש של Compose/View) כדי למנוע שגיאות ANR כשמריצים את הבדיקה במשך כמה שניות.
    • המערכת מדלגת על עקבות של שיטות אם צפוי שהן יחרגו מהמועד האחרון למניעת ANR. כדי להשבית את ההתנהגות הזו, צריך להגדיר את androidx.benchmark.profiling.skipWhenDurationRisksAnr כ-false (לא מומלץ להגדיר את האפשרות הזו להרצות CI, כי מקרי ANR עלולים לגרום לבעיות בהרצות CI ארוכות).
  • הקטנה
    • כללי proguard מוטמעים כדי לשפר את המיקרו-בנצ'מרקינג כשהפונקציה minification מופעלת
    • כדי להשתמש ב-Minification/R8 במודול של ספרייה, צריך AGP 8.3, ואפשר להפעיל אותו באמצעות android.buildTypes.release.androidTest.enableMinification בקובץ build.gradle
    • נוסף API ניסיוני של BlackHole.consume() כדי למנוע הסרה של קוד לא פעיל (If6812, ‏ b/286091643)
  • מדדים
    • תכונה ניסיונית של מונה אירועי CPU (מדדים מ-perf_event_open, שדורש הרשאות בסיס ברוב הגרסאות של הפלטפורמה), גישה דרך InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (אפשר להגדיר ל-true), ואפשר להגדיר את androidx.benchmark.cpuEventCounter.events למשל ל-(Instructions,CpuCycles). התכונה הזו אמורה להיות נתמכת בחלק מהאמולטורים של userdebug, אבל התמיכה לא נבדקה בכל האמולטורים הזמינים

שינויים ב-MACRObenchmark מאז גרסה 1.2.0

  • שיפוץ של מעקב אחר שיטות בבדיקות ביצועים כלליות.
    • עכשיו, מעקב אחר שיטות מוגבל למשך הזמן של measureBlock, ויכול לתעד כמה סשנים אם התהליך מתחיל כמה פעמים.
    • בעבר, מעקב אחר שיטות עבודה פעל רק עבור StartupMode.COLD benchmarks, ולא תיעד כלום עבור measureBlocks שלא הפעיל מחדש את תהליך היעד
    • תיקנו את השטיפה של עקבות השיטה בבדיקת מאקרו, כך שעקבות השיטה אמורים להילכד במלואם ולהיות תקפים, גם במכשירים איטיים יותר. (I6349a, ‏ b/329904950)
  • תיקון של פריקת פרופיל ART במהלך איטרציות warmUp בודדות כשהתהליך מופסק, כדי שהמדידות של CompilationMode.Partial(warmup=N) יהיו מדויקות יותר. (I17923)
  • הודעת שגיאה על שידור Shader שנכשל
    • נוספו הצעות לניפוי באגים להודעת השגיאה על שידור של shader להצללה
    • מוסיפים שני ארגומנטים של אינסטרומנטציה כדי לעקוף את התנהגות ההשמטה של Shader, וכך למנוע קריסות כשמבצעים השוואה בין אפליקציות בלי ProfileInstaller 1.3:
      • androidx.benchmark.dropShaders.enable=true/false : אפשר להשתמש באפשרות הזו כדי לדלג על כל ההסרה של Shader (כולל זו שמתבצעת בהפעלות של StartupMode.Cold), במיוחד כשמבצעים השוואה בין אפליקציות שעדיין לא משתמשות ב-profileinstaller 1.3
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : אפשר להשתמש בו כדי לסבול כשלים בניסיון להשמיט הצללות, למשל כשמבצעים השוואה בין אפליקציות בלי profileinstaller 1.3‏ (I4f573)
  • נוסף וריאנט ניסיוני MacrobenchmarkRule#measureRepeated שמקבל PerfettoConfig בהתאמה אישית להקלטת עקבות Perfetto בהתאמה אישית מלאה. שימו לב: הגדרות שגויות עלולות לגרום לכשלים במחלקות המדדים המובנות. (Idfd3d, ‏ b/309841164, ‏ b/304038384)
  • כדי לצמצם את ההפרעות, כדאי לבטל את משימות ה-dexopt ברקע לפני שמריצים Macrobenchmark. (I989ed)
  • הכלי Macrobenchmark ממתין עכשיו שנייה אחת עד שהאפליקציה המטרה תבצע flush לפרופיל ART (בעבר הוא המתין 500 אלפיות השנייה). ‫(I85a50, ‏ b/316082056)
  • שיפוץ של TraceSectionMetric
    • הערה: TraceSectionMetric שינויים שמופיעים בהמשך יכולים להשפיע על הפלט בשימוש ב-CI, ועלולים ליצור אי-רציפות או לשבש את הניתוח
    • הסכום הוא עכשיו ברירת המחדל, כי רוב השימוש במדד הזה הוא לאירועים חוזרים, והערך הראשון יבטל את הנתונים במקרים האלה
    • השינוי מאפשר יותר התאמה אישית, עם יותר מצבים זמינים
    • שמות המצבים מוטמעים עכשיו בשם הפלט של המדד (ב-Studio וב-JSON)
    • עכשיו יש תמיכה בפרוסות שנוצרו באמצעות Trace.{begin|end}AsyncSection.
  • מדדים
    • Power - Added PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() and PowerMetric.deviceSupportsPowerEnergy()
    • השם Metric.getResult שונה ל-getMeasurements כדי להתאים לסוג ההחזרה
    • נוספו תוויות של log.w / exception לכל הכשלים בזיהוי הפעלה. השינוי הזה לא משנה את ההתנהגות הנוכחית (כך שחלק מהשגיאות מופעלות, ואחרות נכשלות בשקט בזיהוי ההפעלה), אלא רק הופך אותה למובנת יותר. בדרך כלל, האירועים שבהם Log.w() ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם קשורים למסגרת, ומוצגים חריגים כשמזוהה הפעלה, למעט מידע על תזמון המסגרת (מפרוסות של ממשק המשתמש/זמן אמת). (‫Id240f, ‏ b/329145809)
    • הוספנו את המדידה frameCount ל-FrameTimingMetric כדי לעזור לזהות תרחישים שבהם המדידות משתנות בגלל שינוי במספר הפריימים שנוצרו (הוספנו אנימציות חדשות, תיקנו בעיות שגרמו לביטול תוקף). (I1e5aa)
    • הוספנו הבהרה שלפיה frameOverrunMs הוא המדד המועדף למעקב כשהוא זמין במסמכי התיעוד, והסבר למה. (I18749, ‏ b/329478323)
    • תוקנה בעיה שבה אפשר היה לשייך מסגרות לא סגורות בתחילת המעקב ובסופו, מה שהוביל לדיווח שגוי של מסגרת אחת ארוכה במיוחד. (I39353, b/322232828)
    • שיפור השגיאה FrameTimingMetric כשלא נוצרים פריימים, ותמיד מוציא קישור למעקב כשניתוח המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9)
    • תוקנה קריסה ב-FrameTimingMetric שלא הצליחה לנתח את מזהה המסגרת, במיוחד במכשירי OEM מסוימים. (Ia24bc, ‏ b/303823815, ‏ b/306235276)
    • הפחתנו את רמת ההקפדה של הבדיקות ב-FrameMetrics והוספנו פרטים נוספים להודעות השגיאה. (Iadede)

שינויים בפלאגין Baseline Profile Gradle מאז גרסה 1.2.0

  • הגרסה המקסימלית המומלצת של AGP עלתה ל-9.0.0-alpha01.
  • חשוב לוודא שהמשימות mergeArtProfile ו-mergeStartupProfile תמיד ימתינו ליצירת פרופיל ה-Baseline. ‫(I623d6, b/343086054)
  • אם יצירת פרופיל הבסיס תצליח, תופיע סיכום של השינויים שבוצעו (I824c8,‏ b/269484510)
  • נוסף DSL כדי להשבית אזהרות (Ic4deb, ‏ b/331237001)
  • צריך לפתור את הבעיה כדי להבטיח שההשוואות ישתמשו בפרופילים שנוצרו כפרופילים בסיסיים כשautomaticGenerationDuringBuild מושבת (Ic144f, ‏ b/333024280)
  • תיקנו את הדריסות של מאפייני הפלאגין BaselineProfile של Gradle כדי לאפשר יצירה של פרופיל Baseline והשוואה בין פרופילים כשמבצעים התאמה אישית של סוג build של nonMinified או של השוואה בין פרופילים. (Ib8f05, b/324837887)
  • תיקון לבעיה שקשורה להכללת פרופילים של Baseline בספריית AAR לפני AGP 8.3.0-alpha15. (I1d2af, b/313992099)
  • תוקנה כתובת ה-URL של הפלט של פרופיל הבסיס ופרופיל ההפעלה בסיום משימת היצירה. (I802e5, ‏ b/313976958)

שינויים משמעותיים אחרים מאז גרסה 1.2.0

  • איסוף נתוני מעקב
    • הפחתת שגיאת EXITCODE 2 בהפעלה של perfetto משגיאה לאזהרה שנרשמה ביומן
    • הפעלת מעקב אחר AIDL כברירת מחדל במבחני ביצועים(נדרש API 28) (Ia0af2, ‏ b/341852305)
    • הפעלת מעקב אחרי תגי Porter כברירת מחדל בהשוואות לשוק. כך מתבצעת לכידה של נקודות מעקב של נעילת מסך, למשל. (Icfe44, ‏ b/286551983)
    • הגדלנו את הזמן הקצוב לתפוגה של התחלת לכידת נתונים כדי למנוע קריסות כשמתחילים מעקב במכשירים איטיים יותר (I98841, b/329145808)
    • נוספו ממשקי API ציבוריים PerfettoTraceProcessor.Session.queryMetrics ממשקי API עם וריאציות של JSON,‏ textproto ו-proto בינארי (לא מפוענח). הפרמטרים האלה מאפשרים לכם לשלוח שאילתות לגבי מדדים שמוטמעים ב-TraceProcessor (I54d7f, ‏ b/304038382)
    • הפעלת חסימת התחלה ברשומה של עקבות Perfetto כדי להפחית את הסיכון לנתונים חסרים בתחילת העקבות. התמיכה קיימת רק ב-API מגרסה 33 ואילך. (Ie6e41, ‏ b/310760059)
  • פלט JSON
    • נוסף מידע נוסף בהקשר של השוואה (benchmark) בפלט JSON:
      • context.artMainlineVersion – גרסה שלמה של מודול ראשי של Art (אם הוא קיים במכשיר, אחרת -1)
      • context.build.id ‎- Equals android.os.Build.ID
      • context.build.version.codename – שווה ל-android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename – מתאים לאות הראשונה של שם הקוד של גרסת טרום-ההפצה (כולל בגרסאות הפצה) (Ie5020)
    • נוספה רשימת profilerOutput לפלט JSON כדי להקל על השימוש בכלי פרופילים (למשל, Perfetto, Method traces) (I05ddd, b/332604449)
    • נוספה אזהרה כשמשתמשים ב-Android Test Orchestrator במודולים של בדיקות השוואתיות, כי זה יגרום לכך שקובצי ה-JSON של הפלט לכל מודול יידרסו שוב ושוב. (Ia1af6, b/286899049)
    • הפונקציה תפעל אם שמות הקבצים ארוכים מ-200 תווים, כדי למנוע קריסות לא ברורות בזמן כתיבה או עיבוד של קבצים. (I4a5ab)

גרסה ‎1.3.0-rc01

‫7 באוגוסט 2024

androidx.benchmark:benchmark-*:1.3.0-rc01 מופץ. גרסה ‎1.3.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכך ש-androidx.benchmark.cpuEventCounter הפיק ערכים פגומים לאירועים שאינם אירועי הוראות (I7386a, b/286306579)
  • תיקון resumeTiming/runWithTimingDisabled כדי להתחשב בסדר העדיפות של המדדים, וצמצום משמעותי של ההשפעה של השהיה/הפעלה מחדש של מדד בעדיפות נמוכה יותר על התוצאות של מדד בעדיפות גבוהה יותר. לדוגמה, אם משתמשים במונה ביצועים של CPU באמצעות ארגומנט המכשיר cpuEventCounter.enable, הערך של timeNs לא יקטן באופן משמעותי יותר כשמשהים או מפעילים מחדש את המכשיר. ‫(I39c2e, ‏ b/286306579, ‏ b/307445225)
  • הסיכוי שדגימת הסטאק תגרום ל-measureRepeatedOnMainThread להגיע לפסק זמן קשיח בשרשור הראשי קטן יותר, כי העברנו את ההמרה של דגימת הסטאק מהשרשור הראשי. ‫(I487a8, ‏ b/342237318)
  • הסרנו את יצירת התרשים באופן ידני של הגישה לממשקי API חדשים של הפלטפורמה, כי זה קורה באופן אוטומטי באמצעות מידול API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל R8 גרסה 3.3) ובכל הבנייה כשמשתמשים ב-AGP 8.1 ואילך (למשל D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה 8.1 של D8 או לגרסה מאוחרת יותר. למידע נוסף, מומלץ לעיין במאמר הזה. ‫(I9496c, ‏ b/345472586)
  • הוספנו בדיקה של גרסת agp כדי לשלוח את שם החבילה כארגומנט instr. בגרסאות קודמות ל-AGP 8.4.0, אי אפשר לשלוח את שם חבילת אפליקציית היעד לאפליקציית המדידה באמצעות ארגומנטים של מדידה. (0c72a3f)

גרסה ‎1.3.0-beta02

‫10 ביולי 2024

androidx.benchmark:benchmark-*:1.3.0-beta02 מופץ. גרסה ‎1.3.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • טיפול תקין ב-EXITCODE 2 כשמפעילים את Perfetto כדי לרשום אזהרה, אבל ממשיכים.

גרסה ‎1.3.0-beta01

‫12 ביוני 2024

androidx.benchmark:benchmark-*:1.3.0-beta01 מופץ. גרסה ‎1.3.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • שינינו את השם של MethodTracing.affectsMeasurementOnThisDevice ל-AFFECTS_MEASUREMENT_ON_THIS_DEVICE כדי לשמור על עקביות. (I1bdfa)
  • הוספנו API ניסיוני של BlackHole.consume() כדי למנוע הסרה של קוד לא פעיל במיקרו-בנצ'מרקים. (If6812, ‏ b/286091643)
  • הכלי Microbenchmark יפעל עכשיו בצורה תקינה כדי למנוע מהשיטה method tracing להפריע למדידות. הבעיה הזו מתרחשת במכשירים מסוימים כשמפעילים בכוח מעקב אחר שיטות (באמצעות ארגומנטים של מכשור או MicrobenchmarkConfig), ואם מנסים לבצע מדידה אחרי מעקב אחר שיטה. במכשירים שהושפעו פועל API בגרסה 26 עד 30 או גרסאות מסוימות של מודול ART mainline שהושפעו מההפרעה הזו, ואפשר לזהות אותם בזמן הריצה באמצעות ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92, ‏ b/303660864)

תיקוני באגים

  • הגרסה המקסימלית המומלצת של AGP הועלתה ל-9.0.0-alpha01. (I5bbb0)
  • נוסף מצב קומפילציה להשוואה לשוק (If5612, ‏ b/325512900)
  • הפעלת מעקב AIDL כברירת מחדל (נדרש API 28) (Ia0af2, b/341852305)
  • נוסף מידע נוסף בהקשר של השוואה (benchmark) בפלט JSON:
    • context.artMainlineVersion – גרסה שלמה של מודול ראשי של Art (אם הוא קיים במכשיר, אחרת -1)
    • context.build.id – שווה ל-android.os.Build.ID
    • context.build.version.codename – שווה ל-android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename – מתאים לאות הראשונה של שם הקוד של גרסת טרום-ההפצה (גם בגרסאות הפצה) (Ie5020)
  • בוצעו תיקונים ב-StackSampling כדי להתאים ל-androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • משנים את התלות של macro->common ל-api(), כדי שיהיה קל יותר להשתמש ב-PerfettoTrace וב-PerfettoConfig. (Icdae3, b/341851833)
  • חשוב לוודא שהמשימות mergeArtProfile ו-mergeStartupProfile תמיד ימתינו ליצירת פרופיל ה-Baseline. ‫(I623d6, b/343086054)
  • כשמחליטים אם להפעיל וריאנט, כדאי להתחשב במצב ההפעלה שלו. (I5d19e, ‏ b/343249144)
  • הגדלנו את הזמן הקצוב לתפוגה שמוגדר כברירת מחדל להפעלה של מעבד הנתונים של perfetto. (I87e8c, b/329145808)

גרסה ‎1.3.0-alpha05

‫14 במאי 2024

androidx.benchmark:benchmark-*:1.3.0-alpha05 מופץ. גרסה ‎1.3.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • הצגת חריג ברור יותר כשמדד של בדיקת ביצועים ברמת המערכת מחזיר ערכי אפס לכל האיטרציות (Iab58f, b/314931695)
  • נוספו כללי פתרון בעיות נוספים לכללי microbench proguard, כולל תמיכה בכללי listener ואזהרות או שגיאות אחרות שנצפו. ‫(I14d8f, ‏ b/329126308, ‏ b/339085669)
  • מעקב אחר שיטות פועל כשלב נפרד במהלך בדיקת ביצועים ברמת המאקרו, והוא כבר לא משפיע על המדידות. (If9a50, b/285912360, b/336588271)
  • נוספו הצעות נוספות לניפוי באגים להודעה על שידור כשל של הצללה. (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)
  • הוספנו אפשרות פשוטה יותר לתיעוד של שיטות, שמוגבלת למשך הזמן של measureBlock() בפועל. בעבר, הוא התחיל בהפעלת תהליך היעד ותמך רק בהפעלות במצב התחלתי (cold start) (Iee85a, ‏ b/300651094)
  • מניעת קריסה כשההפעלה של מעבד הנתונים של perfetto איטית (I98841, ‏ b/329145808)

גרסה ‎1.3.0-alpha03

‫17 באפריל 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 מופץ. גרסה ‎1.3.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

  • נוספו ממשקי API ציבוריים PerfettoTraceProcessor.Session.queryMetrics ממשקי API עם וריאציות של JSON,‏ textproto ו-proto בינארי (לא מפוענח). הם מאפשרים לשלוח שאילתות לגבי מדדים שמוטמעים ב-TraceProcessor (I54d7f, ‏ b/304038382)
  • נוסף profilerOutput לפלט JSON כדי להקל על השימוש בכלי פרופילים (למשל, perfetto, method traces). ‫(I05ddd, ‏ b/332604449)
  • הוספנו תג חשמל להשוואה ל-Perfetto Config. כך מתבצעת לכידה של נקודות מעקב של נעילת מסך, למשל. (Icfe44, ‏ b/286551983)
  • נוסף ארגומנט inst androidx.benchmark.profiling.skipWhenDurationRisksAnr, שאפשר להגדיר לו את הערך false כדי למנוע דילוג על מעקב אחר שיטות אם משך הזמן הצפוי עלול לגרום ל-ANR – מומלץ מאוד להימנע משימוש בארגומנט הזה בהרצות של CI.
  • נוסף ארגומנט ניסיוני של inst‏ 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)

תיקוני באגים

  • תיקון כדי להבטיח שבדיקות ההשוואה ישתמשו בפרופילים שנוצרו של Baseline כש-automaticGenerationDuringBuild מושבת (Ic144f, ‏ b/333024280)
  • תיקנו את הדריסות של מאפייני הפלאגין BaselineProfile של Gradle כדי לאפשר יצירה של פרופיל Baseline והשוואה בין ביצועים כשמבצעים התאמה אישית של nonMinified או של סוג build להשוואה בין ביצועים. (Ib8f05, b/324837887)
  • תיקנו את השטיפה של עקבות השיטה בבדיקת מאקרו, כך שעקבות השיטה אמורים להילכד במלואם ולהיות תקפים, גם במכשירים איטיים יותר. (I6349a, ‏ b/329904950)
  • הפעלת חסימת התחלה ברשומה של עקבות Perfetto כדי להפחית את הסיכון לנתונים חסרים בתחילת העקבות. התמיכה קיימת רק ב-API מגרסה 33 ואילך. (Ie6e41, ‏ b/310760059)
  • נוספה אזהרה כשמשתמשים ב-Android Test Orchestrator במודולים של בדיקות השוואתיות, כי זה יגרום לכך שקובצי ה-JSON של הפלט לכל מודול יידרסו שוב ושוב. (Ia1af6, b/286899049)
  • אכיפת שימוש בפסיק (,) כמפריד אלפים כדי לשמור על עקביות בפלט של Studio, תוך התעלמות מהלוקאל של המכשיר (I3e921, b/313496656)
  • TraceSectionMetric תומך עכשיו בפרוסות שנוצרו באמצעות Trace.{begin|end}AsyncSection. (I91b32, ‏ b/300434906)
  • נוספו תוויות של log.w / exception לכל הכשלים בזיהוי הפעלה. השינוי הזה לא משנה את ההתנהגות הנוכחית (כך שחלק מהשגיאות מופעלות, ואחרות נכשלות בשקט בזיהוי ההפעלה), אלא רק הופך אותה למובנת יותר. בדרך כלל, האירועים שבהם Log.w() ולא מדווחים על מדדי הפעלה הם אלה שבהם חסרים אירועים שאינם קשורים למסגרת, ומוצגים חריגים כשמזוהה הפעלה, למעט מידע על תזמון המסגרת (מפרוסות של ממשק המשתמש/זמן אמת). (‫Id240f, ‏ b/329145809)
  • כדי לצמצם את ההפרעות, כדאי לבטל את משימות ה-dexopt ברקע לפני שמריצים Macrobenchmark. (I989ed)
  • הוספנו את המדידה frameCount ל-FrameTimingMetric כדי לעזור לזהות תרחישים שבהם המדידות משתנות בגלל שינוי במספר הפריימים שנוצרו (הוספנו אנימציות חדשות, תיקנו בעיות שגרמו לביטול תוקף). (I1e5aa)
  • הוספנו הבהרה שלפיה frameOverrunMs הוא המדד המועדף למעקב כשהוא זמין במסמכי התיעוד, והסבר למה. (I18749, ‏ b/329478323)

גרסה ‎1.3.0-alpha02

‫20 במרץ 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 מופץ. גרסה ‎1.3.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • תמיכה ניסיונית ב-R8 במיקרו-בנצ'מרק באמצעות כללי Proguard מוטמעים. שימו לב שהתמיכה הזו היא ניסיונית, ונדרשת גרסה AGP 8.3 לצמצום של בדיקות מודול הספריות. כדי להפעיל את האופטימיזציה או המיניפיקציה של R8 במודול ההשוואה build.gradle, צריך להשתמש בקוד הבא. הפעולה הזו אמורה להוביל לשיפור משמעותי בביצועים, בהתאם לעומס העבודה. ‫(I738a3, ‏ b/184378053)

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

תיקוני באגים

  • תוקנה אזהרה לגבי מעקב אחר שיטות, כך שהיא מופיעה בשורה נפרדת מהפלט של המיקרו-בנצ'מרק. (I0455c, ‏ b/328308833)

גרסה ‎1.3.0-alpha01

‫21 בפברואר 2024

androidx.benchmark:benchmark-*:1.3.0-alpha01 מופץ. גרסה ‎1.3.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • שינינו את השם של הפרמטרים הבוליאניים MicrobenchmarkConfig כדי להימנע מהמילה המיותרת 'should' (Ia8f00, b/303387299)
  • נוסף BenchmarkRule.measureRepeatedOnMainThread כדי שבדיקות ביצועים של ה-thread הראשי (למשל, בדיקות שקשורות ל-Views או לממשקי משתמש של Compose) לא יפעילו ANR, במיוחד במהלך חבילות גדולות ב-CI. (I5c86d)
  • נוסף FrameTimingGfxInfoMetric, הטמעה חלופית ניסיונית של FrameTimingMetric עם מדידות שמגיעות ישירות מהפלטפורמה, במקום לחלץ אותן מהמעקב של Perfetto. ‫(I457cb, ‏ b/322232828)
  • הוספת היכולת ליצור dump של פרופיל ART במהלך איטרציות בודדות של warmUp. (I17923)
  • בוצעו כמה שינויים ב-TraceSectionMetric API:
    • הוספה של Mode.Min, Mode.Max
    • הוספת ארגומנט של תווית כדי לשנות את שם הקטע כתווית מדד
    • הוספנו את שם המצב לפלט כדי להבהיר את משמעות המדד
    • שינינו את ברירת המחדל לחישוב סכום, כי ברוב המקרים המדד הזה משמש לאירועים חוזרים חשוב לשים לב לשינויים האלה בשימוש ב-CI, כי הם עלולים ליצור אי-רציפות או לשבור את הניתוח. (Ic1e82, ‏ b/301892382, ‏ b/301955938)

תיקוני באגים

  • שיפור בהודעת השגיאה בתוסף Baseline Profile Gradle כשמציינים מכשיר מנוהל שלא קיים (Idea2b, ‏ b/313803289)
  • תיקון שמאפשר לכלול פרופילים של Baseline בספריית AAR לפני AGP 8.3.0-alpha15 (‏I1d2af, ‏ b/313992099)
  • תוקנה כתובת ה-URL של הפלט של פרופיל הבסיס ופרופיל ההפעלה בסוף משימת היצירה (I802e5, ‏ b/313976958)
  • בוצעו שינויים בערכי הזמן הקצוב לתפוגה של מקורות נתונים בניסיון לפתור את הבעיה java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788)
  • מוסיפים שני ארגומנטים של אינסטרומנטציה כדי לעקוף את התנהגות ההשמטה של Shader, וכך למנוע קריסות כשמבצעים השוואה בין אפליקציות בלי ProfileInstaller 1.3:
    • androidx.benchmark.dropShaders.enable=true/false : אפשר להשתמש באפשרות הזו כדי לדלג על כל ההסרה של Shader (כולל זו שמתבצעת בהפעלות של StartupMode.Cold), במיוחד כשמבצעים השוואת ביצועים של אפליקציות שעדיין לא משתמשות ב-profileinstaller 1.3
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : אפשר להשתמש בו כדי לסבול כשלים בניסיון להשמיט הצללות, למשל כשמבצעים השוואה בין אפליקציות בלי profileinstaller 1.3‏ (I4f573)
  • כדאי לדלג על מעקב אחר שיטות בשרשור ממשק המשתמש אם צפוי שהפעולה תימשך יותר מכמה שניות, ולנקות את המעקב אחר שיטות כשמתבצעת השלכה. (I6e768)
  • הפונקציה תפעל אם שמות הקבצים ארוכים מ-200 תווים, כדי למנוע קריסות לא ברורות בזמן כתיבה או עיבוד של קבצים. (I4a5ab)
  • תוקנה בעיה שבה אפשר היה לשייך מסגרות לא סגורות בתחילת המעקב ובסופו, מה שהוביל לדיווח שגוי של מסגרת אחת ארוכה במיוחד. (I39353, b/322232828)
  • משתמשים ב---skip verification ב-API 30 ומעלה כשמתקינים מחדש חבילה ב-API 30-33 כדי לנקות פרופילים של ART בגרסאות למשתמשים. הפעולה הזו עוזרת לעקוף אזהרות של Play Protect שגורמות לכשלים בחלק מהמכשירים. (Ic9e36)
  • אפשר להשתמש ב-am force-stop כדי להפסיק אפליקציות שאינן אפליקציות מערכת כמו ממשק המשתמש של המערכת או מרכז האפליקציות. (I5e028)
  • הכלי Macrobenchmark מחכה עכשיו ל-1 second עד שהאפליקציה המטורגטת תבצע flush לפרופיל ART (בעבר הוא חיכה ל-500 ms). (I85a50, ‏ b/316082056)
  • שיפור השגיאה FrameTimingMetric כשלא נוצרים פריימים, ותמיד מוציא קישור למעקב כשניתוח המדדים נכשל, כדי לעזור באבחון הבעיה. (I956b9)
  • תוקנה קריסה ב-FrameTimingMetric שלא הצליחה לנתח את מזהה המסגרת, במיוחד במכשירי OEM מסוימים. (Ia24bc, ‏ b/303823815, ‏ b/306235276)
  • הפחתנו את רמת ההקפדה של הבדיקות ב-FrameMetrics והוספנו פרטים נוספים להודעות השגיאה. (Iadede)

גרסה 1.2

גרסה 1.2.4

‫17 באפריל 2024

androidx.benchmark:benchmark-*:1.2.4 מופץ. גרסה 1.2.4 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה לא הוגדר srcset של פרופיל Baseline בווריאציות של השוואה לשוק. בנוסף, נפתרה בעיה automaticGenerationDuringBuild בספריות שגרמה לתלות מעגלית. (I28ab7, ‏ b/333024280)
  • אפשר להשתמש ב-am force-stop כדי להפסיק אפליקציות שאינן אפליקציות מערכת כמו ממשק המשתמש של המערכת או מרכז האפליקציות. התיקון הזה פותר את הבעיה של קריסת מדדי ההשוואה StartupMode.COLD בגלל ההודעה 'Package $package must not be running prior to cold start!' (החבילה $package לא יכולה לפעול לפני הפעלה במצב התחלתי) כתוצאה מביטול תהליך שלא הושלם. (I5e028)

גרסה 1.2.3

‫24 בינואר 2024

androidx.benchmark:benchmark-*:1.2.3 מופץ. גרסה 1.2.3 מכילה את השמירות האלה.

תיקוני באגים

  • הוסרה חריגה מהפלאגין Baseline Profile Gradle כשגרסת AGP היא 8.3.0 ואילך.
  • תיקון להכללת פרופילים של Baseline בספריית AAR בגרסאות שקדמו ל-AGP 8.3.0-alpha15.

גרסה 1.2.2

‫1 בדצמבר 2023

androidx.benchmark:benchmark-*:1.2.2 מופץ. גרסה 1.2.2 מכילה את השמירות האלה.

פרופילים של Baseline

  • בקטע 'יומני ביצוע' יוצג נתיב הקובץ של פלט פרופיל הבסיס כ-URI של קובץ מקומי (aosp/2843918, ‏ aosp/2853665, ‏ b/313976958)

גרסה 1.2.1

‫15 בנובמבר 2023

androidx.benchmark:benchmark-*:1.2.1 מופץ. גרסה 1.2.1 מכילה את השמירות האלה.

תכונות חדשות

  • שיפור בהודעת השגיאה שמוצגת כשמשתמש משבית וריאציות של בדיקה (b/307478189)
  • נוספו מאפיינים לתמיכה בשילוב של הרצת בדיקות AS‏ (b/309805233), (b/309116324)

גרסה 1.2.0

‫18 באוקטובר 2023

androidx.benchmark:benchmark-*:1.2.0 מופץ. גרסה 1.2.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.1.0

פרופילים של Baseline

  • הפלאגין החדש Baseline Profile Gradle מאפשר לכם ללכוד פרופילים של Baseline ולכלול אותם בתהליך העבודה של הבדיקות והפיתוח באופן אוטומטי.
  • BaselineProfileRule.collect יציב עכשיו, גרסה יעילה ופשוטה של BaselineProfileRule.collectBaselineProfile API הניסיוני הקודם
    • פשוט מציינים packageName, ומקדמים את האפליקציה
  • בספריות שיוצרות פרופילים של Baseline, עכשיו אפשר לסנן את הכללים שנוצרו בקוד (ארגומנט BaselineProfileRule.collect), או בצורה פשוטה יותר בתוסף Gradle
  • תיקונים
    • תוקן איסוף פרופילים בסיסיים ב-Android U+‎ (Id1392, ‏ b/277645214)

Macrobenchmark

  • אוסף
    • החל מעכשיו, Macrobenchmark מאפס באופן מלא את מצב הקומפילציה לכל קומפילציה. כדי לעשות זאת, צריך להתקין מחדש את ה-APK בגרסאות קודמות ל-Android 14. לכן, מומלץ מאוד לבצע השוואת ביצועים ב-Android 14 ומעלה אם רוצים לשמור את המצב (למשל, כניסת משתמש) בנתונים שנמדדים.
    • אפשר גם לעקוף את הבעיה הזו על ידי שליטה בהידור האפליקציה בנפרד, ודילוג על ההידור באמצעות CompilationMode.Ignore() או ארגומנט של אינסטרומנטציה
  • ארגומנטים של אינסטרומנטציה

    • תמיכה בארגומנט של מכשור androidx.benchmark.dryRunMode.enable (כבר זמין במיקרו-בנצ'מרק) להרצת אימותים מהירים יותר (למשל, כשיוצרים את הבנצ'מרק או ב-presubmit)
    • תמיכה ב-androidx.benchmark.profiling.mode=StackSampling וב-MethodTracing.
    • נוספה androidx.benchmark.enabledRules כדי לאפשר סינון בזמן ריצה של פרופיל בסיסי לעומת בדיקות כללים של מדד מאקרו
    • נוסף הארגומנט androidx.benchmark.perfettoSdkTracing.enable כדי להפעיל מעקב באמצעות tracing-perfetto, למשל מעקב אחר קומפוזיציה מחדש של Compose. שימו לב: כשמשתמשים ב-StartupMode.COLD, התזמון מושפע באופן משמעותי כי ספריית המעקב נטענת ומופעלת במהלך הפעלת האפליקציה.
  • דרישות

    • כדי להפעיל את האפשרות של לכידה או איפוס של פרופיל, וניקוי של מטמון shader, צריך להשתמש ב-Macrobenchmark בגרסה ProfileInstaller 1.3.0 ואילך באפליקציית היעד.
  • ממשקי API חדשים של מדדים בשלב הניסוי

    • נוספה תכונת TraceSectionMetric ניסיונית, שמאפשרת לחלץ תזמון פשוט מבלוקים של trace("") {} באפליקציה, או TraceMetric כדי לנצל את יכולת השאילתות המלאה של Perfetto TraceProcessor.
    • נוסף PowerMetric ניסיוני כדי לתעד מידע על צריכת חשמל
    • נוסף MemoryCountersMetric ניסיוני לספירת שגיאות בדפים
    • הוספנו את PerfettoTraceProcessor API הניסיוני, שמשמש באופן פנימי לחילוץ מדדים ממעקבי מערכת (נקראים גם מעקבי Perfetto)
  • תיקונים

    • תוקנו קריסות שמתרחשות כשמתקינים או מחלצים פרופילים מאפליקציה שהותקנה מכמה קובצי APK (למשל, מ-App Bundle).
    • תוקנה בעיה שבה FrameTimingMetric התעלם מפריימים עם מזהי פריימים לא עקביים (בדרך כלל, פריימים במהלך תנודות ב-API 31 ומעלה) (I747d2, ‏ b/279088460)
    • תוקנו שגיאות בניתוח של עקבות בגודל של יותר מ-64MB‏ (Ief831, ‏ b/269949822)
    • הוספנו הבהרות לגבי שגיאות שמתרחשות כשדימוי מערכת ההפעלה של המכשיר (במיוחד אמולטור) לא מוגדר כראוי למעקב או לקומפילציה
    • דילוג על בדיקת רמת הטעינה של הסוללה במכשירים ללא סוללה (מיקרו ומאקרו)
    • שיפור הפלט של הקבצים, עם שגיאות ברורות יותר לגבי ספריות פלט לא תקינות, וברירות מחדל בטוחות יותר
    • שיפור היציבות של StartupMode.COLD על ידי השמטה עקבית של מטמון ההצללה (שנחשף גם דרך MacrobenchmarkScope.dropShaderCache)
    • תוקן מצב חלופי של צפייה נוחה ב-startActivityAndWait.

Microbenchmark

  • תכונות
    • הפרופיל הועבר לשלב נפרד, אחרי מדדים אחרים, כך שריצת בדיקה אחת יכולה להציג גם תזמון מדויק וגם תוצאות של פרופיל.
  • ממשקי API ניסיוניים
    • הוספנו API ניסיוני בשם MicrobenchmarkConfig להגדרת מדדים בהתאמה אישית ולהגדרת מעקב ופרופילים. אפשר להשתמש בו כדי ללכוד עקבות של שיטות או נקודות מעקב (אבל צריך להיות מודעים לתקורה של המעקב).
    • נוספו ממשקי API ניסיוניים לשליטה ב-BenchmarkState בנפרד מ-BenchmarkRule, ללא JUnit
    • הוספנו רשומה ניסיונית של PerfettoTrace כדי לאפשר לכידה של עקבות Perfetto, עם הגדרה בהתאמה אישית, בנפרד מממשקי API של בדיקות השוואה.
  • תיקונים
    • פתרון עקיף לבעיה של רווחים לבנים חסרים בתחילת הפלט של בדיקת ביצועים ב-Android Studio.
    • תוקנה הבעיה שבה יכול להיות שהאזהרות לא יודפסו בפלט של בדיקת הביצועים ב-Android Studio.
    • תוקנה קריסה של SampledProfiling ב-Android 13 ‏ (API 33) ואילך.
    • שיפור משמעותי בביצועים של dryRunMode על ידי דילוג על IsolationActivity ועל מעקב Perfetto (עד פי 10 מהר יותר במצב הרצה יבשה בגרסאות OS ישנות יותר).

גרסה ‎1.2.0-rc02

‫6 באוקטובר 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 מופץ. גרסה ‎1.2.0-rc02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן פלט קובץ ההשוואה כך שלא יגרום יותר לבעיות בהעתקת קובץ הפלאגין.BaselineProfile הקבצים נוצרו והועתקו מהמכשיר, אבל הם שונו כך שתוסף Gradle לא יראה אותם. (I8dbcc, b/303034735, b/296453339)
  • הוספנו הבהרות להודעות השגיאה של טעינת tracing-perfetto כשמזריקים ממודול macrobenchmark לאפליקציית היעד.

גרסה ‎1.2.0-rc01

‫20 בספטמבר 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 מופץ. גרסה ‎1.2.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • חריג (עם הוראות לפתרון) מוצג עכשיו כשאתחול המעקב ב-Perfetto SDK נכשל בנקודת השוואה. ‫(I6c878, b/286228781)
  • תיקון קריסת OOM בהמרה של מעקב אחר שיטת ART -> פורמט perfetto. ‫(I106bd, ‏ b/296905344)
  • (Macrobenchmark) הוספנו הבהרה לתווית של מעקב אחר שיטות כשמקשרים אותה לפלט של בדיקה ב-Studio, ותיקנו את שמות הקבצים של מעקב אחר שיטות כך שיהיו ייחודיים במכשיר או במארח, כדי שלא יוחלפו כשמריצים יותר מ-benchmark אחד. (I08e65, b/285912360)
  • ההגדרה הזו מוודאת שהמכשיר פעיל כשמצלמים פרופיל בסיסי. (I503fc)

גרסה ‎1.2.0-beta05

‫30 באוגוסט 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 מופץ. גרסה ‎1.2.0-beta05 מכילה את השמירות האלה.

תכונות חדשות

  • פלאגין Baseline Profile Gradle תומך עכשיו ב-Android Gradle Plugin 8.3. (aosp/2715214)

גרסה ‎1.2.0-beta04

‫23 באוגוסט 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 מופץ. גרסה ‎1.2.0-beta04 מכילה את השמירות האלה.

תכונות חדשות

  • הפלאגין Baseline Profiles Gradle תומך עכשיו ב-Android Gradle Plugin 8.3. (aosp/2715214)

תיקוני באגים

  • כדי לתקן כשלים בכתיבה, בהעברה ובשליפה של קבצים (במיוחד קבצים מבדיקות עם פרמטרים), צריך לבצע סניטציה נוספת של שמות קובצי הפלט, ולהימנע משימוש בתווים '=' ו-':' בשמות קובצי הפלט. (I759d8)

גרסה ‎1.2.0-beta03

‫9 באוגוסט 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 מופץ. גרסה ‎1.2.0-beta03 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף ארגומנט לסינון TraceSectionMetric רק לחבילת היעד, מופעל כברירת מחדל (Ia219b, ‏ b/292208786)

תיקוני באגים

  • שונה השם של ארגומנט המדידה fullTracing.enable ל-perfettoSdkTracing.enable כדי לשמור על עקביות עם שם הארטיפקט והפניות אחרות. fullTracing.enable ימשיך לפעול כנתיב חלופי לתצוגה. (I7cc00)
  • נקודות מעקב פנימיות בספריית ההשוואה (כולל מעקב אחר לולאה/שלב של מיקרו-השוואה) יוצגו עכשיו בכלי לצפייה במעקב המערכת ב-Studio, ויוצגו כרכיב משנה בתהליך הנכון ב-Perfetto. (I6b2e7, b/293510459)
  • הוסרה שגיאת macrobenchmark NOT-PROFILEABLE ב-API 31 ומעלה, ודילוג על בדיקת profileable במכשירי eng/userdebug עם גישת root. ‫(I2abac, ‏ b/291722507)
  • כשמשתמשים באופטימיזציות של פריסת DEX, כללי הפרופיל להפעלה נחשבים עכשיו גם ככללי פרופיל של Baseline. (aosp/2684246, b/293889189)

גרסה ‎1.2.0-beta02

26 ביולי 2023

androidx.benchmark:benchmark-*:1.2.0-beta02 מופץ. גרסה ‎1.2.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו ממשקי API ניסיוניים למדדים מותאמים אישית של מיקרו-בנצ'מרק והגדרות (למשל, פרופילר ומעקב). ‫(I86101, ‏ b/291820856)

תיקוני באגים

  • דיווח על שגיאה ב-macrobench כשהמערכת מוגדרת בצורה שגויה למעקב, כפי שתוקן לאחרונה באמולטורים של API 26/28 ARM64. (I0a328, ‏ b/282191686)
  • הוספנו פרטים על כשל באיפוס של קומפילציה, כדי להציע עדכון של האמולטור, כי בחלק מהאמולטורים הבעיה הזו תוקנה לאחרונה. ‫(I8c815, ‏ b/282191686)
  • הופכים את androidx.test.uiautomator:uiautomator:2.2.0 לתלות מסוג api במקום לתלות מסוג implementation. (I1981e)

גרסה ‎1.2.0-beta01

‫18 ביולי 2023

androidx.benchmark:benchmark-*:1.2.0-beta01 מופץ. גרסה ‎1.2.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • תיקנו בעיה שגרמה לכך שאזהרות מסוימות לא הוצגו לפעמים בתוצאות של נקודת ההשוואה ב-Studio, ופתרנו בעיה שגרמה לכך שרווחים מובילים מתוצאות של נקודת ההשוואה לא הוצגו ב-Studio (Ia61d0, ‏ b/227205461, ‏ b/286306579, ‏ b/285912360)
  • תוקנה תגובה בנושא FrameTimingMetric. שם מדד המשנה הוא frameDurationCpuMs. (Ib097f, ‏ b/288830934).

גרסה ‎1.2.0-alpha16

‫21 ביוני 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 מופץ. גרסה ‎1.2.0-alpha16 מכילה את השמירות האלה.

שינויים ב-API

  • השם של API ‏BaselineProfileRule.collectBaselineProfile() השתנה ל-BaselineProfileRule.collect(). (I4b665)

תיקוני באגים

  • תמיכה ב-Macrobenchmark ל-androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, ‏ b/285912360)
  • הפרופיל של המיקרו-בנצ'מרק עבר לשלב נפרד, כך שהוא מתרחש ברצף אחרי המדידה, במקום להחליף אותה. גם קטעי ה-trace של MethodTracing נכללים עכשיו ב-trace של Perfetto שנתפס, אם הם קיימים. ‫(I9f657, b/285014599)
  • הוספת מדידת ספירה אל TraceSectionMetric באמצעות Mode.Sum. ‫(Ic121a, ‏ b/264398606)

גרסה ‎1.2.0-alpha15

‫7 ביוני 2023

androidx.benchmark:benchmark-*:1.2.0-alpha15 מופץ. גרסה ‎1.2.0-alpha15 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף MemoryUsageMetric ניסיוני למעקב אחרי השימוש בזיכרון של אפליקציית יעד. (I56453, ‏ b/133147125, ‏ b/281749311)
  • הוספת תמיכה בהגדרות Perfetto בהתאמה אישית מלאה באמצעות PerfettoTrace.record (If9d75, ‏ b/280460183)
  • נוסף מאפיין כדי לדלג על יצירת פרופיל Baseline. שימוש: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, ‏ b/283447020)

שינויים ב-API

  • ‫API‏ collectBaselineProfile תמיד יוצר פרופילים יציבים של Baseline. ממשק ה-API‏ collectStableBaselineProfile הוסר, ובמקומו צריך להשתמש ב-collectBaselineProfile. (I17262, b/281078707)
  • השתנה BaselineProfileRule's filterPredicate arg to non-null, with a equivalent default value so that the default filter behavior is more clear in docs. (I3816e)

תיקוני באגים

  • כדי לשפר משמעותית את הביצועים, כדאי להשבית את IsolationActivity ואת Perfetto tracing ב-dryRunMode, כי הם היו רוב זמן הריצה. (Ie4f7d)
  • תמיכה בדגימת מחסנית קריאות בבדיקות השוואה באמצעות ארגומנטים של בדיקות אינסטרומנטציה androidx.benchmark.profiling.mode=StackSampling ו-androidx.benchmark.profiling.sampleFrequency. ‫(I1d13b, ‏ b/282188489)
  • תוקן קראש שמתרחש כשמבצעים גרירה ושחרור של shaders ב-Android U (API 34), וגם באמולטורים. (I031ca, ‏ b/274314544)

גרסה ‎1.2.0-alpha14

‫3 במאי 2023

androidx.benchmark:benchmark-*:1.2.0-alpha14 מופץ. גרסה ‎1.2.0-alpha14 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון של FrameTimingMetric שמתעלם ממסגרות עם מזהי מסגרות לא עקביים. כתוצאה מכך, חלק מהאנימציות בגרסאות עדכניות של הפלטפורמה (API 31 ואילך) יתעלמו מהרבה פריימים בזמן שהאנימציה של RenderThread פועלת (למשל, במהלך אפקט הגלים). (I747d2, ‏ b/279088460)
  • תוקן ניתוח של מעבד עקבות לעקבות גדולים מ-64MB. (Ief831, b/269949822)
  • תוקנה בעיה שגרמה לכך שיצירת פרופיל Baseline ב-Android U נכשלה בגלל פלט שונה של הפקודה pm dump-profiles. (Id1392, b/277645214)
  • תיקון סקריפט לנעילת שעון GPU כדי להשוות מחרוזות בצורה נכונה (I53e54, b/213935715)

גרסה ‎1.2.0-alpha13

‫5 באפריל 2023

androidx.benchmark:benchmark-*:1.2.0-alpha13 מופץ. גרסה ‎1.2.0-alpha13 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף פרמטר של סוג הפרופיל כשיוצרים פרופילים בסיסיים כדי לתמוך בתכונת פרופיל ההפעלה הקרובה (Ie20d7, ‏ b/275093123)
  • הוספנו API ניסיוני חדש, TraceMetric, להגדרת מדדים בהתאמה אישית מלאה על סמך תוכן של עקבות Perfetto. (I4ce31, b/219851406)
  • מוסיפים מדד ניסיוני כדי לקבוע את מספר השגיאות בדפים במהלך בדיקת ביצועים. (I48db0)

גרסה ‎1.2.0-alpha12

‫22 במרץ 2023

androidx.benchmark:benchmark-*:1.2.0-alpha12 מופץ. גרסה ‎1.2.0-alpha12 מכילה את השמירות האלה.

תכונות חדשות

  • הפלאגין החדש Baseline Profile Gradle זמין בגרסת אלפא, ומאפשר ליצור פרופיל Baseline בקלות רבה יותר ולפשט את תהליך העבודה של המפתחים.

שינויים ב-API

  • הוסרה התמיכה ב-Perfetto tracing ב-API 21 וב-API 22, שכוללת גם Microbenchmarks וגם את ממשקי ה-API הניסיוניים PerfettoTrace. לפני הגרסה הזו, החיבורים של UiAutomation לא היו אמינים במכשירים מסוימים. (I78e8c)
  • הוספנו API ניסיוני ציבורי ל-PerfettoTraceProcessor כדי לאפשר ניתוח של תוכן מעקב. זהו צעד לקראת מדדים בהתאמה אישית מלאה שמבוססים על נתוני מעקב של Perfetto. ‫(I2659e, b/219851406)

גרסה ‎1.2.0-alpha11

‫8 במרץ 2023

androidx.benchmark:benchmark-*:1.2.0-alpha11 מופץ. גרסה ‎1.2.0-alpha11 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנו קריסות ב-MacrobenchmarkRule וב-BaselineProfileRule כשמתקינים מחדש פרופילים או מחלצים אותם מ-App Bundle עם כמה קובצי APK. ‫(I0d8c8, ‏ b/270587281)

גרסה ‎1.2.0-alpha10

‫22 בפברואר 2023

androidx.benchmark:benchmark-*:1.2.0-alpha10 מופץ. גרסה ‎1.2.0-alpha10 מכילה את השמירות האלה.

תכונות חדשות

  • ב-Android מגרסה 14 ואילך, Macrobenchmark לא מתקין מחדש אפליקציות יעד כדי לאפס את מצב הקומפילציה, הודות לתכונה חדשה בפלטפורמה. בעבר היה צורך במכשיר עם הרשאות רוט, או להתמודד עם מצב שבו כל מצב האפליקציה (למשל, התחברות משתמש) מוסר לפני כל הפעלה של בדיקת ביצועים. (I9b08c, b/249143766)

תיקוני באגים

  • הבעיה DryRunMode נפתרה, ועכשיו האפליקציה לא קורסת יותר עם פרופיל ריק, כי דילגנו על קומפילציה. במקום זאת, הוא מריץ איטרציה אחת ומחלץ את הפרופיל כדי לוודא שמשהו נשמר. ‫(I2f05d, ‏ b/266403227)
  • תוקן קריסת PowerMetric כשבודקים את הנוכחות של powerstats ברמות API ישנות. (5faaf9, b/268253898)

גרסה ‎1.2.0-alpha09

‫11 בינואר 2023

androidx.benchmark:benchmark-*:1.2.0-alpha09 מופץ. גרסה ‎1.2.0-alpha09 מכילה את השמירות האלה.

תיקוני באגים

  • העברת None לארגומנט המכשיר androidx.benchmark.enabledRules כדי להשבית את כל ההשוואות לביצועים או את יצירת פרופיל ה-Baseline. ‫(I3d7fd, ‏ b/258671856)
  • תיקון PerfettoTrace capture במודולים של אפליקציות (כלומר, חבילות APK לבדיקה שלא מופעלות באופן עצמאי) (I12cfc)
  • תוקן הסדר של ארגומנטים של adb pull בפרופיל בסיסי קבוע בפלט של Studio (‏I958d1, ‏b/261781624)
  • אמולטור Arm API 33 מזוהה עכשיו בצורה נכונה כשמנסים להריץ macrobenchmark, והאזהרה מודפסת בצורה נכונה. (69133b,b/262209591)
  • דילוג על בדיקת רמת הטעינה של הסוללה במכשירים ללא סוללה ב-Macrobenchmark ‏ (fe4114, b/232448937)

גרסה ‎1.2.0-alpha08

‫7 בדצמבר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha08 מופץ. גרסה ‎1.2.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו ממשקי API חדשים ניסיוניים PerfettoTrace.record {} ו-PerfettoTraceRule כדי ללכוד עקבות של Perfetto (שנקראים גם עקבות מערכת) כחלק מבדיקה, כדי לבדוק את התנהגות הבדיקה והביצועים שלה. (I3ba16)
  • הפונקציה BaselineProfileRule מקבלת עכשיו פרדיקט של מסנן במקום רשימה של קידומות חבילה. כך יש לבדיקה שליטה מלאה בסינון. (I93240)
  • הוספנו API ניסיוני BaselineProfileRule.collectStableBaselineProfile שממתין עד שפרופיל בסיסי יהיה יציב למשך N איטרציות. (I923f3)
  • הוספנו אפשרות לציין תחילית לשם של קובץ פלט כשיוצרים פרופילי Baseline באמצעות BaselineProfileRule. ‫(I7b59f, b/260318655)

תיקוני באגים

  • שיפור האבטחה של כתיבת פלט קבצים, כדי למנוע מצב שבו קובצי פלט לא נכתבים או לא מצורפים בשקט, במיוחד ב-API 21/22. (If8c44, b/227510293)
  • צריך לתקן את הפלט של מעקב simpleperf כדי ליצור את הקובץ ולמקם אותו בצורה נכונה. הפעולה הזו אמורה לפתור גם בעיות כלליות יותר שקשורות למקרים שבהם gradle לא מצליח לשלוף קובץ. ‫(I12a1c, b/259424099)
  • שיפור הודעת השגיאה של profileinstaller שמוצגת כשהגרסה של profileinstaller ישנה מדי. ההודעה הזו מורה לכם עכשיו לעדכן את הגרסה של profileinstaller ‏ (1.2.1) כדי למדוד פרופילים של Baseline ב-API 31 עד 33, במקום להודיע שהפעולה לא נתמכת. ‫(Ia517f, ‏ b/253519888)
  • תיקון של כמה כשלים בפקודות shell בהודעת השגיאה Print needed API <=23, כולל הגדרה בינארית של לכידת perfetto שנכשלה וכשלים בלכידת מעקב (Ib6b87, b/258863685)
  • מיון אוטומטי של כללי פרופיל שנוצרו כדי לצמצם את מספר השינויים כשהם משתנים לאורך זמן (כשמבצעים צ'ק-אין של כללי פרופיל לבקרת מקור). (Ie2509)
  • תוקן קראש בגרסאות לא מושרשות מתחת ל-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

  • הוספנו PowerMetric API למדידת אנרגיה והספק ב-Macrobenchmarks. (Ife601, ‏ b/220183779)
  • תוקן MacrobenchmarkScope.dropShaderCache() כך שהוא באמת ימחק את מטמון ההצללה. הפעולה הזו מסירה רעשי רקע של כ-20 אלפיות השנייה מהמדדים של StartupMode.COLD, כי עכשיו ה-shaders מנוקים באופן עקבי בכל איטרציה. בעבר, Partial קומפילציה באמצעות איטרציות של חימום הייתה מדווחת על מספרים מהירים מדי באופן שגוי, כי סביר יותר שהיה מתבצע שמירת shader במטמון במהלך החימום. כדי להחיל את התיקון הזה, צריך מכשיר עם הרשאות רוט או להשתמש ב-profileinstaller:1.3.0-alpha02 באפליקציית היעד. לשינויים ב-API של ספריית ProfileInstaller, אפשר לעיין בדף ProfileInstaller 1.30-alpha02. ‫(Ia5171, ‏ b/231455742)
  • הוספנו את TraceSectionMode("label", Mode.Sum), שמאפשר למדוד את הזמן הכולל שחלף בכמה חלקים של מעקב עם אותה תווית. לדוגמה, TraceSectionMetric("inflate", Mode.Sum) ידווח על המדד inflateMs לגבי הזמן הכולל שהוקדש לאינפלציה במבחן הביצועים המקיף. בנוסף, הסרנו את הדרישה ל-API 29, כי TraceSectionMetric פועל עם androidx.tracing.Trace עד לרמות API נמוכות יותר, באמצעות forceEnableAppTracing באפליקציה המטורגטת. (Id7b68, b/231455742)

תיקוני באגים

  • שיפור הבטיחות של כל פקודות ה-shell הפנימיות על ידי אימות כל הפלט והשגיאות. (I5984d, ‏ b/255402908, ‏ b/253094958)
  • מציינים את המכשיר בפקודה של פרופיל ה-Baseline‏ adb pull, כדי שאפשר יהיה להעתיק את פקודת השליפה בקלות אם מחוברים כמה מכשירים (עד אמולטור אחד) (I6ac6c, ‏ b/223359380)
  • הוספת שגיאה אם קובץ ה-APK של בדיקת המקרו-בנצ'מרק לא מוגדר ככלי עצמאי. השגיאה הזו מונעת את ביצוע ההשוואה בין ביצועים של אפליקציות שונות מתוך התהליך של אפליקציית היעד. במהלך העיבוד, לא תהיה אפשרות להדר/להרוג/להפעיל מחדש את האפליקציה, או לשלוט בהרשאות שלה (I4279b)
  • תוקנה בעיה ב-measureRepeated() שבה StartupMode.COLD לא השבית את תהליך היעד אחרי setupBlock. עכשיו, אינטראקציה עם האפליקציה לא תשאיר את תהליך האפליקציה פועל, והמדידה של הפעלה במצב התחלתי (cold start) תהיה לא תקינה.setupBlock (I8ebb7)

גרסה ‎1.2.0-alpha06

24 באוקטובר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha06 מופץ. גרסה ‎1.2.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • BaselineProfileRule לא נדרשת יותר גישת root ב-Android 13 ‏ (API 33), והיא כבר לא ניסיונית. (Ie0a7d, b/250083467, b/253094958)
    • השינוי הזה גם מתקן את האופן שבו פרופילים מאפליקציה נמחקים מהדיסק במכשירים שלא בוצע בהם Root, אבל הוא מחייב עדכון של יחסי התלות של profileinstaller באפליקציית היעד.
    • כדי להשתמש ב-BaselineProfileRule או ב-CompilationMode.Partial(warmupIterations) במכשיר לא מושרש, צריך גם לעדכן את אפליקציית היעד כך שתשתמש ב-androidx.profileinstaller.profileinstaller:1.3.0-alpha01. כך אפשר להעביר את הפרופיל לדיסק בצורה תקינה, כדי שיהיה אפשר לקמפל או לחלץ אותו.

תיקוני באגים

  • תוקן קראש של SampledProfiling ב-API 33 ומעלה. (I40743, ‏ b/236109374)

גרסה ‎1.2.0-alpha05

‫5 באוקטובר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 מופץ. גרסה ‎1.2.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון פירוט המסגרות בכלי לצפייה במעקב המערכת ב-Studio עבור מעקבים שנלכדו לצורך השוואה (I3f3ae, b/239677443)
  • תיקון FrameTimingMetric כך שיוצג שנדרש API 31 במקום 29 בשביל FrameOverrun (I716dd, ‏ b/220702554)
  • מגדירים איטרציה ב-BaselineProfileRule, ומציגים שגיאה ברורה אם חבילת היעד לא מותקנת (כבר בוצע עבור MacrobenchmarkRule). (Ic09a3, b/227991471)

גרסה ‎1.2.0-alpha04

‫21 בספטמבר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha04 מופץ. גרסה ‎1.2.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו תמיכה בארגומנט dryRunMode.enable instrumentation ל-macrobenchmark (כבר זמין ב-micro) כדי לאפשר פיתוח מקומי מהיר יותר ואימות של אוטומציית אפליקציות (למשל, ב-presubmit). הפעולה הזו מחליפה את האיטרציות ב-1, מדלגת על הקומפילציה, מבטלת את כל שגיאות ההגדרה ומשביתה את הפלט של קובץ ה-JSON של המדידה. ‫(Ib51b4, ‏ b/175149857)

    בשורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    בקובץ build.gradle:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שלא היה יותר צורך להפעיל פעילויות שנמדדות דרך MacrobenchmarkScope.startActivityAndWait().StartupTimingMetric המשמעות היא שהמדד יכול לזהות הפעלות ממקורות כמו התראות, Context.startActivity(), ניווט מבוסס-פעילות באפליקציה או פקודות מעטפת. (Ia2de6, ‏ b/245414235)
  • תיקון באג שבו startActivityAndWait היה מגיע לטיימאאוט בניסיון להמתין לסיום ההפעלה באמולטורים, על ידי הפחתת המחמירות של זיהוי הפריימים. ‫(Ibe2c6, ‏ b/244594339, ‏ b/228946895)

גרסה ‎1.2.0-alpha03

‫7 בספטמבר 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 מופץ. גרסה ‎1.2.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו ממשקי API ניסיוניים לשימוש ב-BenchmarkState באופן עצמאי, בנפרד מ-BenchmarkRule / JUnit4. (Id478f, b/228489614)

תיקוני באגים

  • נוספה חלופה ל-Leanback עבור startActivityAndWait. (01ed77, b/242899915)

גרסה ‎1.2.0-alpha02

‫24 באוגוסט 2022

androidx.benchmark:benchmark-*:1.2.0-alpha02 מופץ. גרסה ‎1.2.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • ברירת המחדל היא am force stop ל-MacrobenchmarkScope.killProcess(), גם כשהמכשיר מושרש, למעט במהלך יצירת פרופיל ה-Baseline. אפשר לשנות את ברירת המחדל באמצעות ארגומנט בוליאני אופציונלי. (02cce9, b/241214097)

תיקוני באגים

  • תמיכה ביצירת פרופיל Baseline לאפליקציות מערכת. ‫(I900b8, ‏ b/241214097)
  • תמיכה בבדיקה של מדדי צריכת חשמל של ODPM במכשירים לא מושרשים. (a38c78, b/229623230)

גרסה ‎1.2.0-alpha01

‫27 ביולי 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 מופץ. גרסה ‎1.2.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • רכיב חדש של tracing-perfetto-common שמאפשר לכלי פיתוח להפעיל מעקב ב-Perfetto SDK באפליקציה שחושפת אותו (I2cc7f)
  • נוסף ארגומנט המכשיר androidx.benchmark.enabledRules כדי לאפשר סינון של הרצות Macrobenchmark רק למדדים, או רק ליצירת פרופיל Baseline. מעבירים את המחרוזת Macrobenchmark או BaselineProfile כדי להריץ רק סוג אחד של בדיקה, למשל כשיוצרים רק BaselineProfiles באמולטור. אפשר גם להשתמש ברשימה מופרדת בפסיקים. ‫(I756b7, ‏ b/230371561)

    לדוגמה, בקובץ build.gradle של המקרו-בנצ'מרק:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    או משורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

שינויים ב-API

  • נוסף PowerMetric חדש למדידת משימות שקשורות לאנרגיה ולעוצמה במבחני ביצועים. (I9f39b, b/220183779)
  • נוסף מצב קומפילציה חדש CompilationMode.Ignore כדי לדלג על איפוס וקומפילציה של הפרופיל. (Ibbcf8, ‏ b/230453509)
  • נוסף פרמטר חדש ל-BaselineProfileRule#collectBaselineProfile כדי לסנן את קובץ הפלט לפי שמות חבילות (If7338, ‏ b/220146561)
  • מאפשר למפתח לרוקן את הסוללה של המכשיר כדי למדוד את צריכת החשמל. (I6a6cb)
  • הוספנו את האפשרות לנקות את מטמון ה-Shader ב-MacrobenchmarkScope. (I32122)
  • מאפשר למפתח להגדיר את התצוגה של סוג המדד ופרטים של קטגוריות משנה רצויות. (I810c9)
  • בעבר, אם ההשוואה בוצעה במכשיר שלא נתמך, הוצגה שגיאת UnsupportedOperationException. מעכשיו, UOE מתרחש רק אם המדד נמצא בשימוש במכשיר שלא נתמך (לדוגמה: PowerMetric.configure). (I5cf20,‏ b/227229375)
  • נוספו TotalPowerMetric ו-TotalEnergyMetric למדידת ההספק והאנרגיה הכוללים בכל קטגוריית מערכת במבחני ביצועים מאקרו. (I3b26b, ‏ b/224557371)

תיקוני באגים

  • תוקנה בעיה שבה שיטות הידור לא אופסו בצורה נכונה בין כל בדיקת ביצועים של מאקרו בגרסאות לא מושרשות. לצערנו, כדי לעשות את זה צריך להתקין מחדש את קובץ ה-APK בכל איטרציה, וכך נמחקים נתוני האפליקציה של כל בדיקת מאקרו. (I31c74, b/230665435)
  • תיקון קריסת הקלטת נתונים על API 21/22 (If7fd6, ‏ b/227509388, ‏ b/227510293, ‏ b/227512788)
  • שיפור מנגנון זיהוי השלמת הפעלת הפעילות כדי לתקן את החריגה 'לא ניתן לקרוא מדדים' במבחני ביצועים מאקרו של הפעלה. (Ia517c)

גרסה 1.1.1

גרסה 1.1.1

9 בנובמבר 2022

androidx.benchmark:benchmark-*:1.1.1 מופץ. גרסה 1.1.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג ב-android.system.ErrnoException: open failed: EACCES שהתרחש בחלק ממכשירי Android11 (API 30) ומעלה. זו בחירה של תיקון מ-1.2.0-alpha01. (aosp/2072249)

גרסה 1.1.0

גרסה 1.1.0

‫15 ביוני 2022

androidx.benchmark:benchmark-*:1.1.0 מופץ. גרסה 1.1.0 מכילה את השמירות האלה.

  • הגרסה הזו זהה לגרסה androidx.benchmark:benchmark-*:1.1.0-rc03.

שינויים חשובים מאז גרסה 1.0.0

גרסה ‎1.1.0-rc03

‫1 ביוני 2022

androidx.benchmark:benchmark-*:1.1.0-rc03 מופץ. גרסה ‎1.1.0-rc03 מכילה את השמירות האלה.

תיקוני באגים

  • מומלץ להימנע מהתקנה מחדש של חבילת היעד בכל איטרציה של ההשוואה לשוק. ‫ ( aosp/​​2093027, b/231976084)

  • הסרת העיכוב 300ms מההודעה pressHome(). (aosp/2086030, ‏ b/231322975)

  • כדי לשפר את מהירות האיטרציה של Macrobenchmark, צריך לבצע אופטימיזציה של פקודות Shell שמשמשות מאחורי הקלעים. ‫(aosp/2086023, ‏ b/231323582)

  • תמיכה במכשירים בניהול Gradle כשיוצרים פרופילים Baseline באמצעות Macrobenchmarks. ‫(aosp/2062228, ‏ b/228926421)

גרסה ‎1.1.0-rc02

‫11 במאי 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 מופץ. גרסה ‎1.1.0-rc02 מכילה את השמירות האלה.

  • שימו לב שהגרסה הזו כוללת שינוי בהתנהגות, כי עכשיו האפליקציות מותקנות מחדש באופן מלא בין כל השוואה כדי להבטיח מדידות מדויקות.

תיקוני באגים/שינויים בהתנהגות

  • תוקנה בעיה שבה הידור האפליקציה לא אופס בצורה נכונה בין בדיקות השוואה של ביצועים, ולא אופס בכלל בגרסאות שלא עברו Root. השינוי הזה פותר הרבה מקרים שבהם הפעלת כמה בדיקות לא השפיעה על המדידות, או שההשפעה הייתה מינורית.CompilationMode כדי לעקוף את הבעיה הזו, אפליקציית היעד מותקנת מחדש באופן מלא בכל שיטת בדיקה, וכך נמחקים נתוני האפליקציה בין כל בדיקת מאקרו. (I31c74, b/230665435)

  • ההגדרה הזו מונעת מאפליקציות להגדיר מצב לפני בדיקות, ולכן עכשיו אפשר לדלג על קומפילציה או התקנה מחדש כדי לעקוף את הבעיה. לדוגמה, אפשר לקמפל את היעד באופן מלא באמצעות פקודת shell‏ cmd package compile -f -m speed <package>, ואז לדלג על שלב הקומפילציה של המדד המאקרו.

    לדוגמה, בקובץ build.gradle של המקרו-בנצ'מרק:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    או משורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • הוספנו את ארגומנט המכשיר androidx.benchmark.enabledRules כדי לאפשר שיתוף של מודול בין בדיקות של Macrobenchmark לבין בדיקות ליצירת פרופיל Baseline. מעבירים את המחרוזת Macrobenchmark או BaselineProfile כדי להריץ רק סוג אחד של בדיקה, למשל כשיוצרים BaselineProfiles באמולטור. ‫(I756b7, ‏ b/230371561)

    לדוגמה, בקובץ build.gradle של בדיקת המאקרו:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    או משורת הפקודה של Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

גרסה ‎1.1.0-rc01

‫20 באפריל 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 מופץ. גרסה ‎1.1.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • קישורי הפלט של פרופיל Baseline ב-Android Studio משתמשים עכשיו בשם קובץ ייחודי. כך הפלט תמיד ישקף את התוצאות העדכניות ביותר של השימוש ב-BaselineProfileRule. ‫ ( aosp/2057008, b/228203086 )

גרסה ‎1.1.0-beta06

‫6 באפריל 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 מופץ. גרסה ‎1.1.0-beta06 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון קריסה של הקלטת נתונים למעקב ב-API 21/22 (If7fd6, b/227509388)
  • שיפור מנגנון זיהוי השלמת הפעלת הפעילות כדי לתקן את החריגה 'לא ניתן לקרוא מדדים' במבחני ביצועים מאקרו של הפעלה. (Ia517c)
  • תיקון מדדי ההפעלה של Macrobenchmarks כשמשתמשים ב-CompilationMode.None(). לפני השינוי הזה, נראה ש-CompilationMode.Partial() איטי יותר מ-Compilation.None(). ‫(611ac9).

גרסה ‎1.1.0-beta05

‫23 במרץ 2022

androidx.benchmark:benchmark-*:1.1.0-beta05 מופץ. גרסה ‎1.1.0-beta05 מכילה את השמירות האלה.

תיקוני באגים

  • הפסקת הפעילות של החבילה אחרי דילוג על התקנת הפרופיל כשמשתמשים ב-CompilationMode.None. (aosp/1991373)
  • תוקנה הבעיה שבה אי אפשר לאסוף מדדי הפעלה באמצעות Macrobenchmarks כשמשתמשים ב-StartupMode.COLD. ‪(aosp/2012227 b/218668335)

גרסה ‎1.1.0-beta04

23 בפברואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta04 מופץ. גרסה ‎1.1.0-beta04 מכילה את השמירות האלה.

תיקוני באגים

  • תיקנו בעיה שגרמה למדדים חסרים ב-Android 10, ו-NoSuchElementException שנגרמה כתוצאה משמות תהליכים שלא נרשמו בצורה נכונה בנתוני המעקב. (Ib4c17, ‏ b/218668335)

  • משתמשים ב-PowerManager כדי לזהות הגבלת מהירות עקב התחממות יתר בגרסה Q‏ (API‏ 29) ואילך. השינוי הזה מפחית באופן משמעותי את התדירות של תוצאות חיוביות שגויות בזיהוי של ויסות תרמי (ניסיון חוזר של בדיקת ביצועים אחרי 90 שניות של צינון), ומאיץ באופן משמעותי את בדיקות הביצועים בגרסאות למשתמשים. הוא גם מספק זיהוי של ויסות מהירות, גם כשהשעונים נעולים (אם הם נעולים גבוה מדי ביחס לסביבה הפיזית של המכשיר). (I9c027, b/217497678, b/131755853)

  • מסננים את פרופיל הדגימה של simpleperf ל-measureRepeated thread בלבד כדי לפשט את הבדיקה (Ic3e12, b/217501939)

  • תמיכה במדדים מתהליכי משנה של ממשק משתמש עם שמות באפליקציות מרובות תהליכים (Ice6c0, ‏ b/215988434)

  • סינון כללי פרופיל הבסיס לטירגוט Android 9‏ (SDK 28). aosp/1980331 b/216508418

  • דילוג על התקנת הפרופיל כשמשתמשים ב-Compilation.None(). בנוסף, מוצגות אזהרות בדוח אם האפליקציה משתמשת בגרסה ישנה של androidx.profileinstaller ושל Android Gradle Plugin. aosp/1977029

גרסה ‎1.1.0-beta03

‫9 בפברואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 מופץ. גרסה ‎1.1.0-beta03 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את AudioUnderrunMetric לספריית macrobenchmark תחת דגל ניסיוני כדי לאפשר זיהוי של חוסרים באודיו (Ib5972)
  • הפרמטר BaselineProfileRule לא מקבל יותר בלוק setup כי הוא פעל כמו profileBlock. ‫(Ic7dfe, ‏ b/215536447)

    לדוגמה

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

תיקוני באגים

  • תוקנה הבעיה שבה לא היה אפשר לעדכן את העקבות של פרופילר המיקרו-בנצ'מרק בביצועים הבאים כשהן מקושרות בפלט של Studio (I5ae4d, ‏ b/214917025)
  • מניעת פקודות Shell של קומפילציה ב-API 23‏ (Ice380)
  • שינינו את השמות של FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi כדי להבהיר שמדובר במשכי זמן ולא בחותמות זמן, וכדי להתאים את הקידומות. (I0eba3, ‏ b/216337830)

גרסה ‎1.1.0-beta02

‫26 בינואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 מופץ. גרסה ‎1.1.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • תוצאות של Microbenchmark Stack Sampling / Method Tracing Profile מקושרות עכשיו בפלט של Studio, בדומה לפלטים אחרים של פרופילים, והן לא מבטלות את מדד ההקצאה. (Idcb65, ‏ b/214440748, ‏ b/214253245)
  • הפקודה adb pull מודפסת עכשיו ב-logcat ובפלט של Studio עבור שליפה של קובץ טקסט של BaselineProfile שנוצר. (f08811)

גרסה ‎1.1.0-beta01

‫12 בינואר 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 מופץ. גרסה ‎1.1.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגורמת להתעלמות מהארגומנט enable של כלי הפרופיל. (I37373, b/210619998)
  • הוסר מאפיין שיצא משימוש CompliationModes (I98186, b/213467659)
  • החלפנו את ארגומנט פרופיל הבסיס של CompilationMode.Partial ל-enum כדי להבהיר את השימוש. (Id67ea)

גרסה ‎1.1.0-alpha13

15 בדצמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 מופץ. גרסה ‎1.1.0-alpha13 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו מעקב מערכת עם תקורה נמוכה לפלט של מיקרו-בנצ'מרק ב-Android Q (API 29 ומעלה). שימו לב שבשלב הזה המעקב לא כולל מעקב בהתאמה אישית (באמצעות ממשקי API של android.os.Trace או androidx.tracing 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 באמולטורים ובמכשירים ללא Root (‏Icdbda, ‏b/202719335)
  • הוסר מצב שינה של 0.5 שניות בסוף כל איטרציה – אם אתם רואים מדדים חסרים בעקבות השינוי הזה, עליכם לדווח על באג. (Iff6aa)
  • הפחתת הסיכויים לאובדן נתונים והפחתת התקורה של הזיכרון ממעקב (Id2544,‏ b/199324831,‏ b/204448861)
  • אפשר להקטין את גודל הנתונים בכ-40% על ידי מעבר לפורמט אחסון מתוזמן קומפקטי. (Id5fb6, b/199324831)
  • עדכנו את היישומים של מדדי ההפעלה כך שתמיד יסתיימו בסוף של renderthread. השינוי הזה יאפשר עקביות רבה יותר בין גרסאות הפלטפורמה, ומיפוי מדויק יותר למדידות באפליקציה. (Ic6b55)

גרסה ‎1.1.0-alpha11

3 בנובמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 מופץ. גרסה ‎1.1.0-alpha11 מכילה את השמירות האלה.

שינויים ב-API

  • ל-Macrobenchmark יש עכשיו minSdkVersion של 23. (If2655)
  • נוספה תכונה ניסיונית חדשה BaselineProfileRule שיכולה ליצור פרופילי Baseline לחוויות משתמש קריטיות באפליקציה. בהמשך יפורסם תיעוד מפורט. ‫(Ibbefa, ‏ b/203692160)
  • הוסרה וריאציה של ממשק measureRepeated, שנוספה לקוראים של Java, כי היא גרמה לאי בהירות בהשלמה או בפתרון של השיטה. מתקשרים ב-Java יצטרכו שוב להחזיר Unit.Instance מ-measureRepeated. אם זה גורם לכם אי נוחות, אתם יכולים לדווח על באג, ואנחנו נבדוק את הנושא בגרסה עתידית. (Ifb23e, b/204331495)

גרסה ‎1.1.0-alpha10

‫27 באוקטובר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 מופץ. גרסה ‎1.1.0-alpha10 מכילה את השמירות האלה.

שינויים ב-API

  • העברה לאחור של StartupTimingMetric כדי שתפעל עד API 23. ההטמעה החדשה הזו גם מטפלת טוב יותר ב-reportFullyDrawn() כדי להמתין עד שהתוכן המתאים יעבור רינדור. (If3ac9, ‏ b/183129298)
  • נוספה הערה JvmOverloads לכמה שיטות MacrobenchmarkScope למתקשרים ב-Java. (I644fe, ‏ b/184546459)
  • צריך לספק פונקציית MacrobenchmarkRule.measureRepeated חלופית שמשתמשת ב-Consumer<MacrobenchmarkScope> לשימוש אידיומטי בשפת Java. (If74ab, b/184546459)

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שהמעקב לא התחיל מוקדם מספיק, ולנתוני מדדים חסרים. העדכון הזה צפוי לפתור חריגים מסוג 'לא ניתן לקרוא מדדים במהלך השוואה לשוק' שנגרמו בגלל הספרייה עצמה. (I6dfcb, ‏ b/193827052, ‏ b/200302931)
  • השם של FrameNegativeSlack שונה ל-FrameOverrun כדי להבהיר את המשמעות שלו – כמה זמן חרג הפריים מהתקציב שהוקצה לו. ‫(I6c2aa, ‏ b/203008701)

גרסה ‎1.1.0-alpha09

‫13 באוקטובר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha09 מופץ. גרסה ‎1.1.0-alpha09 מכילה את השמירות האלה.

תיקוני באגים

  • תמיכה בהסרת מטמון של דפי ליבה ללא הרשאת root ב-API 31/S+, מה שיגדיל את הדיוק של השקות StartupMode.COLD. (Iecfdb, ‏ b/200160030)

גרסה ‎1.1.0-alpha08

‫29 בספטמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha08 מופץ. גרסה ‎1.1.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • הפעלת בדיקות השוואתיות של מאקרו לגלילה כדי להריץ בדיקות עד API 23 ‏ (If39c2, ‏ b/183129298)
  • הוספה של סוג חדש של מדד לדגימה לממשק המשתמש ולפלט JSON, עם התמקדות באחוזונים של כמה דגימות בכל איטרציה. (I56247, ‏ b/199940612)
  • מעבר למדדים של נקודה צפה בכל ספריות ההשוואה (חיתוך בממשק המשתמש של Studio). (I69249, ‏ b/197008210)

גרסה ‎1.1.0-alpha07

‫1 בספטמבר 2021

androidx.benchmark:benchmark-*:1.1.0-alpha07 מופץ. גרסה ‎1.1.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • העלינו את רמת ה-API המינימלית ל-21 כדי לשקף את רמת ה-API הנמוכה ביותר שאנחנו מתכוונים לתמוך בה בעתיד. רמת ה-API המינימלית הנתמכת ממשיכה להיות מועברת באמצעות RequiredApi(), והיא כרגע 29 (I440d6, ‏ b/183129298)

תיקוני באגים

  • בוצעו תיקונים ב-ProfileInstaller כדי להקל על הפעלת MacroBenchmarks באפליקציות שמשתמשות בפרופילים של Baseline באמצעות CompilationMode.BaselineProfile. (I42657, ‏ b/196074999) הערה: נדרש גם עדכון לגרסה androidx.profileinstaller:profileinstaller:1.1.0-alpha04 ומעלה.
  • נקודות ההשוואה StartupMode.COLD ו-CompilationMode.None יציבות יותר עכשיו. ‫(I770cd, ‏ b/196074999)

גרסה ‎1.1.0-alpha06

‫18 באוגוסט 2021

androidx.benchmark:benchmark-*:1.1.0-alpha06 מופץ. גרסה ‎1.1.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף ארגומנט האינסטרומנטציה androidx.benchmark.iterations כדי לאפשר שינוי ידני של מספר האיטרציות כשבודקים או יוצרים פרופיל באופן מקומי. (6188be, ‏ b/194137879)

תיקוני באגים

  • הוחלף ל-Simpleperf כפרופילר ברירת המחדל של הדגימות ב-API 29 ומעלה. (Ic4b34, ‏ b/158303822)

בעיות מוכרות

  • CompilationMode.BaselineProfile נמצא בשלבי פיתוח. לכן, כרגע לא מומלץ להשתמש בו כדי לקבוע את איכות הפרופיל.

גרסה ‎1.1.0-alpha05

4 באוגוסט 2021

androidx.benchmark:benchmark-*:1.1.0-alpha05 מופץ. גרסה ‎1.1.0-alpha05 מכילה את השמירות האלה.

1.1.0-alpha04 בוטל לפני ההשקה בגלל קריסה ספורדית. b/193827052

שינויים ב-API

  • הפונקציה startActivityAndWait הוחלפה בהפעלת ההשקה באמצעות am start, מה שמקצר את הזמן של כל איטרציה של מדידה בכ-5 שניות, אבל כבר לא תומך ב-intent parcelables. (I5a6f5, b/192009149

תיקוני באגים

  • הפחתת האגרסיביות של זיהוי ויסות תרמי, וחישוב מחדש של קו הבסיס אם מזוהים ויסות תרמיות לעיתים קרובות. (I7327b)
  • בוצעו תיקונים ב-FrameTimingMetric כדי שהמדד יפעל ב-Android S בטא (Ib60cc, ‏ b/193260119)
  • כדי לתמוך טוב יותר ב-CompilationMode.BaselineProfile, אפשר להשתמש ב-EmptyActivity כדי להוציא את אפליקציית היעד ממצב של עצירה בכוח. (Id7cac, b/192084204)
  • הסיומת של קובץ המעקב שונתה ל-.perfetto-trace כדי להתאים לתקן הפלטפורמה. ‫(I4c236, ‏ b/174663039)
  • המדד StartupTimingMetric מפיק עכשיו את המדד fullyDrawnMs כדי למדוד את הזמן עד שהאפליקציה מסיימת את הרינדור. כדי להגדיר את המדד הזה באפליקציה, צריך לקרוא ל-Activity.reportFullyDrawn כשהתוכן הראשוני מוכן, למשל כשפריטי הרשימה הראשוניים נטענים ממסד נתונים או מרשת. ‫(reportFullyDrawn method available without build version checks on ComponentActivity). שימו לב: הניסוי צריך לפעול מספיק זמן כדי לתעד את המדד (הפונקציה startActivityAndWait לא ממתינה עד שהדוח מוצג במלואו). (If1141, b/179176560)
  • הפחתת העלות של הוספת מטא-נתונים של ממשק המשתמש למעקב ב-50 מילי-שניות ומעלה (Ic8390, ‏ b/193923003)
  • הגדלנו באופן משמעותי את תדירות הסקרים כשמפסיקים את המעקב, מה שיכול לקצר את זמן הריצה של מדד הביצועים של ההפעלה ב-30% ומעלה (Idfbc1, ‏ b/193723768)

גרסה ‎1.1.0-alpha03

‫16 ביוני 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 מופץ. גרסה ‎1.1.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

תיקוני באגים

  • קוד ה-Gradle לדוגמה לביטול שגיאות בבדיקות הביצועים עודכן כך שישתמש ב-API שלא הוצא משימוש, עם תחביר שתומך גם במשתמשי ‎ .gradle.kts.

    למשל:

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

גרסה ‎1.1.0-alpha02

‫18 במאי 2021

גרסה 1.1.0-alpha02 של Benchmark כוללת רכיב חשוב לבנצ'מרקינג – Macrobenchmark. בנוסף ל-benchmark שמאפשר למדוד לולאות של מעבד, macrobenchmark מאפשר למדוד אינטראקציות של אפליקציה שלמה, כמו הפעלה וגלילה, ולתעד עקבות. מידע נוסף זמין במאמרי העזרה בנושא הספרייה.

androidx.benchmark:benchmark-*:1.1.0-alpha02 מופץ. גרסה ‎1.1.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

נוספו ארטיפקטים של Macrobenchmark‏ (androidx.benchmark:benchmark-macro-junit4 ו-androidx.benchmark:benchmark-macro)

  • איסוף מדדי ביצועים של הפעלה, גלילה או אנימציה מהאפליקציה, באופן מקומי או ב-CI
  • איך מצלמים עקבות ובודקים אותן מתוך Android Studio

תיקוני באגים

  • פתרון לבעיה בהרשאות של מעטפת עם ספריית פלט ב-Android 12 (הערה – יכול להיות שיהיה צורך לעדכן את Android Gradle Plugin לגרסה 7.0.0 canary ואת Android Studio לגרסה Arctic Fox ‏ (2020.3.1), כדי להמשיך לצלם קובצי פלט במכשירים מושפעים). (Icb039)
  • שמירה במטמון של הגדרות התמיכה ב-BenchmarkPlugin (6be1c1, ‏ b/159804788)
  • פלט קובץ פשוט – מופעל כברירת מחדל, בספרייה שלא נדרש בה requestLegacyExternalStorage=true (8b5a4d, ‏ b/172376362)
  • תיקון אזהרות ב-logcat של הדפסת ספרייה לגבי אי-מציאת שרשור JIT בגרסאות פלטפורמה שבהן הוא לא קיים. (I9cc63, b/161847393)
  • תיקון של קריאת התדר המקסימלי של המכשיר. (I55c7a)

גרסה ‎1.1.0-alpha01

‫10 ביוני 2020

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

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

  • מדד ההקצאה – ההשוואה לביצועים כוללת עכשיו שלב נוסף אחרי ההכנה והתזמון, שבו נרשמים נתוני ההקצאה. הקצאות יכולות לגרום לבעיות בביצועים בגרסאות ישנות יותר של הפלטפורמה (‎140ns ב-O הפכו ל-‎8ns ב-M – נמדד ב-Nexus5X, עם שעונים נעולים). המדד הזה מוצג בפלט של מסוף Android Studio, וגם ב
  • תמיכה בפרופילים – עכשיו אפשר לתעד נתוני פרופילים להרצת השוואה, כדי לבדוק למה הקוד פועל לאט. ב-Benchmark אפשר ללכוד מעקב אחר שיטות או דגימה של שיטות מ-ART. אפשר לבדוק את הקבצים האלה באמצעות הכלי Profiler ב-Android Studio דרך File > Open (קובץ > פתיחה).
  • הפלאגין Benchmark Gradle מספק עכשיו הגדרות ברירת מחדל להגדרה פשוטה יותר:
    • testBuildType מוגדר כברירת מחדל לפרסום, כדי להימנע משימוש בתלויות עם כיסוי קוד מובנה. הגדרנו גם את buildType של הגרסה לפרסום כ-buildType ברירת המחדל, כדי ש-Android Studio יוכל לבחור באופן אוטומטי את וריאנט ה-build הנכון כשפותחים פרויקט בפעם הראשונה. (b/138808399)
    • signingConfig.debug משמש כהגדרת ברירת המחדל לחתימה (b/153583269)

** תיקוני באגים **

  • הפחתנו באופן משמעותי את התקורה של מעבר החימום, שבה המדידה הראשונה לכל נקודת השוואה הייתה גבוהה באופן מלאכותי מהאחרות. הבעיה הזו הייתה בולטת יותר בבדיקות ביצועים קטנות מאוד (מיקרו-שנייה אחת או פחות). (b/142058671)
  • תוקנה השגיאה InstrumentationResultParser שמוצגת לכל בדיקת ביצועים כשמריצים אותה משורת הפקודה. (I64988, ‏ b/154248456)

בעיות מוכרות

  • כשמריצים את Benchmark דרך שורת הפקודה או gradle, התוצאות לא מודפסות ישירות. כדי לעקוף את הבעיה, אפשר להריץ את התהליך דרך Studio או לנתח את קובץ הפלט בפורמט JSON כדי לקבל את התוצאות.
  • הדיווח על השוואה לשוק לא מצליח לשלוף את הדוח ממכשירים שמותקנת בהם אפליקציה עם applicationId שמסתיים ב-android או ב-download (לא תלוי באותיות רישיות). משתמשים שנתקלים בבעיה הזו צריכים לשדרג את הפלאגין של Android Gradle לגרסה 4.2-alpha01 ואילך.

גרסה 1.0.0

גרסת ההשוואה לשוק 1.0.0

20 בנובמבר 2019

androidx.benchmark:benchmark-common:1.0.0,‏ androidx.benchmark:benchmark-gradle-plugin:1.0.0 ו-androidx.benchmark:benchmark-junit4:1.0.0 פורסמו ללא שינויים מגרסה ‎1.0.0-rc01. גרסה 1.0.0 מכילה את השמירות האלה.

התכונות העיקריות בגרסה 1.0.0

ספריית ההשוואה מאפשרת לכם לכתוב מדדי ביצועים של קוד האפליקציה ולקבל תוצאות במהירות.

הוא מונע בעיות בהגדרות של ה-build ושל זמן הריצה, ומייצב את ביצועי המכשיר כדי להבטיח שהמדידות יהיו מדויקות ועקביות. מריצים את הבדיקות ישירות ב-Android Studio או ב-Continuous Integration כדי לעקוב אחר ביצועי הקוד לאורך זמן ולמנוע רגרסיות.

התכונות העיקריות כוללות:

  • ייצוב השעון
  • סדר עדיפויות אוטומטי לשרשורים
  • תמיכה בבדיקות ביצועים של ממשק המשתמש, כמו בדוגמה RecyclerView Sample
  • חימום בלולאה עם מודעות ל-JIT
  • פלט של מדד השוואה בפורמט JSON לעיבוד שלאחר מכן

גרסה ‎1.0.0-rc01

‫23 באוקטובר 2019

התכונות androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 וגם androidx.benchmark:benchmark-junit4:1.0.0-rc01 מושקות. גרסה ‎1.0.0-rc01 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו למדדים מעקב אחרי systrace

תיקוני באגים

  • תוקנה בעיה של חוסר יציבות במדדים, שבה JIT לא הסתיים לפני החימום בגלל ביטול העדיפות (b/140773023)
  • ספריית פלט מאוחדת של JSON ב-Android Gradle Plugin 3.5 ו-3.6

גרסה ‎1.0.0-beta01

‫9 באוקטובר 2019

התכונות androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 וגם androidx.benchmark:benchmark-junit4:1.0.0-beta01 מושקות. גרסה ‎1.0.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • להפעיל איסוף אשפה לפני כל חימום כדי להפחית את העומס על הזיכרון מבדיקת ביצועים אחת לדליפה לבדיקה הבאה (b/140895105)

תיקוני באגים

  • נוספה תלות ב-androidx.annotation:android-experimental-lint, כך שקוד Java יפיק שגיאות lint בצורה נכונה כשלא נעשה שימוש ב-API ניסיוני, בדומה למה שמסופק על ידי הערת הניסוי של Kotlin עבור קוראים של Kotlin.
  • הכלי מזהה עכשיו באופן תקין את השימוש בארגומנט additionalTestOutputDir instrumentation לפלט ב-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 שגרמה להשבתה של מכשירים שעברו רוט עם גרסה ישנה של כלי ה-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, גם לשימוש במערכות בנייה שונות (כמו Bazel או Buck) וגם כשמריצים ב-CI. מידע נוסף זמין במאמרים בנושא השוואת ביצועים ללא Gradle והשוואת ביצועים בשילוב עם Continuous Integration.

תכונות חדשות

  • פלאגין Gradle
    • עכשיו המערכת משביתה באופן אוטומטי את כיסוי הבדיקות ומגדירה את AndroidBenchmarkRunner כברירת מחדל (b/138374050)
    • הוספנו תמיכה בהעתקת נתונים חדשה שמבוססת על AGP, כשמריצים בדיקות השוואה וכשמשתמשים ב-AGP 3.6 ואילך
  • תוספות לפורמט JSON
    • פלט של זמן הריצה הכולל של בדיקת ההשוואה לשוק (b/133147694)
    • @Parameterized מדדים שמשתמשים במחרוזת שם (לדוגמה @Parameters(name = "size={0},depth={1}")) מפיקים עכשיו שמות וערכים של פרמטרים לכל מדד בפלט JSON ‏ (b/132578772)
  • מצב פרימטר לבדיקות (b/138785848)
    • נוסף מצב 'הרצה יבשה' להרצת כל לולאת השוואה לביצועים רק פעם אחת, כדי לבדוק אם יש שגיאות או קריסות בלי לתעד מדידות. לדוגמה, אפשר להשתמש בזה כדי להריץ במהירות בדיקות השוואה לפני שליחת קוד, כדי לוודא שהן לא פגומות.

שינויים ב-API

  • מבנה המודול השתנה, והספרייה פוצלה (b/138451391)
    • benchmark:benchmark-junit4 מכיל מחלקות עם תלות ב-JUnit: ‏ AndroidBenchmarkRunner ו-BenchmarkRule, שניהם הועברו לחבילה androidx.benchmark.junit4
    • benchmark:benchmark-common מכיל את שאר הלוגיקה, כולל BenchmarkState API
    • הפיצול הזה יאפשר לספרייה לתמוך בהשוואה בין ביצועים בלי ממשקי JUnit4 API בעתיד
  • אזהרות לגבי הגדרות אישיות מטופלות עכשיו כשגיאות, והן יגרמו לקריסת הבדיקה (b/137653596)
    • השינוי הזה נועד לעודד מדידות מדויקות, במיוחד ב-CI
    • אפשר להפוך את השגיאות האלה לאזהרות באמצעות ארגומנט של מכשור. לדוגמה: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

תיקוני באגים

  • כשמתרחשות שגיאות בכתיבה לאחסון חיצוני במכשירי Q, מוצגות הודעות עם תיאור מפורט יותר והצעות לפתרון הבעיה
  • המסכים מופעלים אוטומטית במהלך הפעלות של בדיקות השוואה, במקום שהבדיקות ייכשלו כשהמסך כבוי

תכנים שנוספו על ידי משתמשים חיצוניים

  • תודה לסרגיי זכרוב על התרומה לשיפורים בפלט JSON ולתיקון בעיות שקשורות לכיבוי המסך.

גרסה ‎1.0.0-alpha03

‫2 ביולי 2019

androidx.benchmark:benchmark:1.0.0-alpha03 וגם androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 מופצים. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • הצגת משך השינה בגלל ויסות תרמי לכל מדד בדוח ה-JSON המלא

תיקוני באגים

  • הפלאגין Gradle לא צריך להיות מוחל יותר אחרי פלאגינים של Android והבלוק Android
  • נוספה תמיכה בדוחות השוואה לשוק במכשירי Android 10 באמצעות אחסון בהיקף מוגבל

גרסה ‎1.0.0-alpha02

‫6 ביוני 2019

androidx.benchmark:1.0.0-alpha02 וגם androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 מופצים. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.

שימו לב שאנחנו מתייחסים לסכימת ה-JSON כאל API. אנחנו מתכננים לפעול בהתאם לאותם אילוצי יציבות כמו בממשקי API אחרים: יציבות (עם חריגים נדירים מאוד) אחרי שהגרסה תהיה בבטא, וקביעות בגרסה הסופית, עם תוספות רק בגרסאות משניות ושינויים או הסרות בגרסאות ראשיות.

שינויים ב-API

  • שיפוץ של סכימת ה-JSON. שינויים נוספים בסכימת ה-JSON צפויים להיות מוגבלים לתוספות:

    • ארגנו מחדש את המבנה של אובייקט התוצאה כדי לתמוך בעתיד בקבוצות נוספות של מדדים (b/132713021)
    • נוסף מידע על ההקשר של הרצת הבדיקה, כמו מידע על המכשיר והגרסה, וגם אם השעונים נעולים, לאובייקט ברמה העליונה (b/132711920)
    • השמות של מדדי הזמן כוללים עכשיו את התוספת 'ns' (b/132714527)
    • נוספו נתונים סטטיסטיים נוספים לכל מדד שדווח (מקסימום, חציון, מינימום), והוסר נתון הסיכום הפשוט 'ננו' (b/132713851)
  • הוסר פלט XML (b/132714414)

  • הוסר מה-API של BenchmarkState.reportData זיהוי של ויסות תרמי (b/132887006)

תיקוני באגים

  • נפתרה הבעיה שבה ./gradlew lockClocks לא נשאר במקומו בחלק מהמכשירים עם מערכות הפעלה עדכניות (b/133424037)
  • השבתה של זיהוי ויסות נתונים באמולטור (b/132880807)

גרסה ‎1.0.0-alpha01

‫7 במאי 2019

androidx.benchmark:benchmark:1.0.0-alpha01 מופץ. השמירות שכלולות בגרסה הזו זמינות כאן.