मानदंड

Android Studio में अपने कोड की परफ़ॉर्मेंस का सटीक आकलन करें.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
01 जुलाई, 2026 1.4.1 - - 1.5.0-alpha07

डिपेंडेंसी का एलान करना

Benchmark पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

मैक्रोबेंचमार्क

अपने प्रोजेक्ट में 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 का इस्तेमाल करने के लिए, अपने 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 प्लग इन भी उपलब्ध कराती है. यह प्लग इन, मॉड्यूल के लिए डिफ़ॉल्ट रूप से कॉन्फ़िगरेशन सेट करता है. साथ ही, होस्ट में बेंचमार्क आउटपुट कॉपी सेट अप करता है और ./gradlew lockClocks टास्क उपलब्ध कराता है.

प्लग इन का इस्तेमाल करने के लिए, अपनी टॉप-लेवल build.gradle फ़ाइल के `plugins` ब्लॉक में यह लाइन शामिल करें:

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

01 जुलाई, 2026

androidx.benchmark:benchmark-*:1.5.0-alpha07 रिलीज़ हो गया है. वर्शन 1.5.0-alpha07 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • डिवाइस पर Perfetto ट्रेस को आसानी से कैप्चर किया जा सकता है. (I48810)
  • एक्सपेरिमेंट के लिए उपलब्ध TraceProcessor.runServer एक्सटेंशन एपीआई को androidx.benchmark:benchmark-macro से androidx.benchmark:benchmark-common और androidx.benchmark पैकेज में ले जाएं. इससे, आने वाले समय में माइक्रोबेंचमार्क में इनका इस्तेमाल किया जा सकेगा. (Ie25bb, b/393640753)

गड़बड़ियां ठीक की गईं

  • Perfetto v56.0 (I8fb9d) का इस्तेमाल करने के लिए, traceprocessor को लागू करने के तरीके के साथ-साथ Perfetto Trace Capture को अपडेट करें
  • androidx.benchmark.requireAot और androidx.benchmark.requireAot को डिफ़ॉल्ट रूप से सही पर सेट करें. ये ज़्यादा सुरक्षित डिफ़ॉल्ट सेटिंग यह पक्का करती हैं कि माइक्रोबेंचमार्क चलाने से पहले कंपाइल किया जाए. यह सेटिंग, AGP 8.4 या इसके बाद के वर्शन का इस्तेमाल करते समय, बेंचमार्क Gradle प्लगिन के साथ डिफ़ॉल्ट रूप से चालू होती है. साथ ही, यह भी पक्का करती हैं कि measureRepeated का इस्तेमाल मुख्य थ्रेड पर न किया जाए, क्योंकि इससे एएनआर हो सकते हैं. (I1bc3c, b/379115078)
  • परफ़ेक्टो किल टाइमआउट को 5 से बढ़ाकर 30 सेकंड कर दिया गया है. यह बदलाव, बेंचमार्क के लिए कैप्चर किए गए परफ़ेक्टो सेशन पर ही लागू होगा. समस्या होने पर, गड़बड़ी की ज़्यादा जानकारी लॉग की गई. (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 जोड़ा गया है. इससे यह जांच की जा सकती है कि रूट किए गए डिवाइसों के लिए सीपीयू क्लॉक लॉक हैं या नहीं. (Id82e8, b/468039042)

वर्शन 1.5.0-alpha04

11 मार्च, 2026

androidx.benchmark:benchmark-*:1.5.0-alpha04 रिलीज़ हो गया है. वर्शन 1.5.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • 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 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Kotlin Multiplatform मॉड्यूल के लिए, बेसलाइन प्रोफ़ाइल जनरेट करने की सुविधा को आंशिक तौर पर जोड़ा गया. आम तौर पर, प्रोफ़ाइलों की डिपेंडेंसी को dependencies ब्लॉक में baselineProfile Gradle कॉन्फ़िगरेशन का इस्तेमाल करके तय किया जा सकता है. हालांकि, फ़िलहाल यह KMP मॉड्यूल के लिए काम नहीं करता.

    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // THIS DOES NOT WORK
          // baselineProfile(":yourProducerProject")
        }
      }
    }
    
  • इसके बजाय, आपको baselineProfile **extension. (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 को बढ़ाता है. इससे आपको onElement { ... }.click() जैसे आधुनिक UiAutomator एपीआई इस्तेमाल करने की अनुमति मिलती है.
  • UiAutomator 2.4 के बारे में ज़्यादा जानकारी के लिए, दस्तावेज़ देखें.

नई सुविधाएं

  • AGP 9.0 में, बेसलाइन प्रोफ़ाइल Gradle प्लगिन के लिए newDsl=false की ज़रूरत नहीं है (Iaaac7, b/443311090)
  • ट्रेस कॉन्फ़िगरेशन को बढ़ाया गया है, ताकि बेंचमार्क में कैप्चर किए गए सिस्टम/Perfetto ट्रेस में मुख्य साइज़ (जैसे, छोटा/बड़ा) शामिल किया जा सके. (I8e397, b/457469959)

एपीआई में हुए बदलाव

  • (UiAutomator में) नई विंडो के लिए, startActivity wait को wait में बदल दिया गया है. (I35da6, b/440021797)
  • androidx.benchmark में BlackHole एपीआई को स्थिर किया गया है. (I2b67e, b/451749438)
  • PerfettoTraceRule के लिए, सुविधा देने वाले कंस्ट्रक्टर के लिए @JvmOverloads जोड़ें. (I1510a, b/443763207)

वर्शन 1.4

वर्शन 1.4.1

10 सितंबर, 2025

androidx.benchmark:benchmark-*:1.4.1 रिलीज़ हो गया है. वर्शन 1.4.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अगर टारगेट प्रोसेस पहले से चल रही थी और StartupMode तय नहीं किया गया था, तो perfettoSdkTracing=true (जैसे, माइक्रोबेंचमार्क में Compose को ट्रेस करते समय) टारगेट प्रोसेस को बंद कर देगा. (Ib2c1f)

वर्शन 1.4.0

30 जुलाई, 2025

androidx.benchmark:benchmark-*:1.4.0 रिलीज़ हो गया है. वर्शन 1.4.0 में ये बदलाव शामिल हैं.

1.3.0 के बाद हुए अहम बदलाव

माइक्रोबेंचमार्क

  • Gradle प्रोजेक्ट को अलग-अलग रखने के लिए, Gradle टास्क lockClocks और unlockClocks को टॉप लेवल के बजाय, बेंचमार्क प्रोजेक्ट पर ले जाया गया.
  • BenchmarkRule को फिर से फ़ैक्टर किया गया है, ताकि इसे कोराटीन के ऊपर बनाया जा सके. साथ ही, yield() के बेहतर व्यवहार के लिए सहायता दी जा सके. इससे बेंचमार्क रन के दौरान, एएनआर के जोखिम को काफ़ी हद तक कम किया जा सकेगा. खास तौर पर, लंबे समय तक चलने वाले सीआई रन के दौरान. ध्यान दें: यूज़र इंटरफ़ेस (यूआई) बेंचमार्क को measureRepeatedOnMainThread के साथ चलाना चाहिए

Macrobenchmark

  • API 34 और इसके बाद के वर्शन के लिए, CompilationMode.None() पर काम करने का तरीका जोड़ा गया है. ऐसा इसलिए किया गया है, क्योंकि पहली बार लॉन्च होने के बाद ART, ऐप्लिकेशन को कुछ हद तक कंपाइल करता है. इस वजह से, CompilationMode.None() की परफ़ॉर्मेंस में उतार-चढ़ाव हो सकता है.
  • एक्सपेरिमेंट के तौर पर उपलब्ध सुविधा - स्टार्टअप इनसाइट, MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))) पास करके स्टार्टअप मैक्रोबेंचमार्क में कुछ सामान्य समस्याओं को हाइलाइट कर सकती है.
  • ArtMetric को जोड़ा गया है. इसका इस्तेमाल, JIT कंपाइलेशन और क्लास लोडिंग का पता लगाने के लिए किया जा सकता है. ये दोनों, बेसलाइन प्रोफ़ाइल ऑप्टिमाइज़ेशन की पुष्टि करने के लिए काम के हैं.

बेसलाइन प्रोफ़ाइलें

  • 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() के सबसे खराब परफ़ॉर्मेंस को मेज़र न कर पाने की समस्या को ठीक करने के लिए, वर्कअराउंड जोड़ा गया. माफ़ करें, इस समाधान के लिए हर मैक्रोबेंचमार्क सुइट (I4a4f1) की शुरुआत में, रनटाइम इमेज को जान-बूझकर खराब करने के लिए पांच सेकंड का इंतज़ार करना पड़ता है.

वर्शन 1.4.0-beta02

4 जून, 2025

androidx.benchmark:benchmark-*:1.4.0-beta02 रिलीज़ हो गया है. वर्शन 1.4.0-beta02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Java डेवलपर के लिए, BaselineProfileRule.collectWithResults() को कॉल करना आसान बनाने के लिए, BaselineProfileConfig.Builder जोड़ा गया. (I94905)

वर्शन 1.4.0-beta01

7 मई, 2025

androidx.benchmark:benchmark-*:1.4.0-beta01 रिलीज़ हो गया है. वर्शन 1.4.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • PerfettoTraceRule कंस्ट्रक्टर का वैरिएंट जोड़ा गया, जो PerfettoConfig स्वीकार करता है (Ie53ba)

गड़बड़ियां ठीक की गईं

  • सही प्लगिन का इस्तेमाल करने के लिए, TraceProcessor स्टार्टअप इनसाइट लिंक फ़ॉर्मैट अपडेट किया गया है. साथ ही, डेलिमिटर (:, %3A से छोटा है और दोनों काम करते हैं) को ज़्यादा साफ़ तौर पर दिखाया गया है (Ie18ef)
  • प्रोसेस बंद करने के लिए हमेशा 'बंद करें' विकल्प का इस्तेमाल करें. भले ही, डिवाइस रूट किया गया हो और सिस्टम ऐप्लिकेशन बंद किए जा रहे हों. यह फ़ॉर्म के अपवादों को ठीक करता है: Expected no stdout/stderr from killall ... No such process. (Idca2c)

बाहरी योगदान

  • TraceProcessorHttpServer के लिए प्रॉक्सी अपवाद हैंडलर जोड़ा गया (I480f5)

वर्शन 1.4.0-alpha11

9 अप्रैल, 2025

androidx.benchmark:benchmark-*:1.4.0-alpha11 रिलीज़ हो गया है. वर्शन 1.4.0-alpha11 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • TraceProcessor के आर्ग्युमेंट टाइमआउट में बदलाव किया गया: Java कॉलर के इस्तेमाल के लिए, timeoutMs की अवधि लंबी की गई. (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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • TraceProcessor सर्वर लोड और क्वेरी करने के लिए, डिफ़ॉल्ट टाइमआउट को 60/30 सेकंड से बढ़ाकर 120 सेकंड कर दिया गया है. साथ ही, दोनों को एक टाइमआउट पैरामीटर के साथ कॉन्फ़िगर किया जा सकता है. (Ifec87)

गड़बड़ियां ठीक की गईं

  • बिना profileinstaller के किसी ऐप्लिकेशन की परफ़ॉर्मेंस की तुलना करने या उसकी प्रोफ़ाइल कैप्चर करने के दौरान होने वाली कुछ समस्याओं को ठीक किया गया है. साथ ही, इसमें BroadcastReciever को शामिल किया गया है. इसका असर सिर्फ़ रूट किए गए डिवाइसों पर चलने वाले टेस्ट पर पड़ता है. (Ied308)

वर्शन 1.4.0-alpha09

12 मार्च, 2025

androidx.benchmark:benchmark-*:1.4.0-alpha09 रिलीज़ हो गया है. वर्शन 1.4.0-alpha09 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • कस्टम लाइफ़साइकल के साथ आसानी से इस्तेमाल करने के लिए, बंद किए जा सकने वाले हैंडल के साथ TraceProcessor और सेशन एपीआई जोड़े गए. यह Coroutine और Java API का इस्तेमाल आसान बनाने की दिशा में भी एक कदम है. एक्सटेंशन के TraceProcessor.runServer {} फ़ंक्शन को अब एक्सपेरिमेंटल के तौर पर मार्क किया गया है. ऐसा इसलिए, क्योंकि आने वाले समय में इन्हें एक्सपेरिमेंटल से हटाकर सामान्य किया जा सकता है. (I358b4)

गड़बड़ियां ठीक की गईं

  • pgrep toybox में हुए बदलाव की वजह से, एपीआई 36 के साथ फ़िक्स्ड बेंचमार्क और बेसलाइन प्रोफ़ाइल कैप्चर करने की सुविधा काम नहीं कर रही है. अब पूरी कमांड लाइन प्रिंट करने के लिए, -a की ज़रूरत होती है. (Idc991)
  • डिफ़ॉल्ट ट्रेसिंग कॉन्फ़िगरेशन को फ़िल्टर किया गया है, ताकि नए एपीआई लेवल पर ट्रेस में डेटा के नुकसान का जोखिम कम हो सके. (I54e8a)
  • एक्सपेरिमेंट के तौर पर androidx.benchmark.killExistingPerfettoRecordings इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया है. इसे false पर सेट किया जा सकता है, ताकि पहले से मौजूद परफ़ेक्टो ट्रेस कैप्चर जारी रहे. डिफ़ॉल्ट रूप से, डिवाइस पर पहले से मौजूद Perfecto ट्रेस कैप्चर बंद कर दिए जाते हैं, ताकि कोई रुकावट न आए. (I02a3c)
  • एपीआई 35 और इससे ऊपर के रिलीज़ किए गए ओएस वर्शन के लिए, JSON फ़ील्ड context.osCodenameAbbreviated अब REL होगा. ऐसा इसलिए है, क्योंकि प्लैटफ़ॉर्म अब नॉन-न्यूमेरिक कोड नेम के साथ काम नहीं करता. (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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • TraceProcessor.runSession() एक्सटेंशन एपीआई को एक्सपेरिमेंटल के तौर पर मार्क किया गया है, क्योंकि ये Android पर कंस्ट्रक्टर के तौर पर काम कर सकते हैं. (Ib0528, b/393640753)
  • स्टार्टअप की अहम जानकारी देने वाली सुविधा को लागू करने के ज़्यादातर तरीके अब सार्वजनिक तौर पर उपलब्ध हैं या एक्सपेरिमेंट के तौर पर उपलब्ध हैं. साथ ही, इन्हें 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 के इंटरनल फ़ंक्शन की संख्या कम की गई है, ताकि उदाहरण के लिए, मेथड ट्रेस ज़्यादा साफ़ तौर पर दिखें (Ifaed8)
  • क्रैश ठीक करने के लिए अनुमानित फ़िक्स: '[ProcessPid(processName=perfetto, pid=...)] को रोका नहीं जा सका'. अब बेंचमार्क, क्रैश होने के बजाय एक मैसेज लॉग करेगा. ऐसा तब होगा, जब बैकग्राउंड में चल रही Perfetto प्रोसेस को बेंचमार्क चलाने से पहले रोका नहीं जा सकेगा. (I37d3e, b/323601788)
  • 'Expected pm dump-profiles stdout' लेबल वाले IllegalStateExceptions को ठीक किया गया है. ये लेबल, आउटपुट फ़ॉर्मैट की बहुत ज़्यादा जांच करने की वजह से मिले थे. (I358dc)

वर्शन 1.4.0-alpha07

29 जनवरी, 2025

androidx.benchmark:benchmark-*:1.4.0-alpha07 रिलीज़ हो गया है. वर्शन 1.4.0-alpha07 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • BaselineProfileRule ने अब collectWithResults(...) एपीआई लॉन्च किया है. इसमें कंप्यूट की गई प्रोफ़ाइलों के पाथ की सूची शामिल है. (I056f8)
  • androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया है. इसे फ़ॉल्स पर सेट किया जा सकता है, ताकि लोकल टेस्टिंग के लिए androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline के थ्रो ऑन डेडलाइन व्यवहार को बंद किया जा सके.measureRepeatedOnMainThread आम तौर पर, इसका सुझाव नहीं दिया जाता, क्योंकि इससे टेस्ट के दौरान एएनआर की संभावना बढ़ जाती है. (Idbeec, b/353226476)

एपीआई में हुए बदलाव

  • @JvmOverloads को MicrobenchmarkConfig कंस्ट्रक्टर में जोड़ा गया. (I13fd3)
  • BenchmarkRule को फिर से फ़ैक्टर किया गया है, ताकि इसे कोराटीन के ऊपर बनाया जा सके. साथ ही, yield() के बेहतर व्यवहार के लिए सहायता दी जा सके. इस रीफ़ैक्टरिंग से, एक्सपेरिमेंट के तौर पर उपलब्ध कई BenchmarkState एपीआई हटा दिए गए हैं. हालांकि, ज़रूरत के हिसाब से इन्हें बदला जाएगा. इसके अलावा, व्यवहार को साफ़ तौर पर बताने के लिए runWithMeasurementDisabled जोड़ा गया है (सभी मेज़रमेंट रोक दिए गए हैं). आने वाले समय में, runWithTimingDisabled का इस्तेमाल बंद कर दिया जाएगा. (I19837, b/389149423, b/311242861)
  • PerfettoTraceProcessor को नए androidx.benchmark:benchmark-traceprocessor आर्टफ़ैक्ट में TraceProcessor पर ले जाएं. साथ ही, इसके ज़्यादातर एपीआई को एक्सपेरिमेंटल से हटा दें. ट्रेस से डेटा पढ़ने वाले किसी भी कस्टम TraceMetric को नए TraceProcessor इंपोर्ट में अपडेट करना होगा. नया TraceProcessor एपीआई, पुराने एपीआई की तरह ही काम करता है. हालांकि, यह एक स्टैंडअलोन इंटरफ़ेस लाइब्रेरी है. यह कुछ हद तक Room की androidx.sqlite लेयर के जैसा है. इसमें Android के लिए खास तौर पर लागू किया गया एक फ़ंक्शन है, जो मैक्रोबेंचमार्क में बनाया गया है. नए आर्टफ़ैक्ट का इस्तेमाल 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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • PerfettoTraceProcessor.Session.query() में @Language("sql") के इस्तेमाल को हटा दिया गया है, क्योंकि Studio में हाइलाइट करने/पार्स करने की सुविधा काम नहीं कर रही है. (Idc2fa, b/377733398)

गड़बड़ियां ठीक की गईं

  • यह लाइब्रेरी अब JSpecify nullness annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल के लिए, कंपाइलर के इस तर्क का इस्तेमाल करना चाहिए: -Xjspecify-annotations=strict (यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से शुरू होता है). (I46810, b/326456246)
  • क्लास लोड (न कि init) की रिपोर्ट करने के लिए, ArtMetric को ठीक किया गया है. साथ ही, रनटाइम के व्यवहार के बारे में बताने वाले दस्तावेज़ों को बेहतर बनाया गया है. (I9915c)
  • Android के मल्टीयूज़र मोड में, सिर्फ़ रूट किए गए डिवाइसों पर रूट के तौर पर निर्देश लागू करें. (I88b44)

वर्शन 1.4.0-alpha05

13 नवंबर, 2024

androidx.benchmark:benchmark-*:1.4.0-alpha05 रिलीज़ हो गया है. वर्शन 1.4.0-alpha05 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एपीआई 34 और इसके बाद के वर्शन में, CompilationMode.None() से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, CompilationMode.None() की परफ़ॉर्मेंस में उतार-चढ़ाव होता था. साथ ही, यह शुरुआती और सबसे खराब परफ़ॉर्मेंस को नहीं दिखाती थी. यह प्लैटफ़ॉर्म में हुए बदलाव के हिसाब से काम करता है. इससे ART की कंपाइलेशन स्थिति verify, ऐप्लिकेशन के पहली बार लॉन्च होने के कुछ समय बाद, ऐप्लिकेशन को आंशिक रूप से कंपाइल कर पाती है. इससे सिर्फ़ क्लास लोडिंग पर असर पड़ता है. (Ie48d0)
  • उस समस्या को ठीक किया गया है जिसमें (खास तौर पर छोटे) ऐसे ट्रेस कैप्चर किए जा सकते थे जो बिल्ट-इन Macrobenchmark मेट्रिक से मेज़रमेंट की रिपोर्ट नहीं करते थे. ऐसा Perfetto ट्रेस में प्रोसेस के नाम को छोटा किए जाने की वजह से होता था. अब मैक्रोबेंचमार्क, इस समस्या को हल करने के लिए, सभी बिल्ट-इन क्वेरी में पैकेज के छोटे किए गए नाम के साथ-साथ, पैकेज के अनुमानित नाम को भी खोजता है. ध्यान दें कि कस्टम TraceMetric लागू करने वाले या PerfettoSession.query को सीधे तौर पर कॉल करने वाले अन्य लोग, इस व्यवहार को लागू कर सकते हैं. इसके लिए, उन्हें Perfetto क्वेरी में process.name LIKE "$packageName" को बदलकर (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)
  • एपीआई 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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Macrobenchmark: ArtMetric जोड़ता है. इसका इस्तेमाल, प्रोफ़ाइल कवरेज या Android RunTime की सामान्य परफ़ॉर्मेंस की जांच करने के लिए किया जा सकता है. यह कुकी, JIT, क्लास शुरू होने (जहां उपलब्ध हो) और क्लास की पुष्टि करने की संख्या और कुल अवधि को कैप्चर करती है. इसके अलावा, CaptureInfo में बदलाव किए गए हैं, ताकि डिफ़ॉल्ट रूप से एआरटी के मुख्य वर्शन को शामिल किया जा सके. (I930f7)
  • मानदंड के JSON आउटपुट में coefficientOfVariation जोड़ें, ताकि मानदंड के किसी रन में स्थिरता दिखाई जा सके. (Ib14ea)

गड़बड़ियां ठीक की गईं

  • AVD डिवाइस के नाम में स्पेस होने पर, CollectBaselineProfileTask को ठीक किया गया. (Ia0225, b/371642809)
  • StartupMode.COLD अपवादों से जुड़ी गड़बड़ियों को ठीक करने के लिए अनुमानित फ़िक्स: Package <packagename> must not be running prior to cold start!. अब, MacrobenchmarkScope.killProcess() (इसमें हर इटरेशन से पहले चलने वाला वह प्रोसेस भी शामिल है जिसका इस्तेमाल StartupMode.COLD के व्यवहार को लागू करने के लिए किया जाता है) यह पुष्टि करने के लिए इंतज़ार करेगा कि ऐप्लिकेशन की सभी प्रोसेस बंद हो गई हैं. (I60aa6, b/351582215)
  • उस समस्या को ठीक किया गया है जिसमें कुछ रूट किए गए एम्युलेटर पर UNLOCKED_ error दिखता था. (Ic5117)
  • यह लाइब्रेरी अब JSpecify nullness annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल के लिए, कंपाइलर के इस तर्क का इस्तेमाल करना चाहिए: -Xjspecify-annotations=strict (यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से शुरू होता है). (I7104f, b/326456246)

वर्शन 1.4.0-alpha02

2 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.4.0-alpha02 रिलीज़ हो गया है. वर्शन 1.4.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Gradle टास्क lockClocks और unlockClocks को टॉप लेवल पर उपलब्ध कराने के बजाय, बेंचमार्क प्रोजेक्ट पर ले जाया गया. यह बदलाव ज़रूरी था, क्योंकि प्रोजेक्ट आइसोलेशन को तोड़े बिना, इन्हें टॉप लेवल की कार्रवाइयों के तौर पर रजिस्टर करने का कोई तरीका नहीं है. (I02b8f, b/363325823)

गड़बड़ियां ठीक की गईं

  • BaselineProfileRule अब मल्टी-प्रोसेस ऐप्लिकेशन के लिए प्रोफ़ाइलें इकट्ठा करता है. इसके लिए, ब्लॉक के आखिर में हर प्रोसेस को सिग्नल दिया जाता है, ताकि प्रोफ़ाइलें डंप की जा सकें. अगर प्रोफ़ाइल के आधार पर कंपाइल किए गए डेटा को ब्रॉडकास्ट करने के लिए कोई प्रोसेस नहीं मिलती है, तो कंपाइल करने की प्रोसेस पूरी नहीं होगी. ऐसा इसलिए, क्योंकि इसमें प्रोफ़ाइल का डेटा शामिल नहीं किया जा सकता. इसके अलावा, डंप के इंतज़ार की अवधि को कंट्रोल करने के लिए, इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • बेंचमार्क 1.3.2 से: इस समस्या को ठीक किया गया है. इसमें Firebase Test Lab (FTL), बेसलाइन प्रोफ़ाइल Gradle प्लगिन से बेसलाइन प्रोफ़ाइल या Macrobenchmark के नतीजे वाली फ़ाइलें नहीं खींच पाता था. (I2f678, b/285187547)

FTL का इस्तेमाल करने के लिए, प्लगिन को प्लगिन ब्लॉक में मौजूद बेसलाइन प्रोफ़ाइल मॉड्यूल पर लागू करें. इसके लिए:

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

इसके बाद, Firebase टेस्ट लैब को इन चीज़ों के साथ कॉन्फ़िगर करें:

  firebaseTestLab {

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

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

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

इसके अलावा, बनाए गए FTL डिवाइस को बेसलाइन प्रोफ़ाइल एक्सटेंशन में भी जोड़ना होगा:

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

वर्शन 1.4.0-alpha01

18 सितंबर, 2024

androidx.benchmark:benchmark-*:1.4.0-alpha01 रिलीज़ हो गया है. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधा - ऐप्लिकेशन के शुरू होने में लगने वाले समय के बारे में अहम जानकारी

  • ऐप्लिकेशन स्टार्टअप की अहम जानकारी देने वाली सुविधा के शुरुआती वर्शन को Macrobenchmark में चालू किया जा सकता है. (09fae38)

स्टार्टअप के मानदंड में इसे चालू करने के लिए:

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

इसके बाद, स्टार्टअप बेंचमार्क चलाने पर, ट्रेस का विश्लेषण किया जाएगा, ताकि सामान्य समस्याओं का पता लगाया जा सके.साथ ही, मेट्रिक के बाद, उन्हें बेंचमार्क टैब में Studio टेस्ट आउटपुट में प्रिंट किया जाएगा. उदाहरण के लिए:

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 ट्रेस में काउंटर के तौर पर दिखती हैं. (3214854)
  • जेआईटी को बंद करने के लिए एक्सपेरिमेंटल स्क्रिप्ट जोड़ी गई हैं. इसके लिए, रूट / रनटाइम रीस्टार्ट करना ज़रूरी है. साथ ही, डिवाइस की परफ़ॉर्मेंस/टेस्ट की स्थिति को रीसेट करना ज़रूरी है. फ़िलहाल, इन्हें Gradle टास्क के तौर पर पब्लिश नहीं किया गया है. (7c3732b)
  • एम्युलेटर पर टेस्ट चलाने के दौरान, टेस्ट स्किप करने के लिए बेंचमार्क आर्ग्युमेंट जोड़ा गया. automaticGenerationDuring बिल्ड चालू होने पर, बेंचमार्क भी बेसलाइन प्रोफ़ाइल जनरेट करने की प्रोसेस को ट्रिगर करेंगे. अगर इम्यूलेटर का इस्तेमाल किया जाता है, तो यह काम नहीं करेगा. नए आर्ग्युमेंट skipBenchmarksOnEmulator की मदद से, हम टेस्ट को स्किप कर सकते हैं. (0c2ddcd)
  • एपीआई 23 और इसके बाद के वर्शन पर परफ़ॉर्मेंस इवेंट चालू करने की सुविधा काम करेगी (2550048)

एपीआई में हुए बदलाव

  • मौजूदा एक्सपेरिमेंटल PerfettoConfig आर्ग्युमेंट को MacrobenchmarkRule.measureRepeated(), नए ExperimentalConfig ऑब्जेक्ट में ले जाया गया.

गड़बड़ियां ठीक की गईं

  • lockClocks.sh के लिए फिर से कोशिश करने की संख्या बढ़ाएं (99e9dac)
  • अगर nonMinified और बेंचमार्क बिल्ड टाइप पहले से मौजूद हैं, तो उन्हें न बनाएं. बग की वजह से, nonMinified और बेंचमार्क बिल्ड टाइप मौजूद होने पर भी, उन्हें फिर से बनाया जा रहा था. (e75f0a5)
  • TraceSectionMetric नतीजों में से, ऐसे स्लाइस को अनदेखा करें जो खत्म नहीं होते हैं. (a927d20)
  • एम्युलेटर की बेहतर जांच, ताकि sdk_ प्रीफ़िक्स को ध्यान में रखा जा सके. (1587de8)
  • FrameTimingGfxInfoMetric में, उन पैकेज को 'क्लियर' के तौर पर मार्क करें जो नहीं चल रहे हैं. (35cc79c)
  • androidx.benchmark.cpuEventCounter से, निर्देश वाले इवेंट के अलावा अन्य इवेंट के लिए गलत वैल्यू जनरेट होने की समस्या ठीक की गई. (06edd59)
  • मेट्रिक की प्राथमिकता के क्रम का पालन करने के लिए, resumeTiming/runWithTimingDisabled को ठीक किया गया है. साथ ही, कम प्राथमिकता वाली मेट्रिक को रोकने/फिर से शुरू करने का असर, ज़्यादा प्राथमिकता वाली मेट्रिक के नतीजों पर काफ़ी कम हो गया है. उदाहरण के लिए, अगर cpuEventCounter.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट के ज़रिए सीपीयू परफ़ॉर्मेंस काउंटर का इस्तेमाल किया जा रहा है, तो pause/resume होने पर timeNs में अब ज़्यादा कमी नहीं आएगी. (5de0968)

वर्शन 1.3

वर्शन 1.3.4

26 मार्च, 2025

androidx.benchmark:benchmark-*:1.3.4 रिलीज़ हो गया है. वर्शन 1.3.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Benchmark Baseline Gradle प्लगिन में, Gradle Project Isolation से जुड़ी समस्याओं को ठीक किया गया है. (b/404523257)

वर्शन 1.3.3

16 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.3.3 रिलीज़ हो गया है. वर्शन 1.3.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एवीडी डिवाइस के नाम में स्पेस होने पर, CollectBaselineProfileTask को ठीक किया गया (Ia0225, b/371642809)

वर्शन 1.3.2

2 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.3.2 रिलीज़ हो गया है. वर्शन 1.3.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Firebase Test Lab (FTL) के लिए, बेसलाइन प्रोफ़ाइल Gradle प्लगिन से बेसलाइन प्रोफ़ाइल या Macrobenchmark के नतीजे वाली फ़ाइलें न मिल पाने की समस्या ठीक की गई. (I2f678, b/285187547)

FTL का इस्तेमाल करने के लिए, प्लगिन को प्लगिन ब्लॉक में मौजूद बेसलाइन प्रोफ़ाइल मॉड्यूल पर लागू करें. इसके लिए:

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

इसके बाद, Firebase टेस्ट लैब को इन चीज़ों के साथ कॉन्फ़िगर करें:

  firebaseTestLab {

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

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

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

इसके अलावा, बनाए गए FTL डिवाइस को बेसलाइन प्रोफ़ाइल एक्सटेंशन में भी जोड़ना होगा:

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

वर्शन 1.3.1

18 सितंबर, 2024

androidx.benchmark:benchmark-*:1.3.1 रिलीज़ हो गया है. वर्शन 1.3.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • सभी बेसलाइन प्रोफ़ाइल चेतावनियों (I7c36e, b/349646646) को बंद करने के लिए, gradle प्रॉपर्टी androidx.baselineprofile.suppressWarnings जोड़ी गई
  • बेसलाइन प्रोफ़ाइल Gradle प्लगिन को ठीक किया गया है, ताकि रैपर बनाने के बजाय, ऐप्लिकेशन से बनाए गए nonMinified… और benchmark… का इस्तेमाल किया जा सके. (Ia8934, b/361370179)
  • एम्युलेटर पर automaticGenerationDuringBuild चालू होने पर, java.lang.AssertionError: ERRORS (not suppressed): EMULATOR की समस्या ठीक की गई. नए तर्क का इस्तेमाल, टेस्ट को स्किप करने के लिए किया जाता है. (If3f51, b/355515798)
  • माइक्रोबेंचमार्क को छोटा करना - बेंचमार्क लाइब्रेरी के ProGuard में org.junit.runner.notification.RunListener की सबक्लास को बनाए रखें (Ic8ed5, b/354264743)
  • TraceSectionMetric को ठीक किया गया है, ताकि खत्म न होने वाले स्लाइस को अनदेखा किया जा सके. पहले, इन्हें -1 अवधि का माना जाता था. उदाहरण के लिए, जोड़ते समय या कम से कम अवधि ढूंढते समय. (If74b7)
  • FrameTimingGfxInfoMetric में उस समस्या को ठीक किया गया है जिसकी वजह से, अगर प्रोसेस पहले से नहीं चल रही थी, तो मेट्रिक शुरू करने पर क्रैश हो जाती थी. (I6e412)

वर्शन 1.3.0

21 अगस्त, 2024

androidx.benchmark:benchmark-*:1.3.0 रिलीज़ हो गया है. वर्शन 1.3.0 में ये बदलाव शामिल हैं.

1.2.0 के बाद से माइक्रोबेंचमार्क में हुए बदलाव

  • ज़्यादातर डिवाइसों पर माइक्रोबेंचमार्क चलाने पर, मेथड ट्रेसिंग की सुविधा डिफ़ॉल्ट रूप से चालू रहती है
    • मेज़रमेंट के बाद, मेथड ट्रेसिंग अलग फ़ेज़ के तौर पर चलती है. इससे सटीक मेज़रमेंट और मेथड ट्रेस, दोनों को एक ही बेंचमार्क रन से आउटपुट किया जा सकता है
    • Android OS और एआरटी के कुछ वर्शन पर, मेथड ट्रेसिंग की सुविधा उपलब्ध नहीं है. इसलिए, इन वर्शन पर मेज़रमेंट के बाद के चरणों पर असर पड़ेगा. इन वर्शन पर, मेथड ट्रेसिंग की सुविधा डिफ़ॉल्ट रूप से बंद होती है. साथ ही, Studio के आउटपुट में एक चेतावनी दिखती है
  • मुख्य थ्रेड के बेंचमार्क और एएनआर
    • कई सेकंड तक चलने पर एएनआर से बचने के लिए, यूज़र इंटरफ़ेस (यूआई) थ्रेड के बेंचमार्क (जैसे, Compose/View यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करने वाले) के लिए measureRepeatedOnMainThread जोड़ा गया.
    • अगर एएनआर से बचने की समयसीमा खत्म होने की आशंका होती है, तो तरीके के ट्रेस छोड़ दिए जाते हैं. इस व्यवहार को बंद करने के लिए, androidx.benchmark.profiling.skipWhenDurationRisksAnr को false पर सेट करें. हालांकि, CI रन के लिए ऐसा करने का सुझाव नहीं दिया जाता है, क्योंकि ANR की वजह से लंबे समय तक चलने वाले CI रन में समस्या आ सकती है.
  • काट-छांट करना
    • Proguard के नियमों को एम्बेड किया गया है, ताकि कोड छोटा करने की सुविधा चालू होने पर माइक्रोबेंचमार्किंग को बेहतर बनाया जा सके
    • किसी लाइब्रेरी मॉड्यूल में कोड छोटा करने/R8 के लिए, AGP 8.3 की ज़रूरत होती है. इसे build.gradle में जाकर android.buildTypes.release.androidTest.enableMinification के ज़रिए चालू किया जा सकता है
    • डेड कोड हटाने से रोकने के लिए, एक्सपेरिमेंटल BlackHole.consume() एपीआई जोड़ा गया (If6812, b/286091643)
  • मेट्रिक
    • सीपीयू इवेंट काउंटर की एक्सपेरिमेंटल सुविधा (perf_event_open से मिलने वाली मेट्रिक. इसके लिए, प्लैटफ़ॉर्म के ज़्यादातर वर्शन पर रूट ऐक्सेस की ज़रूरत होती है), InstrumentationArgument androidx.benchmark.cpuEventCounter.enable के ज़रिए ऐक्सेस किया जा सकता है (इसे true पर सेट किया जा सकता है). साथ ही, androidx.benchmark.cpuEventCounter.events को (Instructions,CpuCycles) पर सेट किया जा सकता है. यह सुविधा, कुछ userdebug एम्युलेटर पर काम करनी चाहिए. हालांकि, इसे सभी उपलब्ध एम्युलेटर पर टेस्ट नहीं किया गया है

1.2.0 के बाद से MACRObenchmark में हुए बदलाव

  • मैक्रोबेंचमार्क के लिए, मेथड ट्रेसिंग की सुविधा को बेहतर बनाया गया है.
    • अब मेथड ट्रेस, measureBlock की अवधि के हिसाब से तय किए जाते हैं. साथ ही, अगर प्रोसेस कई बार शुरू होती है, तो कई सेशन कैप्चर किए जा सकते हैं.
    • इससे पहले, मेथड ट्रेसिंग की सुविधा सिर्फ़ StartupMode.COLD बेंचमार्क के लिए काम करती थी. साथ ही, यह measureBlocks के लिए कोई भी डेटा कैप्चर नहीं करती थी, जिसने टारगेट प्रोसेस को रीस्टार्ट नहीं किया था
    • मैक्रोबेंचमार्क में फ़्लश की गई मेथड ट्रेस को ठीक किया गया है, ताकि मेथड ट्रेस को पूरी तरह से कैप्चर किया जा सके और वे मान्य हों. ऐसा धीमे डिवाइसों पर भी किया जा सकेगा. (I6349a, b/329904950)
  • जब प्रोसेस बंद हो जाती है, तब अलग-अलग warmUp इटरेशन के दौरान ART प्रोफ़ाइल को सही तरीके से डंप किया जाता है, ताकि CompilationMode.Partial(warmup=N) मेज़रमेंट ज़्यादा सटीक हों. (I17923)
  • ड्रॉप शैडर ब्रॉडकास्ट नहीं हो सका
    • शेडर ब्रॉडकास्ट करने में गड़बड़ी होने पर दिखने वाले मैसेज में, डीबग करने से जुड़े सुझाव जोड़े गए
    • ProfileInstaller 1.3 के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय क्रैश की समस्या को ठीक करने के लिए, शेडर ड्रॉपिंग के व्यवहार को बदलने वाले दो इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ें:
      • androidx.benchmark.dropShaders.enable=true/false : इसका इस्तेमाल, सभी शेडर ड्रॉपिंग को स्किप करने के लिए किया जा सकता है. इसमें StartupMode.Cold लॉन्च में की गई शेडर ड्रॉपिंग भी शामिल है. खास तौर पर, उन ऐप्लिकेशन की परफ़ॉर्मेंस की तुलना करते समय जो अब तक profileinstaller 1.3 का इस्तेमाल नहीं करते हैं
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : इसका इस्तेमाल, शेडर को हटाने की कोशिश करते समय होने वाली गड़बड़ियों को ठीक करने के लिए किया जा सकता है. उदाहरण के लिए, जब profileinstaller 1.3 (I4f573) के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच की जाती है
  • एक्सपेरिमेंट के तौर पर MacrobenchmarkRule#measureRepeated वैरिएंट जोड़ा गया है. यह पूरी तरह से पसंद के मुताबिक Perfetto ट्रेस रिकॉर्डिंग के लिए, कस्टम PerfettoConfig लेता है. ध्यान दें कि गलत तरीके से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन की वजह से, हो सकता है कि पहले से मौजूद मीट्रिक क्लास काम न करें. (Idfd3d, b/309841164, b/304038384)
  • मैक्रोबेंचमार्क चलाने से पहले, बैकग्राउंड में चल रही dexopt प्रोसेस को रद्द करें, ताकि रुकावट कम हो. (I989ed)
  • मैक्रोबेंचमार्क अब टारगेट ऐप्लिकेशन के एआरटी प्रोफ़ाइल को फ़्लश करने के लिए एक सेकंड तक इंतज़ार करता है. इससे पहले, यह 500 मि॰से॰ तक इंतज़ार करता था. (I85a50, b/316082056)
  • TraceSectionMetric में बदलाव किया गया है
    • ध्यान दें: नीचे दिए गए TraceSectionMetric बदलावों से, सीआई के इस्तेमाल में आउटपुट पर असर पड़ सकता है. साथ ही, इससे पार्सिंग में रुकावट आ सकती है या पार्सिंग बंद हो सकती है
    • अब सम को डिफ़ॉल्ट रूप से चुना जाता है, क्योंकि इस मेट्रिक का इस्तेमाल ज़्यादातर बार-बार होने वाले इवेंट के लिए किया जाता है. ऐसे मामलों में, पहली बार के हिसाब से डेटा इकट्ठा करने पर डेटा खारिज हो जाएगा
    • इसे ज़्यादा विकल्पों के साथ, अपनी पसंद के मुताबिक बनाने के लिए बदला गया है
    • मोड के नाम अब मेट्रिक के आउटपुट नाम में एम्बेड किए जाते हैं. ये नाम Studio और JSON में दिखते हैं
    • अब Trace.{begin|end}AsyncSection का इस्तेमाल करके बनाए गए स्लाइस काम करते हैं.
  • मेट्रिक
    • पावर - PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge(), और PowerMetric.deviceSupportsPowerEnergy() को जोड़ा गया
    • रिटर्न टाइप से मेल खाने के लिए, Metric.getResult का नाम बदलकर getMeasurements कर दिया गया है
    • स्टार्टअप का पता लगाने में हुई सभी गड़बड़ियों के लिए, log.w / exception लेबल जोड़े गए. इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. इसलिए, कुछ गड़बड़ियां दिखती हैं और अन्य गड़बड़ियों का पता नहीं चलता. इससे सिर्फ़ यह समझने में आसानी होती है कि गड़बड़ी क्यों हुई. आम तौर पर, स्टार्टअप मेट्रिक की रिपोर्ट न करने वाले Log.w() वे होते हैं जिनमें नॉन-फ़्रेम इवेंट मौजूद नहीं होते. स्टार्टअप का पता चलने पर अपवाद थ्रो किए जाते हैं. हालांकि, यूआई/आरटी स्लाइस से फ़्रेम टाइमिंग की जानकारी को छोड़कर. (Id240f, b/329145809)
    • FrameTimingMetric में frameCount मेज़रमेंट जोड़ा गया है. इससे उन स्थितियों का पता लगाने में मदद मिलेगी जहां फ़्रेम की संख्या में बदलाव होने की वजह से मेज़रमेंट में बदलाव होता है. जैसे, नए ऐनिमेशन जोड़े गए हैं या अमान्य होने की समस्याएं ठीक की गई हैं. (I1e5aa)
    • यह साफ़ तौर पर बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर, frameOverrunMs को ट्रैकिंग के लिए पसंदीदा मेट्रिक माना जाता है. साथ ही, यह भी बताया गया है कि ऐसा क्यों है. (I18749, b/329478323)
    • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें ट्रेस की शुरुआत और आखिर में मौजूद फ़्रेम को एक साथ जोड़ा जा सकता था. इससे, एक ही फ़्रेम को बहुत लंबा फ़्रेम बताया जाता था. (I39353, b/322232828)
    • फ़्रेम जनरेट न होने पर, FrameTimingMetric गड़बड़ी को बेहतर बनाया गया है. साथ ही, मेट्रिक पार्स करने में गड़बड़ी होने पर, समस्या का पता लगाने में मदद करने के लिए, हमेशा ट्रेस का लिंक आउटपुट किया जाता है. (I956b9)
    • FrameTimingMetric में क्रैश होने की समस्या को ठीक किया गया है. यह समस्या, फ़्रेम आईडी को पार्स करने के दौरान होती थी. खास तौर पर, यह समस्या कुछ OEM डिवाइसों पर होती थी. (Ia24bc, b/303823815, b/306235276)
    • FrameMetrics में जांच के नियमों को आसान बनाया गया है. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई है. (Iadede)

बेसलाइन प्रोफ़ाइल कैप्चर करने की सुविधा / Gradle प्लगिन में 1.2.0 के बाद हुए बदलाव

  • AGP के सुझाए गए ज़्यादा से ज़्यादा वर्शन को 9.0.0-alpha01 कर दिया गया है.
  • यह पक्का करें कि mergeArtProfile और mergeStartupProfile टास्क, हमेशा बेसलाइन प्रोफ़ाइल जनरेट होने का इंतज़ार करें. (I623d6, b/343086054)
  • बेसलाइन प्रोफ़ाइल जनरेट करने के बाद, आपको बदलावों की खास जानकारी दिखेगी (I824c8, b/269484510)
  • चेतावनी बंद करने के लिए डीएसएल जोड़ा गया (Ic4deb, b/331237001)
  • यह पक्का करने के लिए कि automaticGenerationDuringBuild बंद होने पर, बेंचमार्क जनरेट की गई बेसलाइन प्रोफ़ाइलों का इस्तेमाल करें, इस समस्या को ठीक करें (Ic144f, b/333024280)
  • BaselineProfile gradle प्लगिन की प्रॉपर्टी को ओवरराइड करने की सुविधा से जुड़ी समस्या ठीक की गई है. इससे nonMinified या बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाने पर, बेसलाइन प्रोफ़ाइल जनरेट करने और बेंचमार्किंग की सुविधा चालू की जा सकेगी. (Ib8f05, b/324837887)
  • AGP 8.3.0-alpha15 से पहले के वर्शन में, AAR में लाइब्रेरी की बेसलाइन प्रोफ़ाइलें शामिल करने से जुड़ी समस्या को ठीक किया गया है. (I1d2af, b/313992099)
  • जनरेशन टास्क के आखिर में, तय की गई बेसलाइन और स्टार्टअप प्रोफ़ाइल का आउटपुट यूआरएल. (I802e5, b/313976958)

1.2.0 के बाद हुए अन्य अहम बदलाव

  • ट्रेस कैप्चर करना
    • गड़बड़ी से लॉग की गई चेतावनी तक, Perfetto को शुरू करते समय EXITCODE 2 की गड़बड़ी कम हुई
    • बेंचमार्क में डिफ़ॉल्ट रूप से एआईडीएल ट्रेसिंग चालू करें(इसके लिए एपीआई 28 की ज़रूरत होती है) (Ia0af2, b/341852305)
    • मानदंडों में, डिफ़ॉल्ट रूप से पोर्टर टैग ट्रेसिंग चालू करें. यह वेकलॉक ट्रेसपॉइंट कैप्चर करता है. उदाहरण के लिए, वेकलॉक ट्रेसपॉइंट. (Icfe44, b/286551983)
    • कमज़ोर डिवाइसों पर ट्रेसिंग शुरू करते समय क्रैश से बचने के लिए, ट्रेस कैप्चर शुरू होने का टाइमआउट बढ़ाया गया (I98841, b/329145808)
    • सार्वजनिक एपीआई PerfettoTraceProcessor.Session.queryMetrics एपीआई जोड़े गए. इनमें JSON, textproto, और proto बाइनरी (डिकोड नहीं किया गया) वैरिएंट शामिल हैं. इनकी मदद से, TraceProcessor (I54d7f, b/304038382) में शामिल मेट्रिक के बारे में क्वेरी की जा सकती है
    • ट्रेस की शुरुआत में डेटा के मौजूद न होने के जोखिम को कम करने के लिए, Perfetto ट्रेस रिकॉर्ड पर ब्लॉक करने की सुविधा चालू करें. यह सुविधा सिर्फ़ एपीआई 33 या इसके बाद के वर्शन पर काम करती है. (Ie6e41, b/310760059)
  • JSON आउटपुट
    • JSON आउटपुट में, बेंचमार्क के कॉन्टेक्स्ट में अतिरिक्त जानकारी जोड़ी गई है:
      • context.artMainlineVersion - आर्ट मेनलाइन मॉड्यूल का पूर्णांक वर्शन (अगर डिवाइस पर मौजूद है, तो -1 नहीं तो)
      • context.build.id - Equals android.os.Build.ID
      • context.build.version.codename - Equals android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename - यह प्री-रिलीज़ कोडनेम के पहले अक्षर से मेल खाता है. इसमें रिलीज़ बिल्ड भी शामिल हैं (Ie5020)
    • प्रोफ़ाइलिंग ट्रेस (जैसे, Perfetto, मेथड ट्रेस) के लिए टूलिंग को आसान बनाने के लिए, JSON आउटपुट में profilerOutput सूची जोड़ी गई (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 को ठीक किया गया है. साथ ही, कम प्राथमिकता वाली मेट्रिक को रोकने/फिर से शुरू करने से, ज़्यादा प्राथमिकता वाली मेट्रिक के नतीजों पर पड़ने वाले असर को काफ़ी हद तक कम किया गया है. उदाहरण के लिए, अगर cpuEventCounter.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट के ज़रिए सीपीयू परफ़ॉर्मेंस काउंटर का इस्तेमाल किया जा रहा है, तो pause/resume होने पर timeNs में अब ज़्यादा कमी नहीं आएगी. (I39c2e, b/286306579, b/307445225)
  • स्टैक सैंपलिंग को मुख्य थ्रेड से हटाने पर, स्टैक सैंपलिंग की वजह से मुख्य थ्रेड के हार्ड टाइमआउट होने की संभावना कम हो जाती है.measureRepeatedOnMainThread (I487a8, b/342237318)
  • नए प्लैटफ़ॉर्म एपीआई को ऐक्सेस करने के लिए, मैन्युअल तरीके से आउटलाइन बनाने की सुविधा हटा दी गई है. ऐसा इसलिए, क्योंकि AGP 7.3 या इसके बाद के वर्शन (जैसे, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग के ज़रिए यह काम अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (जैसे, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह काम अपने-आप हो जाता है. AGP का इस्तेमाल न करने वाले क्लाइंट को, D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (I9496c, b/345472586)
  • पैकेज का नाम इंस्ट्रूमेंटेशन आर्ग्युमेंट के तौर पर भेजने के लिए, agp वर्शन की जांच करने की सुविधा जोड़ी गई. AGP 8.4.0 से पहले, टारगेट ऐप्लिकेशन के पैकेज का नाम, इंस्ट्रुमेंटेशन ऐप्लिकेशन को इंस्ट्रुमेंटेशन आर्ग्युमेंट के ज़रिए नहीं भेजा जा सकता. (0c72a3f)

वर्शन 1.3.0-beta02

10 जुलाई, 2024

androidx.benchmark:benchmark-*:1.3.0-beta02 रिलीज़ हो गया है. वर्शन 1.3.0-beta02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • चेतावनी को लॉग करने के लिए, Perfetto शुरू करते समय EXITCODE 2 को ठीक से हैंडल करें. हालांकि, आगे बढ़ें.

वर्शन 1.3.0-beta01

12 जून, 2024

androidx.benchmark:benchmark-*:1.3.0-beta01 रिलीज़ हो गया है. वर्शन 1.3.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • एक जैसा नाम रखने के लिए, MethodTracing.affectsMeasurementOnThisDevice का नाम बदलकर AFFECTS_MEASUREMENT_ON_THIS_DEVICE कर दिया गया है. (I1bdfa)
  • हमने एक्सपेरिमेंट के तौर पर BlackHole.consume() एपीआई जोड़ा है. इससे माइक्रोबेंचमार्क में डेड कोड को हटाने से रोका जा सकेगा. (If6812, b/286091643)
  • अब माइक्रोबेंचमार्क, सही तरीके से थ्रो करेगा, ताकि मेथड ट्रेसिंग, मेज़रमेंट में रुकावट न डाले. ऐसा कुछ डिवाइसों पर तब होता है, जब इंस्ट्रुमेंटेशन आर्ग्युमेंट या MicrobenchmarkConfig के ज़रिए, मेथड ट्रेसिंग को चालू किया जाता है. साथ ही, अगर मेथड ट्रेस के बाद मेज़रमेंट किया जाता है, तो भी ऐसा होता है. जिन डिवाइसों पर इस गड़बड़ी का असर पड़ा है उनमें API 26 से 30 या एआरटी के कुछ ऐसे मेनलाइन मॉड्यूल वर्शन चल रहे हैं जिन पर इस गड़बड़ी का असर पड़ा है. इन डिवाइसों का पता रनटाइम के दौरान ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice की मदद से लगाया जा सकता है. (Iafb92, b/303660864)

गड़बड़ियां ठीक की गईं

  • AGP के ज़्यादा से ज़्यादा वर्शन को 9.0.0-alpha01 पर ले जाने का सुझाव दिया गया है. (I5bbb0)
  • बेंचमार्क कॉन्टेक्स्ट में कंपाइलेशन मोड जोड़ा गया (If5612, b/325512900)
  • डिफ़ॉल्ट रूप से एआईडीएल ट्रेसिंग चालू करें (इसके लिए एपीआई 28 की ज़रूरत होती है) (Ia0af2, b/341852305)
  • JSON आउटपुट में, बेंचमार्क के कॉन्टेक्स्ट में अतिरिक्त जानकारी जोड़ी गई है:
    • context.artMainlineVersion - आर्ट मेनलाइन मॉड्यूल का पूर्णांक वर्शन (अगर डिवाइस पर मौजूद है, तो -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)
  • मैक्रो->कॉमन डिपेंडेंसी को api() में बदलें, ताकि इसे आसानी से इस्तेमाल किया जा सके. उदाहरण के लिए, PerfettoTrace और PerfettoConfig. (Icdae3, b/341851833)
  • यह पक्का करें कि mergeArtProfile और mergeStartupProfile टास्क, हमेशा बेसलाइन प्रोफ़ाइल जनरेट होने का इंतज़ार करें. (I623d6, b/343086054)
  • यह तय करते समय कि वैरिएंट को चालू करना है या नहीं, वैरिएंट की चालू स्थिति को ध्यान में रखें. (I5d19e, b/343249144)
  • परफ़ेक्टो ट्रेस प्रोसेसर के लिए, डिफ़ॉल्ट रूप से शुरू होने का टाइम आउट बढ़ाया गया. (I87e8c, b/329145808)

वर्शन 1.3.0-alpha05

14 मई, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha05 रिलीज़ हो गया है. वर्शन 1.3.0-alpha05 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • जब मैक्रोबेंच मेट्रिक, सभी इटरेशन के लिए शून्य वैल्यू दिखाती है, तब ज़्यादा साफ़ तौर पर अपवाद दिखाएं (Iab58f, b/314931695)
  • माइक्रोबेंच की ProGuard फ़ाइलों में, गड़बड़ी ठीक करने के लिए अतिरिक्त नियम जोड़े गए हैं. इनमें लिसनर के नियमों और अन्य देखी गई चेतावनियों / गड़बड़ियों के लिए सहायता शामिल है. (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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • एक्सपेरिमेंट के तौर पर MacrobenchmarkRule#measureRepeated वैरिएंट जोड़ा गया है. यह पूरी तरह से पसंद के मुताबिक Perfetto ट्रेस रिकॉर्डिंग के लिए, कस्टम PerfettoConfig का इस्तेमाल करता है. ध्यान दें कि गलत तरीके से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन की वजह से, हो सकता है कि पहले से मौजूद मीट्रिक क्लास काम न करें. (Idfd3d, b/309841164, b/304038384)
  • PowerMetric.deviceSupportsPowerEnergy का नाम बदलकर PowerMetric.deviceSupportsHighPrecisionTracking कर दिया गया, ताकि यह साफ़ तौर पर समझ में आ सके (I5b82f)
  • डिवाइस की बैटरी की खपत को मेज़र करने की क्षमता के आधार पर, बेंचमार्क को बदलने या स्किप करने की सुविधा चालू करने के लिए, PowerMetric.deviceBatteryHasMinimumCharge() और PowerMetric.deviceSupportsPowerEnergy() को जोड़ा गया. (I6a591, b/322121218)

गड़बड़ियां ठीक की गईं

  • पिछली बेसलाइन प्रोफ़ाइल (I824c8, b/269484510) के साथ तुलना करने की सुविधा जोड़ी गई
  • चेतावनी बंद करने के लिए डीएसएल जोड़ा गया (Ic4deb, b/331237001)
  • बेंचमार्क वैरिएंट बंद होने पर, अपवाद को सूचना लॉग में बदल दिया गया है (I8a517, b/332772491)
  • मैक्रोबेंचमार्क के लिए, मेथड ट्रेस को कैप्चर करना आसान बनाया गया है. यह measureBlock() की अवधि के हिसाब से तय होता है. पहले, यह सुविधा टारगेट प्रोसेस लॉन्च होने पर शुरू होती थी. साथ ही, यह सिर्फ़ कोल्ड स्टार्ट (Iee85a, b/300651094) के साथ काम करती थी
  • परफ़ेक्टो ट्रेस प्रोसेसर के धीरे-धीरे शुरू होने पर क्रैश होने की समस्या ठीक की गई (I98841, b/329145808)

वर्शन 1.3.0-alpha03

17 अप्रैल, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 रिलीज़ हो गया है. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • इसमें JSON, textproto, और proto बाइनरी (डिकोड नहीं किया गया) वैरिएंट वाले सार्वजनिक एपीआई PerfettoTraceProcessor.Session.queryMetrics एपीआई जोड़े गए हैं. इनसे, TraceProcessor में पहले से मौजूद मेट्रिक (I54d7f, b/304038382) को क्वेरी किया जा सकता है
  • प्रोफ़ाइलिंग ट्रेस (जैसे, perfetto, मेथड ट्रेस) को आसानी से टूल करने के लिए, JSON आउटपुट में profilerOutput जोड़ा गया. (I05ddd, b/332604449)
  • Perfetto कॉन्फ़िगरेशन की परफ़ॉर्मेंस की तुलना करने के लिए, पावर टैग जोड़ा गया. यह वेकलॉक ट्रेसपॉइंट कैप्चर करता है. उदाहरण के लिए, वेकलॉक ट्रेसपॉइंट. (Icfe44, b/286551983)
  • inst आर्ग्युमेंट androidx.benchmark.profiling.skipWhenDurationRisksAnr जोड़ा गया है. इसे फ़ॉल्स पर सेट किया जा सकता है, ताकि अनुमानित अवधि की वजह से एएनआर होने पर, तरीके के ट्रेस को स्किप न किया जा सके. सीआई रन में इसे स्किप न करने का सुझाव दिया जाता है.
  • एक्सपेरिमेंट के लिए inst आर्ग्युमेंट androidx.benchmark.profiling.perfCompare.enable जोड़ा गया है. मेज़रमेंट और प्रोफ़ाइलिंग फ़ेज़ के बीच तुलना करने के लिए, इसे सही पर सेट करें. यह उदाहरण के लिए, मेथड ट्रेसिंग के ओवरहेड का आकलन करने में मददगार है. (I61fb4, b/329146942)

एपीआई में हुए बदलाव

  • TraceSectionMetric.Mode को सील की गई क्लास में बदल दिया गया है, ताकि आने वाले समय में इसे बढ़ाया जा सके. साथ ही, when स्टेटमेंट (I71f7b) को पूरी तरह से लागू किया जा सके
  • TraceSectionMetric.Mode.Average और .Count को जोड़ा गया. साथ ही, आर्ग्युमेंट को फिर से क्रम में लगाया गया, ताकि ज़्यादा इस्तेमाल होने वाला आर्ग्युमेंट (मोड) आर्ग्युमेंट की सूची में पहले हो. इससे पैरामीटर के नाम तय करने की ज़रूरत कम हो गई. (Ibf0b0, b/315830077, b/322167531)
  • Metric.getResult का नाम बदलकर getMeasurements कर दिया गया, ताकि यह रिटर्न टाइप (I42595) से मैच हो सके

गड़बड़ियां ठीक की गईं

  • यह पक्का करने के लिए कि automaticGenerationDuringBuild बंद होने पर, बेंचमार्क जनरेट की गई बेसलाइन प्रोफ़ाइलों का इस्तेमाल करें, इस समस्या को ठीक करें (Ic144f, b/333024280)
  • BaselineProfile gradle प्लगिन की प्रॉपर्टी को ओवरराइड करने की सुविधा से जुड़ी समस्या ठीक की गई है. इससे nonMinified या बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाने पर, बेसलाइन प्रोफ़ाइल जनरेट करने और बेंचमार्किंग की सुविधा चालू की जा सकेगी. (Ib8f05, b/324837887)
  • मैक्रोबेंचमार्क में फ़्लश की गई मेथड ट्रेस को ठीक किया गया है, ताकि मेथड ट्रेस को पूरी तरह से कैप्चर किया जा सके और वे मान्य हों. ऐसा धीमे डिवाइसों पर भी किया जा सकेगा. (I6349a, b/329904950)
  • ट्रेस की शुरुआत में डेटा के मौजूद न होने के जोखिम को कम करने के लिए, Perfetto ट्रेस रिकॉर्ड पर ब्लॉक करने की सुविधा चालू करें. यह सुविधा सिर्फ़ एपीआई 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 प्रोसेस को रद्द करें, ताकि रुकावट कम हो. (I989ed)
  • FrameTimingMetric में frameCount मेज़रमेंट जोड़ा गया है. इससे उन स्थितियों का पता लगाने में मदद मिलेगी जहां फ़्रेम की संख्या में बदलाव होने की वजह से मेज़रमेंट में बदलाव होता है. जैसे, नए ऐनिमेशन जोड़े गए हैं या अमान्य होने की समस्याएं ठीक की गई हैं. (I1e5aa)
  • यह साफ़ तौर पर बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर, frameOverrunMs को ट्रैकिंग के लिए पसंदीदा मेट्रिक माना जाता है. साथ ही, यह भी बताया गया है कि ऐसा क्यों है. (I18749, b/329478323)

वर्शन 1.3.0-alpha02

20 मार्च, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • एम्बेड किए गए ProGuard नियमों के ज़रिए, माइक्रोबेंच में एक्सपेरिमेंट के तौर पर R8 की सुविधा उपलब्ध है. ध्यान दें कि यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. साथ ही, लाइब्रेरी मॉड्यूल के टेस्ट को छोटा करने के लिए, AGP 8.3 की ज़रूरत होती है. अपने बेंचमार्क मॉड्यूल के build.gradle में R8 को छोटा करने/ऑप्टिमाइज़ करने की सुविधा चालू करने के लिए, इसका इस्तेमाल करें. इससे वर्कलोड के हिसाब से, परफ़ॉर्मेंस में काफ़ी बढ़ोतरी होनी चाहिए. (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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • MicrobenchmarkConfig बूलियन पैरामीटर के नाम बदले गए, ताकि 'should' शब्द का इस्तेमाल न किया जाए (Ia8f00, b/303387299)
  • BenchmarkRule.measureRepeatedOnMainThread जोड़ा गया है, ताकि मुख्य थ्रेड के बेंचमार्क (जैसे कि व्यू या कंपोज़ यूज़र इंटरफ़ेस (यूआई) को छूने वाले) एएनआर को ट्रिगर करने से बच सकें. ऐसा खास तौर पर सीआई में बड़ी सुइट के दौरान किया जा सकता है. (I5c86d)
  • FrameTimingGfxInfoMetric को जोड़ा गया है. यह FrameTimingMetric का एक एक्सपेरिमेंटल विकल्प है. इसमें मेज़रमेंट, Perfetto ट्रेस से निकालने के बजाय सीधे प्लैटफ़ॉर्म से मिलते हैं. (I457cb, b/322232828)
  • अलग-अलग warmUp इटरेशन के दौरान, एआरटी प्रोफ़ाइल को डंप करने की सुविधा जोड़ी गई. (I17923)
  • TraceSectionMetric एपीआई में कई बदलाव किए गए हैं:
    • Mode.Min जोड़ें Mode.Max
    • सेक्शन के नाम को मेट्रिक लेबल के तौर पर बदलने के लिए, लेबल आर्ग्युमेंट जोड़ें
    • मेट्रिक का मतलब बेहतर तरीके से समझाने के लिए, आउटपुट में मोड का नाम जोड़ा गया
    • डिफ़ॉल्ट वैल्यू को बदलकर सम कर दिया गया है, क्योंकि इस मेट्रिक का इस्तेमाल ज़्यादातर बार-बार होने वाले इवेंट के लिए किया जाता है सीआई के इस्तेमाल में होने वाले इस बदलाव के बारे में जानें, क्योंकि इससे रुकावटें आ सकती हैं या पार्सिंग में गड़बड़ी हो सकती है. (Ic1e82, b/301892382, b/301955938)

गड़बड़ियां ठीक की गईं

  • मैनेज किए जा रहे डिवाइस के मौजूद न होने पर, बेसलाइन प्रोफ़ाइल Gradle प्लगिन में गड़बड़ी के मैसेज को बेहतर बनाया गया (Idea2b, b/313803289)
  • AGP 8.3.0-alpha15 (I1d2af, b/313992099) से पहले के वर्शन में, एएआर में लाइब्रेरी की बेसलाइन प्रोफ़ाइलें शामिल करने से जुड़ी समस्या ठीक की गई
  • जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल के आउटपुट यूआरएल को ठीक किया गया (I802e5, b/313976958)
  • डेटा सोर्स के टाइमआउट को अडजस्ट किया गया है, ताकि java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788) को ठीक किया जा सके
  • ProfileInstaller 1.3 के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय क्रैश होने की समस्या को ठीक करने के लिए, शेडर ड्रॉपिंग के व्यवहार को बदलने वाले दो इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ें:
    • androidx.benchmark.dropShaders.enable=true/false : इसका इस्तेमाल, सभी शेडर ड्रॉपिंग को स्किप करने के लिए किया जा सकता है. इसमें StartupMode.Cold लॉन्च में की गई शेडर ड्रॉपिंग भी शामिल है. खास तौर पर, उन ऐप्लिकेशन की परफ़ॉर्मेंस की तुलना करते समय जो अब तक profileinstaller 1.3 का इस्तेमाल नहीं करते हैं
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : इसका इस्तेमाल, शेडर को हटाने की कोशिश करते समय होने वाली गड़बड़ियों को ठीक करने के लिए किया जा सकता है. उदाहरण के लिए, जब profileinstaller 1.3 (I4f573) के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच की जाती है
  • जब यूज़र इंटरफ़ेस (यूआई) थ्रेड पर कुछ सेकंड से ज़्यादा समय लगने की उम्मीद हो, तब मेथड ट्रेसिंग को छोड़ें. साथ ही, थ्रो करते समय मेथड ट्रेसिंग को हटाएं. (I6e768)
  • फ़ाइल के नाम 200 वर्णों से ज़्यादा होने पर, इस गड़बड़ी को थ्रो करें. इससे फ़ाइलों को लिखते या पोस्ट-प्रोसेस करते समय, क्रैश होने की समस्या से बचा जा सकता है. (I4a5ab)
  • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें ट्रेस की शुरुआत और आखिर में मौजूद फ़्रेम को एक साथ जोड़ा जा सकता था. इससे, एक ही फ़्रेम को बहुत लंबा फ़्रेम बताया जाता था. (I39353, b/322232828)
  • एपीआई लेवल 30 से 33 पर किसी पैकेज को फिर से इंस्टॉल करते समय, एपीआई लेवल 30 या इससे ऊपर के वर्शन पर --skip verification का इस्तेमाल करें. इससे उपयोगकर्ता के बिल्ड पर एआरटी प्रोफ़ाइलें मिट जाएंगी. इससे Play Protect की उन चेतावनियों को अनदेखा करने में मदद मिलती है जिनकी वजह से, कुछ डिवाइसों पर ऐप्लिकेशन इंस्टॉल नहीं हो पाता. (Ic9e36)
  • सिस्टम यूआई या लॉन्चर जैसे सिस्टम ऐप्लिकेशन न होने पर, ऐप्लिकेशन बंद करने के लिए am force-stop का इस्तेमाल करें. (I5e028)
  • मैक्रोबेंचमार्क अब टारगेट ऐप्लिकेशन के लिए, एआरटी प्रोफ़ाइल को फ़्लश करने के लिए 1 second तक इंतज़ार करता है. इससे पहले, यह 500 ms तक इंतज़ार करता था. (I85a50, b/316082056)
  • फ़्रेम जनरेट न होने पर, FrameTimingMetric गड़बड़ी को बेहतर बनाया गया है. साथ ही, मेट्रिक पार्स करने में गड़बड़ी होने पर, समस्या का पता लगाने में मदद करने के लिए, हमेशा ट्रेस का लिंक आउटपुट किया जाता है. (I956b9)
  • FrameTimingMetric में क्रैश होने की समस्या को ठीक किया गया है. यह समस्या, फ़्रेम आईडी को पार्स करने के दौरान होती थी. खास तौर पर, यह समस्या कुछ OEM डिवाइसों पर होती थी. (Ia24bc, b/303823815, b/306235276)
  • FrameMetrics में जांच के नियमों को आसान बनाया गया है. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई है. (Iadede)

वर्शन 1.2

वर्शन 1.2.4

17 अप्रैल, 2024

androidx.benchmark:benchmark-*:1.2.4 रिलीज़ हो गया है. वर्शन 1.2.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • इस अपडेट में, बेंचमार्क वैरिएंट में बेसलाइन प्रोफ़ाइल srcset सेट अप न होने की समस्या को ठीक किया गया है. यह लाइब्रेरी में मौजूद automaticGenerationDuringBuild को भी ठीक करता है. इससे सर्कुलर डिपेंडेंसी की समस्या होती है. (I28ab7, b/333024280)
  • सिस्टम यूआई या लॉन्चर जैसे सिस्टम ऐप्लिकेशन न होने पर, ऐप्लिकेशन बंद करने के लिए am force-stop का इस्तेमाल करें. इस अपडेट से, "Package $package must not be running prior to cold start!" की वजह से StartupMode.COLD बेंचमार्क क्रैश होने की समस्या ठीक हो जाती है. ऐसा इसलिए होता है, क्योंकि प्रोसेस पूरी तरह से बंद नहीं होती है. (I5e028)

वर्शन 1.2.3

24 जनवरी, 2024

androidx.benchmark:benchmark-*:1.2.3 रिलीज़ हो गया है. वर्शन 1.2.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • AGP का वर्शन 8.3.0 या इसके बाद का वर्शन होने पर, बेसलाइन प्रोफ़ाइल Gradle प्लगिन से अपवाद हटाया गया.
  • AGP 8.3.0-alpha15 से पहले के वर्शन में, AAR में लाइब्रेरी की बेसलाइन प्रोफ़ाइलें शामिल करने से जुड़ी समस्या को ठीक किया गया है.

वर्शन 1.2.2

1 दिसंबर, 2023

androidx.benchmark:benchmark-*:1.2.2 रिलीज़ हो गया है. वर्शन 1.2.2 में ये बदलाव शामिल हैं.

बेसलाइन प्रोफ़ाइलें

  • एक्ज़ीक्यूशन लॉग में, बेसलाइन प्रोफ़ाइल के आउटपुट फ़ाइल पाथ को लोकल फ़ाइल यूआरआई (aosp/2843918, aosp/2853665, b/313976958) के तौर पर दिखाया जाएगा

वर्शन 1.2.1

15 नवंबर, 2023

androidx.benchmark:benchmark-*:1.2.1 रिलीज़ हो गया है. वर्शन 1.2.1 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • जब उपयोगकर्ता, टेस्ट वैरिएंट बंद करता है, तब गड़बड़ी का मैसेज बेहतर तरीके से दिखाया जाता है (b/307478189)
  • एएस टेस्ट रन इंटिग्रेशन (b/309805233), (b/309116324) के साथ काम करने वाली प्रॉपर्टी जोड़ी गईं

वर्शन 1.2.0

18 अक्टूबर, 2023

androidx.benchmark:benchmark-*:1.2.0 रिलीज़ हो गया है. वर्शन 1.2.0 में ये बदलाव शामिल हैं.

1.1.0 के बाद हुए अहम बदलाव

बेसलाइन प्रोफ़ाइलें

  • नया बेसलाइन प्रोफ़ाइल Gradle प्लगिन, आपके टेस्ट और बिल्ड वर्कफ़्लो में बेसलाइन प्रोफ़ाइलें कैप्चर करने और उन्हें शामिल करने की प्रोसेस को अपने-आप पूरा करता है.
  • BaselineProfileRule.collect अब स्टेबल हो गया है. यह पिछले एक्सपेरिमेंटल BaselineProfileRule.collectBaselineProfile एपीआई का बेहतर और आसान वर्शन है
    • सिर्फ़ packageName तय करें और अपने ऐप्लिकेशन को आगे बढ़ाएं
  • बेसलाइन प्रोफ़ाइल जनरेट करने वाली लाइब्रेरी के लिए, अब जनरेट किए गए नियमों को फ़िल्टर किया जा सकता है. इसके लिए, कोड (BaselineProfileRule.collect आर्ग्युमेंट) का इस्तेमाल किया जा सकता है. इसके अलावा, Gradle प्लगिन में भी इसे आसानी से फ़िल्टर किया जा सकता है
  • ऐसी गड़बड़ियां जो ठीक की जा सकती हैं
    • Android U+ पर, बेसलाइन प्रोफ़ाइल कलेक्शन की समस्या ठीक की गई (Id1392, b/277645214)

Macrobenchmark

  • कंपाइलेशन
    • Macrobenchmark अब हर कंपाइल के लिए, कंपाइलेशन की स्थिति को पूरी तरह से रीसेट करता है. इसके लिए, Android 14 से पहले APK को फिर से इंस्टॉल करना ज़रूरी है. इसलिए, अगर आपको मेज़र की जा रही चीज़ में स्थिति (जैसे कि उपयोगकर्ता का लॉगिन) बनाए रखनी है, तो Android 14 या इसके बाद के वर्शन पर बेंचमार्किंग करने का सुझाव दिया जाता है.
    • ऐप्लिकेशन कंपाइल करने की प्रोसेस को अलग से कंट्रोल करके भी इस समस्या को हल किया जा सकता है. इसके लिए, CompilationMode.Ignore() या इंस्ट्रुमेंटेशन आर्ग्युमेंट का इस्तेमाल करके कंपाइल करने की प्रोसेस को स्किप करें
  • इंस्ट्रूमेंटेशन आर्ग्युमेंट

    • androidx.benchmark.dryRunMode.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट के लिए सहायता. यह माइक्रोबेंचमार्क में पहले से उपलब्ध है. इससे पुष्टि करने की प्रोसेस को तेज़ी से पूरा किया जा सकता है. जैसे, बेंचमार्क बनाते समय या प्रीसबमिट में
    • androidx.benchmark.profiling.mode=StackSampling और MethodTracing के लिए सहायता.
    • रनटाइम फ़िल्टरिंग की अनुमति देने के लिए androidx.benchmark.enabledRules जोड़ा गया है, ताकि बेसलाइन प्रोफ़ाइल की तुलना में मैक्रोबेंचमार्क के नियमों की जांच की जा सके
    • tracing-perfetto की मदद से ट्रेसिंग की सुविधा चालू करने के लिए, androidx.benchmark.perfettoSdkTracing.enable आर्ग्युमेंट जोड़ा गया है. उदाहरण के लिए, कंपोज़ रीकंपोज़िशन ट्रेसिंग. ध्यान दें कि StartupMode.COLD के साथ इस्तेमाल करने पर, टाइमिंग पर काफ़ी असर पड़ेगा. ऐसा इसलिए, क्योंकि ऐप्लिकेशन के स्टार्टअप के दौरान ट्रेसिंग लाइब्रेरी लोड और चालू होती है.
  • ज़रूरी शर्तें

    • प्रोफ़ाइल कैप्चर / रीसेट करने और शेडर कैश मेमोरी मिटाने की सुविधा चालू करने के लिए, अब टारगेट ऐप्लिकेशन में ProfileInstaller 1.3.0 या इसके बाद का वर्शन होना ज़रूरी है.
  • नए एक्सपेरिमेंटल मीट्रिक एपीआई

    • एक्सपेरिमेंट के तौर पर TraceSectionMetric जोड़ा गया है. इससे आपके ऐप्लिकेशन में मौजूद trace("") {} ब्लॉक से, टाइमिंग की सामान्य जानकारी निकाली जा सकती है. इसके अलावा, Perfetto TraceProcessor की पूरी क्वेरी क्षमता का फ़ायदा उठाने के लिए, TraceMetric का इस्तेमाल किया जा सकता है.
    • पावर के इस्तेमाल की जानकारी कैप्चर करने के लिए, एक्सपेरिमेंटल PowerMetric जोड़ा गया
    • पेज में गड़बड़ियों की संख्या गिनने के लिए, एक्सपेरिमेंट के तौर पर MemoryCountersMetric जोड़ा गया
    • एक्सपेरिमेंट के लिए PerfettoTraceProcessor एपीआई जोड़ा गया है. इसका इस्तेमाल, सिस्टम ट्रेस (जिसे Perfetto ट्रेस भी कहा जाता है) से मेट्रिक निकालने के लिए किया जाता है
  • समाधान

    • हमने एक ऐसी समस्या को ठीक किया है जिसमें एक से ज़्यादा APK से इंस्टॉल किए गए ऐप्लिकेशन (जैसे, ऐप्लिकेशन बंडल से) से प्रोफ़ाइलें इंस्टॉल या एक्सट्रैक्ट करते समय, ऐप्लिकेशन क्रैश हो जाते थे.
    • एपीआई 31 और इसके बाद के वर्शन पर, फ़्रेम आईडी में अंतर होने पर फ़्रेम को अनदेखा करने की समस्या ठीक की गई है (आम तौर पर, यह समस्या रिपल के दौरान होती है) (I747d2, b/279088460)FrameTimingMetric
    • 64 एमबी से ज़्यादा के ट्रेस पर पार्सिंग से जुड़ी गड़बड़ियों को ठीक किया गया (Ief831, b/269949822)
    • डिवाइस (खास तौर पर एम्युलेटर) के ओएस इमेज को ट्रेसिंग या कंपाइलेशन के लिए सही तरीके से कॉन्फ़िगर न किए जाने पर होने वाली गड़बड़ियों के बारे में ज़्यादा जानकारी दी गई है
    • बैटरी के बिना काम करने वाले डिवाइसों (माइक्रो और मैक्रो) के लिए, बैटरी लेवल की जाँच करने की सुविधा बंद करें
    • फ़ाइल आउटपुट को बेहतर बनाया गया है. साथ ही, अमान्य आउटपुट डायरेक्ट्री के लिए ज़्यादा साफ़ तौर पर गड़बड़ियों की जानकारी दी गई है. इसके अलावा, डिफ़ॉल्ट सेटिंग को ज़्यादा सुरक्षित बनाया गया है
    • शेडर कैश को लगातार हटाने से, StartupMode.COLD की स्थिरता बेहतर हुई (इसे MacrobenchmarkScope.dropShaderCache के ज़रिए भी दिखाया गया है)
    • startActivityAndWait के लिए, लीनबैक फ़ॉलबैक की समस्या ठीक की गई.

माइक्रोबेंचमार्क

  • सुविधाएं
    • प्रोफ़ाइलिंग को अन्य मेट्रिक के बाद, एक अलग फ़ेज़ में ले जाया गया है. इससे एक टेस्ट रन में, सटीक टाइमिंग और प्रोफ़ाइलिंग के नतीजे, दोनों दिखाए जा सकते हैं.
  • एक्सपेरिमेंट के लिए एपीआई
    • कस्टम मेट्रिक तय करने के लिए, एक्सपेरिमेंट के तौर पर MicrobenchmarkConfig एपीआई जोड़ा गया है. साथ ही, ट्रेसिंग और प्रोफ़ाइलिंग को कॉन्फ़िगर करने की सुविधा भी जोड़ी गई है. इसका इस्तेमाल, तरीके के ट्रेस कैप्चर करने या ट्रेसपॉइंट कैप्चर करने के लिए किया जा सकता है. हालांकि, ट्रेसिंग के ओवरहेड के बारे में पता होना चाहिए.
    • JUnit के बिना, BenchmarkRule से अलग BenchmarkState को कंट्रोल करने के लिए एक्सपेरिमेंटल एपीआई जोड़े गए
    • एक्सपेरिमेंट के तौर पर PerfettoTrace रिकॉर्ड जोड़ा गया है. इससे, कस्टम कॉन्फ़िगरेशन के साथ Perfetto ट्रेस कैप्चर किए जा सकते हैं. यह बेंचमार्क एपीआई से अलग है.
  • ऐसी गड़बड़ियां जो ठीक की जा सकती हैं
    • Android Studio के बेंचमार्क आउटपुट में, लीडिंग व्हाइटस्पेस मौजूद न होने की समस्या को ठीक किया गया है.
    • उस समस्या को ठीक किया गया है जिसकी वजह से, Android Studio के बेंचमार्क आउटपुट में चेतावनियां प्रिंट नहीं हो पाती थीं.
    • Android 13 (एपीआई 33) और इसके बाद के वर्शन पर, SampledProfiling के क्रैश होने की समस्या ठीक की गई.
    • IsolationActivity और Perfetto ट्रेसिंग को स्किप करके, dryRunMode की परफ़ॉर्मेंस को काफ़ी हद तक बेहतर बनाया गया है. पुराने ओएस वर्शन पर, ड्राई रन मोड 10 गुना ज़्यादा तेज़ी से काम करता है.

वर्शन 1.2.0-rc02

6 अक्टूबर, 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 रिलीज़ हो गया है. वर्शन 1.2.0-rc02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • बेंचमार्क फ़ाइल के आउटपुट से जुड़ी समस्या ठीक की गई है. इससे BaselineProfile प्लगिन फ़ाइल कॉपी करने की प्रोसेस में अब कोई रुकावट नहीं आएगी. फ़ाइलें जनरेट की गई थीं और उन्हें डिवाइस से कॉपी किया गया था. हालांकि, उनका नाम इस तरह से बदला गया था कि Gradle प्लगिन उन्हें नहीं देख सका. (I8dbcc, b/303034735, b/296453339)
  • मैक्रोबेंचमार्क मॉड्यूल से टारगेट ऐप्लिकेशन में इंजेक्ट करते समय, tracing-perfetto लोड करने से जुड़ी गड़बड़ी के मैसेज के बारे में ज़्यादा जानकारी दी गई है.

वर्शन 1.2.0-rc01

20 सितंबर, 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 रिलीज़ हो गया है. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अगर किसी बेंचमार्क में Perfetto SDK ट्रेसिंग शुरू नहीं होती है, तो अब एक अपवाद (समस्या ठीक करने के निर्देशों के साथ) दिखता है. (I6c878, b/286228781)
  • ART मेथड ट्रेस -> perfetto फ़ॉर्मैट में बदलते समय, OOM क्रैश की समस्या ठीक की गई. (I106bd, b/296905344)
  • (मैक्रोबेंचमार्क) Studio के टेस्ट आउटपुट में लिंक किए जाने पर, मेथड ट्रेसिंग लेबल के बारे में साफ़ तौर पर बताया गया है. साथ ही, डिवाइस/होस्ट पर मेथड ट्रेसिंग के फ़ाइल नामों को यूनीक बनाया गया है, ताकि एक से ज़्यादा बेंचमार्क चलाने पर उन्हें बदला न जा सके. (I08e65, b/285912360)
  • इस कुकी का इस्तेमाल यह पक्का करने के लिए किया जाता है कि बेसलाइन प्रोफ़ाइल कैप्चर करते समय डिवाइस चालू हो. (I503fc)

वर्शन 1.2.0-beta05

30 अगस्त, 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 रिलीज़ हो गया है. वर्शन 1.2.0-beta05 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • बेसलाइन प्रोफ़ाइल Gradle प्लगिन अब Android Gradle प्लगिन 8.3 के साथ काम करता है. (aosp/2715214)

वर्शन 1.2.0-beta04

23 अगस्त, 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 रिलीज़ हो गया है. वर्शन 1.2.0-beta04 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • बेसलाइन प्रोफ़ाइल Gradle प्लगिन अब Android Gradle प्लगिन 8.3 के साथ काम करता है. (aosp/2715214)

गड़बड़ियां ठीक की गईं

  • आउटपुट फ़ाइल के नामों को और बेहतर तरीके से बदलकर, फ़ाइलों को लिखने / ले जाने और खींचने (खास तौर पर, पैरामीटर वाले टेस्ट से) में होने वाली गड़बड़ियों को ठीक किया गया है. साथ ही, आउटपुट फ़ाइल के नामों में '=' और ':' का इस्तेमाल नहीं किया गया है. (I759d8)

वर्शन 1.2.0-beta03

9 अगस्त, 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 रिलीज़ हो गया है. वर्शन 1.2.0-beta03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • TraceSectionMetric को सिर्फ़ टारगेट पैकेज पर फ़िल्टर करने के लिए, डिफ़ॉल्ट रूप से चालू किया गया आर्ग्युमेंट जोड़ा गया (Ia219b, b/292208786)

गड़बड़ियां ठीक की गईं

  • आर्टफ़ैक्ट के नाम और अन्य रेफ़रंस के साथ एक जैसा नाम रखने के लिए, fullTracing.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट का नाम बदलकर perfettoSdkTracing.enable कर दिया गया है. fullTracing.enable फ़ॉलबैक के तौर पर काम करता रहेगा. (I7cc00)
  • अब बेंचमार्क लाइब्रेरी के इंटरनल ट्रेसपॉइंट (इसमें माइक्रोबेंचमार्क लूप/फ़ेज़ ट्रेसिंग शामिल है) Studio के सिस्टम ट्रेस व्यूअर में दिखेंगे. साथ ही, Perfetto में सही प्रोसेस के तहत नेस्ट किए जाएंगे. (I6b2e7, b/293510459)
  • API 31 और इसके बाद के वर्शन पर, मैक्रोबेंचमार्क की NOT-PROFILEABLE गड़बड़ी को ठीक किया गया. साथ ही, eng/userdebug रूट किए गए डिवाइसों पर, प्रोफ़ाइल किए जा सकने की जांच को स्किप किया गया. (I2abac, b/291722507)
  • Dex Layout Optimizations का इस्तेमाल करते समय, स्टार्टअप प्रोफ़ाइल के नियमों को भी अब बेसलाइन प्रोफ़ाइल के नियमों के तौर पर माना जाता है. (aosp/2684246, b/293889189)

वर्शन 1.2.0-beta02

26 जुलाई, 2023

androidx.benchmark:benchmark-*:1.2.0-beta02 रिलीज़ हो गया है. वर्शन 1.2.0-beta02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • माइक्रोबेंच कस्टम मेट्रिक और कॉन्फ़िगरेशन (जैसे, प्रोफ़ाइलर और ट्रेसिंग) के लिए, एक्सपेरिमेंट के तौर पर एपीआई जोड़े गए. (I86101, b/291820856)

गड़बड़ियां ठीक की गईं

  • ट्रेसिंग के लिए ओएस का कॉन्फ़िगरेशन गलत होने पर, मैक्रोबेंच में गड़बड़ी की रिपोर्ट करें. इस समस्या को हाल ही में API 26/28 ARM64 इम्यूलेटर में ठीक किया गया था. (I0a328, b/282191686)
  • संकलन रीसेट न होने की समस्या के बारे में ज़्यादा जानकारी जोड़ी गई है, ताकि एम्युलेटर को अपडेट करने का सुझाव दिया जा सके. ऐसा इसलिए, क्योंकि हाल ही में कुछ एम्युलेटर में इस समस्या को ठीक किया गया है. (I8c815, b/282191686)
  • androidx.test.uiautomator:uiautomator:2.2.0 को implementation डिपेंडेंसी के बजाय api डिपेंडेंसी के तौर पर सेट करें. (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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • BaselineProfileRule.collectBaselineProfile() API का नाम बदलकर BaselineProfileRule.collect() कर दिया गया है. (I4b665)

गड़बड़ियां ठीक की गईं

  • androidx.benchmark.profiling.mode = MethodTracing के लिए Macrobenchmark की सुविधा. (I7ad37, b/285912360)
  • माइक्रोबेंचमार्क प्रोफ़ाइलिंग को एक अलग फ़ेज़ में ले जाया गया है. इसलिए, यह मेज़रमेंट को बदलने के बजाय, मेज़रमेंट के बाद क्रम से होती है. अगर मौजूद हैं, तो MethodTracing ट्रेस सेक्शन भी अब कैप्चर किए गए Perfetto ट्रेस में शामिल किए जाते हैं. (I9f657, b/285014599)
  • Mode.Sum की मदद से, TraceSectionMetric में गिनती मेज़रमेंट जोड़ें. (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)
  • PerfettoTrace.record (If9d75, b/280460183) की मदद से, पूरी तरह से कस्टम Perfetto कॉन्फ़िगरेशन के लिए सहायता जोड़ी गई
  • बेसलाइन प्रोफ़ाइल जनरेट करने की प्रोसेस को स्किप करने के लिए प्रॉपर्टी जोड़ी गई. इस्तेमाल: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)

एपीआई में हुए बदलाव

  • collectBaselineProfile एपीआई हमेशा स्टेबल बेसलाइन प्रोफ़ाइलें जनरेट करता है. collectStableBaselineProfile एपीआई को हटा दिया गया है. इसके बजाय, collectBaselineProfile का इस्तेमाल किया जाना चाहिए. (I17262, b/281078707)
  • BaselineProfileRule के filterPredicate आर्ग्युमेंट को गैर-शून्य में बदल दिया गया है. साथ ही, डिफ़ॉल्ट वैल्यू को भी बदल दिया गया है, ताकि दस्तावेज़ों में डिफ़ॉल्ट फ़िल्टर के व्यवहार के बारे में ज़्यादा जानकारी दी जा सके. (I3816e)

गड़बड़ियां ठीक की गईं

  • परफ़ॉर्मेंस को बेहतर बनाने के लिए, IsolationActivity में dryRunMode और Perfetto ट्रेसिंग को बंद करें. ऐसा इसलिए, क्योंकि ये रनटाइम के ज़्यादातर हिस्से में मौजूद थे. (Ie4f7d)
  • इंस्ट्रुमेंटेशन टेस्ट के आर्ग्युमेंट androidx.benchmark.profiling.mode=StackSampling और androidx.benchmark.profiling.sampleFrequency का इस्तेमाल करके, Macrobenchmarks में कॉल स्टैक सैंपलिंग की सुविधा जोड़ी गई है. (I1d13b, b/282188489)
  • Android U (API 34) और एम्युलेटर पर शेडर छोड़ने पर क्रैश होने की समस्या ठीक की गई है. (I031ca, b/274314544)

वर्शन 1.2.0-alpha14

3 मई, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha14 रिलीज़ हो गया है. वर्शन 1.2.0-alpha14 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • FrameTimingMetric में, फ़्रेम आईडी के अलग-अलग होने की वजह से फ़्रेम को अनदेखा करने की समस्या ठीक की गई. इस वजह से, प्लैटफ़ॉर्म के हाल ही के वर्शन (API 31+) पर कुछ ऐनिमेशन, कई फ़्रेम को अनदेखा कर देते हैं.ऐसा तब होता है, जब RenderThread ऐनिमेट हो रहा होता है. उदाहरण के लिए, रिपल के दौरान. (I747d2, b/279088460)
  • 64 एमबी से बड़े ट्रेस के लिए, ट्रेस प्रोसेसर पार्सिंग की समस्या ठीक की गई. (Ief831, b/269949822)
  • Android U पर बेसलाइन प्रोफ़ाइल जनरेट करने से जुड़ी समस्या ठीक की गई है. यह समस्या, pm dump-profiles कमांड के अलग-अलग आउटपुट की वजह से आ रही थी. (Id1392, b/277645214)
  • स्ट्रिंग की तुलना सही तरीके से करने के लिए, जीपीयू क्लॉक लॉक करने वाली स्क्रिप्ट को ठीक किया गया (I53e54, b/213935715)

वर्शन 1.2.0-alpha13

5 अप्रैल, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha13 रिलीज़ हो गया है. वर्शन 1.2.0-alpha13 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • आने वाले समय में स्टार्टअप प्रोफ़ाइल की सुविधा के लिए, बेसलाइन प्रोफ़ाइल जनरेट करते समय प्रोफ़ाइल टाइप पैरामीटर जोड़ा गया (Ie20d7, b/275093123)
  • एक्सपेरिमेंट के तौर पर उपलब्ध नया TraceMetric एपीआई जोड़ा गया है. इसकी मदद से, Perfetto ट्रेस के कॉन्टेंट के आधार पर पूरी तरह से कस्टम मेट्रिक तय की जा सकती हैं. (I4ce31, b/219851406)
  • बेंचमार्क के दौरान पेज फ़ॉल्ट की संख्या का पता लगाने के लिए, एक्सपेरिमेंट वाली मेट्रिक जोड़ें. (I48db0)

वर्शन 1.2.0-alpha12

22 मार्च, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha12 रिलीज़ हो गया है. वर्शन 1.2.0-alpha12 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • बेसलाइन प्रोफ़ाइल का नया Gradle प्लगिन, ऐल्फ़ा वर्शन में रिलीज़ किया गया है. इससे बेसलाइन प्रोफ़ाइल जनरेट करना आसान हो जाता है और डेवलपर के वर्कफ़्लो को आसान बनाया जा सकता है.

एपीआई में हुए बदलाव

  • API 21 और 22 पर, Perfetto ट्रेसिंग की सुविधा हटा दी गई है. इसमें माइक्रोबेंचमार्क और एक्सपेरिमेंट के तौर पर उपलब्ध PerfettoTrace एपीआई, दोनों शामिल हैं. इस वर्शन से पहले, कुछ डिवाइसों पर UiAutomation कनेक्शन भरोसेमंद नहीं थे. (I78e8c)
  • PerfettoTraceProcessor के लिए, सार्वजनिक तौर पर उपलब्ध एक्सपेरिमेंटल एपीआई जोड़ा गया है, ताकि ट्रेस कॉन्टेंट को पार्स किया जा सके. यह Perfetto ट्रेस डेटा के आधार पर, पूरी तरह से कस्टम मेट्रिक बनाने की दिशा में एक कदम है. (I2659e, b/219851406)

वर्शन 1.2.0-alpha11

8 मार्च, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha11 रिलीज़ हो गया है. वर्शन 1.2.0-alpha11 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक से ज़्यादा APK वाले ऐप्लिकेशन बंडल से प्रोफ़ाइलें फिर से इंस्टॉल करने या निकालने के दौरान, MacrobenchmarkRule और BaselineProfileRule में क्रैश होने की समस्या ठीक की गई. (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)
  • पुराने एपीआई लेवल पर powerstats की मौजूदगी की जांच करते समय, PowerMetric क्रैश होने की समस्या ठीक की गई. (5faaf9, b/268253898)

वर्शन 1.2.0-alpha09

11 जनवरी, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha09 रिलीज़ हो गया है. वर्शन 1.2.0-alpha09 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • सभी बेंचमार्क / बेसलाइन प्रोफ़ाइल जनरेशन को बंद करने के लिए, androidx.benchmark.enabledRules इंस्ट्रूमेंटेशन आर्ग को None पास करने की सुविधा चालू की गई. (I3d7fd, b/258671856)
  • ऐप्लिकेशन मॉड्यूल (यानी कि अपने-आप इंस्ट्रुमेंट करने वाले टेस्ट APK के अलावा अन्य) में PerfettoTrace कैप्चर करने की समस्या ठीक की गई (I12cfc)
  • Studio के आउटपुट में, adb pull के तर्क के क्रम से जुड़ी समस्या ठीक की गई (I958d1, b/261781624)
  • अब मैक्रोबेंचमार्क चलाने की कोशिश करते समय, Arm emulator api 33 की सही पहचान की जाती है. साथ ही, चेतावनी को सही तरीके से प्रिंट किया जाता है. (69133b,b/262209591)
  • Macrobenchmark में, बैटरी के बिना काम करने वाले डिवाइसों पर बैटरी लेवल की जांच करने की सुविधा बंद की गई (fe4114, b/232448937)

वर्शन 1.2.0-alpha08

7 दिसंबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha08 रिलीज़ हो गया है. वर्शन 1.2.0-alpha08 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • टेस्ट के तौर पर, नए एक्सपेरिमेंटल एपीआई PerfettoTrace.record {} और PerfettoTraceRule जोड़े गए हैं. इनकी मदद से, Perfetto ट्रेस (इन्हें सिस्टम ट्रेस भी कहा जाता है) कैप्चर किए जा सकते हैं. इससे टेस्ट के व्यवहार और परफ़ॉर्मेंस की जांच की जा सकती है. (I3ba16)
  • BaselineProfileRule अब पैकेज के प्रीफ़िक्स की सूची के बजाय, फ़िल्टर प्रेडिकेट स्वीकार करता है. इससे टेस्ट को फ़िल्टर करने का पूरा कंट्रोल मिलता है. (I93240)
  • एक एक्सपेरिमेंटल एपीआई BaselineProfileRule.collectStableBaselineProfile जोड़ें. यह तब तक इंतज़ार करता है, जब तक कि एन इटरेशन के लिए बेसलाइन प्रोफ़ाइल स्थिर न हो जाए. (I923f3)
  • BaselineProfileRule का इस्तेमाल करके बेसलाइन प्रोफ़ाइल जनरेट करते समय, आउटपुट फ़ाइल के नाम के प्रीफ़िक्स को तय करने की सुविधा जोड़ी गई है. (I7b59f, b/260318655)

गड़बड़ियां ठीक की गईं

  • फ़ाइल आउटपुट लिखने की सुरक्षा को बेहतर बनाया गया है. इससे आउटपुट फ़ाइलों को चुपचाप न लिखे जाने / जोड़े जाने से रोका जा सकेगा. ऐसा खास तौर पर API 21/22 पर होगा. (If8c44, b/227510293)
  • फ़ाइल को सही तरीके से बनाने और रखने के लिए, simpleperf ट्रेस आउटपुट को ठीक करें. इससे उन समस्याओं को भी ठीक किया जा सकेगा जिनमें Gradle, फ़ाइल को डाउनलोड नहीं कर पाता है. (I12a1c, b/259424099)
  • profileinstaller बहुत पुराना होने पर, profileinstaller से जुड़ी गड़बड़ी के मैसेज को बेहतर बनाया गया है. अब यह आपको एपीआई 31 से 33 पर बेसलाइन प्रोफ़ाइल मेज़र करने के लिए, profileinstaller के वर्शन (1.2.1) को अपडेट करने के लिए कहता है. इसके बजाय, यह नहीं कहता कि यह सुविधा काम नहीं करती. (Ia517f, b/253519888)
  • शेल कमांड के कई फ़ेल होने की समस्याओं को ठीक किया गया. ये समस्याएं, onerror मैसेज Print needed API <=23 की वजह से हो रही थीं. इनमें, फ़ेल हो चुके perfetto capture binary setup और trace capture failures (Ib6b87, b/258863685) शामिल हैं
  • जनरेट किए गए प्रोफ़ाइल नियमों को अपने-आप क्रम से लगाएं, ताकि समय के साथ उनमें होने वाले बदलावों की संख्या को कम किया जा सके. ऐसा तब होता है, जब प्रोफ़ाइल नियमों को सोर्स कंट्रोल में चेक-इन किया जाता है. (Ie2509)
  • Android 13 (एपीआई 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 में यह कोड जोड़ें. यह कोड, आपके बेंचमार्क के 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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Macrobenchmark में ऊर्जा और पावर को मेज़र करने के लिए, PowerMetric एपीआई जोड़ा गया है. (Ife601, b/220183779)
  • शेडर कैश को हटाने के लिए, MacrobenchmarkScope.dropShaderCache() को ठीक किया गया. इससे StartupMode.COLD बेंचमार्क से करीब 20 मिलीसेकंड का नॉइज़ हट जाता है, क्योंकि अब हर बार के दोहराव में शेडर को लगातार साफ़ किया जाता है. पहले, वार्मअप इटरेशन का इस्तेमाल करके Partial कंपाइल करने पर, गलत तरीके से बहुत कम समय रिपोर्ट किया जाता था. ऐसा इसलिए होता था, क्योंकि वार्मअप के दौरान शेडर कैशिंग होने की संभावना ज़्यादा होती थी. इस समस्या को ठीक करने के लिए, रूट किए गए डिवाइस की ज़रूरत होती है. इसके अलावा, टारगेट ऐप्लिकेशन में profileinstaller:1.3.0-alpha02 का इस्तेमाल किया जा सकता है. ProfileInstaller लाइब्रेरी के एपीआई में हुए बदलावों के बारे में जानने के लिए, कृपया ProfileInstaller 1.30-alpha02 पेज देखें. (Ia5171, b/231455742)
  • TraceSectionMode("label", Mode.Sum) जोड़ा गया है. इससे एक ही लेबल वाले कई ट्रेस सेक्शन पर बिताए गए कुल समय को मेज़र किया जा सकता है. उदाहरण के लिए, TraceSectionMetric("inflate", Mode.Sum), इन्फ़्लेशन पर खर्च किए गए कुल समय के लिए मेट्रिक inflateMs की रिपोर्ट देगा. साथ ही, एपीआई लेवल 29 की ज़रूरी शर्त को भी हटा दिया गया है, क्योंकि TraceSectionMetric, androidx.tracing.Trace के साथ मिलकर काम करता है. इसके लिए, टारगेट ऐप्लिकेशन में forceEnableAppTracing का इस्तेमाल किया जाता है. (Id7b68, b/231455742)

गड़बड़ियां ठीक की गईं

  • सभी आउटपुट/गड़बड़ियों की पुष्टि करके, सभी इंटरनल शेल कमांड की सुरक्षा को बेहतर बनाया गया है. (I5984d, b/255402908, b/253094958)
  • बेसलाइन प्रोफ़ाइल adb pull कमांड में डिवाइस के बारे में जानकारी दें, ताकि एक से ज़्यादा डिवाइस कनेक्ट होने पर पुल कमांड को आसानी से कॉपी किया जा सके. हालांकि, सिर्फ़ एक एम्युलेटर कनेक्ट किया जा सकता है (I6ac6c, b/223359380)
  • अगर मैक्रोबेंचमार्क टेस्ट एपीके को खुद इंस्ट्रुमेंट करने के तौर पर सेट अप नहीं किया गया है, तो गड़बड़ी जोड़ें. इस गड़बड़ी की वजह से, टारगेट ऐप्लिकेशन की प्रोसेस में मैक्रोबेंचमार्किंग नहीं हो पाती. इस प्रोसेस में, मैक्रोबेंच ऐप्लिकेशन को कंपाइल/बंद/कोल्ड स्टार्ट नहीं कर पाएगा. साथ ही, अपनी अनुमतियों को कंट्रोल नहीं कर पाएगा (I4279b)
  • measureRepeated() में एक समस्या ठीक की गई है. इस समस्या की वजह से, StartupMode.COLD setupBlock के बाद टारगेट प्रोसेस को बंद नहीं करता था. अब setupBlock ऐप्लिकेशन के साथ इंटरैक्ट करने से, ऐप्लिकेशन की प्रोसेस चालू नहीं रहेगी. साथ ही, कोल्ड स्टार्ट मेज़रमेंट अमान्य हो जाएगा. (I8ebb7)

वर्शन 1.2.0-alpha06

24 अक्टूबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha06 रिलीज़ हो गया है. वर्शन 1.2.0-alpha06 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • BaselineProfileRule को अब Android 13 (एपीआई 33) पर रूट करने की ज़रूरत नहीं है. साथ ही, यह अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Ie0a7d, b/250083467, b/253094958)
    • इस बदलाव से, बिना रूट किए गए डिवाइसों पर किसी ऐप्लिकेशन की प्रोफ़ाइलों को डिस्क में फ़्लश करने के तरीके को भी ठीक किया जाता है. हालांकि, इसके लिए टारगेट ऐप्लिकेशन की profileinstaller डिपेंडेंसी को अपडेट करना ज़रूरी है.
    • रूट नहीं किए गए डिवाइस पर BaselineProfileRule या CompilationMode.Partial(warmupIterations) का इस्तेमाल करने के लिए, आपको टारगेट ऐप्लिकेशन को भी androidx.profileinstaller.profileinstaller:1.3.0-alpha01 का इस्तेमाल करने के लिए अपडेट करना होगा. इससे प्रोफ़ाइल को डिस्क में सही तरीके से फ़्लश किया जा सकता है, ताकि इसे कंपाइल/एक्सट्रैक्ट किया जा सके.

गड़बड़ियां ठीक की गईं

  • एपीआई 33+ पर SampledProfiling क्रैश होने की समस्या ठीक की गई. (I40743, b/236109374)

वर्शन 1.2.0-alpha05

5 अक्टूबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 रिलीज़ हो गया है. वर्शन 1.2.0-alpha05 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Studio के सिस्टम ट्रेस व्यूअर में, कैप्चर किए गए बेंचमार्क ट्रेस के लिए फ़्रेम ब्रेकडाउन की समस्या ठीक की गई (I3f3ae, b/239677443)
  • FrameTimingMetric को ठीक किया गया है, ताकि FrameOverrun को एपीआई 29 के बजाय 31 की ज़रूरत हो (I716dd, b/220702554)
  • BaselineProfileRule में इटरेशन सेट करें. साथ ही, अगर टारगेट पैकेज इंस्टॉल नहीं है, तो साफ़ तौर पर इसकी जानकारी दें. यह काम MacrobenchmarkRule के लिए पहले ही किया जा चुका है. (Ic09a3, b/227991471)

वर्शन 1.2.0-alpha04

21 सितंबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha04 रिलीज़ हो गया है. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • तेज़ी से लोकल डेवलपमेंट करने और ऐप्लिकेशन के ऑटोमेशन की पुष्टि करने के लिए, मैक्रोबेंचमार्क में dryRunMode.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट के लिए सहायता जोड़ें.यह सुविधा, माइक्रोबेंचमार्क में पहले से उपलब्ध है. उदाहरण के लिए, प्रीसबमिट में. इससे, इटरेशन की संख्या 1 पर सेट हो जाती है. साथ ही, कंपाइलेशन को स्किप कर दिया जाता है, सभी कॉन्फ़िगरेशन से जुड़ी गड़बड़ियों को छिपा दिया जाता है, और मेज़रमेंट .json फ़ाइल के आउटपुट को बंद कर दिया जाता है. (Ib51b4, b/175149857)

    Gradle कमांड लाइन पर:

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

    build.gradle में:

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

गड़बड़ियां ठीक की गईं

  • StartupTimingMetric को ठीक किया गया है. अब मेज़र की गई गतिविधियों को MacrobenchmarkScope.startActivityAndWait() के ज़रिए लॉन्च करने की ज़रूरत नहीं होगी. इसका मतलब है कि मेट्रिक, लॉन्च को पिक अप कर सकती है. जैसे, सूचनाएं, Context.startActivity(), इन-ऐप्लिकेशन गतिविधि पर आधारित नेविगेशन या शेल कमांड. (Ia2de6, b/245414235)
  • उस बग को ठीक किया गया है जिसमें फ़्रेम का पता लगाने की प्रोसेस को कम करके, एम्युलेटर पर लॉन्च पूरा होने का इंतज़ार करने के दौरान startActivityAndWait का टाइम आउट हो जाता था. (Ibe2c6, b/244594339, b/228946895)

वर्शन 1.2.0-alpha03

7 सितंबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 रिलीज़ हो गया है. वर्शन 1.2.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • BenchmarkRule / JUnit4 से अलग, BenchmarkState का इस्तेमाल करने के लिए एक्सपेरिमेंटल एपीआई जोड़े गए हैं. (Id478f, b/228489614)

गड़बड़ियां ठीक की गईं

  • startActivityAndWait के लिए, Leanback फ़ॉलबैक जोड़ा गया. (01ed77, b/242899915)

वर्शन 1.2.0-alpha02

24 अगस्त, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha02 रिलीज़ हो गया है. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • रूट किए गए डिवाइसों पर भी, MacrobenchmarkScope.killProcess() के लिए am force stop डिफ़ॉल्ट रूप से चालू होता है. हालांकि, बेसलाइन प्रोफ़ाइल जनरेट करने के दौरान ऐसा नहीं होता. बूलियन आर्ग्युमेंट का इस्तेमाल करके, इस सेटिंग को बदला जा सकता है. (02cce9, b/241214097)

गड़बड़ियां ठीक की गईं

  • सिस्टम ऐप्लिकेशन के लिए, बेसलाइन प्रोफ़ाइल जनरेट करने की सुविधा. (I900b8, b/241214097)
  • अनरूट किए गए डिवाइसों पर, ओडीपीएम की पावर मेट्रिक की जांच करने की सुविधा. (a38c78, b/229623230)

वर्शन 1.2.0-alpha01

27 जुलाई, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 रिलीज़ हो गया है. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नया tracing-perfetto-common कॉम्पोनेंट. इससे टूलिंग को ऐसे ऐप्लिकेशन में Perfetto SDK ट्रेसिंग चालू करने की अनुमति मिलती है जो इसे दिखाता है (I2cc7f)
  • androidx.benchmark.enabledRules इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया है. इससे, सिर्फ़ बेंचमार्क या सिर्फ़ बेसलाइन प्रोफ़ाइल जनरेट करने के लिए, मैक्रोबेंचमार्क रन को फ़िल्टर किया जा सकता है. सिर्फ़ एक तरह का टेस्ट चलाने के लिए, 'Macrobenchmark' या 'BaselineProfile' पास करें. उदाहरण के लिए, जब सिर्फ़ एम्युलेटर पर BaselineProfiles जनरेट करना हो. कॉमा लगाकर अलग की गई सूची भी इस्तेमाल की जा सकती है. (I756b7, b/230371561)

    उदाहरण के लिए, आपके मैक्रोबेंचमार्क के build.gradle में:

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

    या Gradle कमांड लाइन से:

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

एपीआई में हुए बदलाव

  • मानदंडों में ऊर्जा और बिजली से जुड़े टास्क को मेज़र करने के लिए, नया PowerMetric जोड़ा गया. (I9f39b, b/220183779)
  • प्रोफ़ाइल रीसेट और कंपाइल करने की प्रोसेस को स्किप करने के लिए, नया कंपाइलेशन मोड CompilationMode.Ignore जोड़ा गया. (Ibbcf8, b/230453509)
  • BaselineProfileRule#collectBaselineProfile में एक नया पैरामीटर जोड़ा गया है. इससे पैकेज के नामों के हिसाब से आउटपुट फ़ाइल को फ़िल्टर किया जा सकता है (If7338, b/220146561)
  • इस कुकी की मदद से डेवलपर, डिवाइस की बैटरी को डिस्चार्ज कर सकता है, ताकि बैटरी की खपत का पता लगाया जा सके. (I6a6cb)
  • MacrobenchmarkScope में शेडर कैश मिटाने की सुविधा जोड़ी गई. (I32122)
  • इस कुकी की मदद से डेवलपर, मेट्रिक टाइप और ज़रूरी सबसिस्टम कैटगरी के डिसप्ले को कॉन्फ़िगर कर सकता है. (I810c9)
  • पहले, अगर बेंचमार्क को किसी ऐसे डिवाइस पर चलाया जाता था जिस पर वह काम नहीं करता, तो UnsupportedOperationException दिखता था. अब यूओई सिर्फ़ तब होता है, जब मेट्रिक का इस्तेमाल ऐसे डिवाइस पर किया जाता है जिस पर यह काम नहीं करती (जैसे: PowerMetric.configure). (I5cf20, b/227229375)
  • मैक्रोबेंचमार्क में, हर सिस्टम कैटगरी में कुल पावर और एनर्जी को मेज़र करने के लिए, TotalPowerMetric और TotalEnergyMetric को जोड़ा गया है. (I3b26b, b/224557371)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें अनरूट किए गए बिल्ड पर, हर मैक्रोबेंचमार्क के बीच कंपाइल किए गए तरीकों को सही तरीके से रीसेट नहीं किया जा रहा था. हालांकि, इसके लिए हर बार एपीके को फिर से इंस्टॉल करना पड़ता है. इससे हर मैक्रोबेंचमार्क के लिए ऐप्लिकेशन का डेटा मिट जाता है. (I31c74, b/230665435)
  • एपीआई 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 11 (एपीआई 30) या इसके बाद के वर्शन वाले कुछ डिवाइसों पर होने वाली android.system.ErrnoException: open failed: EACCES की समस्या ठीक की गई. यह 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)

  • pressHome() से 300ms की देरी की जानकारी हटाएं. (aosp/2086030, b/231322975)

  • शेल कमांड को ऑप्टिमाइज़ करके, मैक्रोबेंचमार्क के इटरेशन की स्पीड को बेहतर बनाएं. (aosp/2086023, b/231323582)

  • Macrobenchmark की मदद से बेसलाइन प्रोफ़ाइल जनरेट करते समय, मैनेज किए गए Gradle डिवाइसों के लिए सहायता. (aosp/2062228, b/228926421)

वर्शन 1.1.0-rc02

11 मई, 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 रिलीज़ हो गया है. वर्शन 1.1.0-rc02 में ये बदलाव शामिल हैं.

  • ध्यान दें कि इस रिलीज़ में, ऐप्लिकेशन के काम करने के तरीके में बदलाव किया गया है. अब हर बेंचमार्क के बीच ऐप्लिकेशन को पूरी तरह से फिर से इंस्टॉल किया जाता है, ताकि सटीक मेज़रमेंट किया जा सके.

गड़बड़ियां ठीक की गईं/व्यवहार में बदलाव

  • उस समस्या को ठीक किया गया है जिसकी वजह से मैक्रोबेंचमार्क के बीच ऐप्लिकेशन कंपाइलेशन को सही तरीके से रीसेट नहीं किया गया था. साथ ही, बिना रूट किए गए बिल्ड पर इसे रीसेट नहीं किया गया था. इससे उन कई मामलों को ठीक किया जाता है जहां एक से ज़्यादा टेस्ट चलाने पर, मेज़रमेंट पर CompilationMode का असर कम या नहीं होता. इस समस्या को हल करने के लिए, टारगेट ऐप्लिकेशन अब हर टेस्ट के तरीके को पूरी तरह से फिर से इंस्टॉल कर रहा है. इससे हर मैक्रोबेंचमार्क के बीच ऐप्लिकेशन का डेटा मिट जाएगा. (I31c74, b/230665435)

  • इससे ऐप्लिकेशन, टेस्ट से पहले स्टेट सेट अप नहीं कर पाते. इसलिए, अब इस समस्या को हल करने के लिए, कंपाइलेशन / फिर से इंस्टॉलेशन को स्किप किया जा सकता है. उदाहरण के लिए, शेल कमांड cmd package compile -f -m speed <package> का इस्तेमाल करके, टारगेट को पूरी तरह से कंपाइल किया जा सकता है. इसके बाद, मैक्रोबेंचमार्क के कंपाइलेशन चरण को बायपास किया जा सकता है.

    उदाहरण के लिए, आपके मैक्रोबेंचमार्क के build.gradle में:

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

    या Gradle कमांड लाइन से:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • androidx.benchmark.enabledRules इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़कर, Macrobenchmark और बेसलाइन प्रोफ़ाइल जनरेट करने वाले टेस्ट के बीच मॉड्यूल शेयर करने की सुविधा जोड़ी गई है. सिर्फ़ एक तरह का टेस्ट चलाने के लिए, 'Macrobenchmark' या 'BaselineProfile' पास करें. उदाहरण के लिए, जब किसी एम्युलेटर पर BaselineProfiles जनरेट किया जा रहा हो. (I756b7, b/230371561)

    उदाहरण के लिए, आपके मैक्रोबेंचमार्क के build.gradle में:

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

    या Gradle कमांड लाइन से:

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

वर्शन 1.1.0-rc01

20 अप्रैल, 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 रिलीज़ हो गया है. वर्शन 1.1.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Android Studio में, बेसलाइन प्रोफ़ाइल के आउटपुट लिंक अब यूनीक फ़ाइल नाम का इस्तेमाल करते हैं. इस तरह, आउटपुट में हमेशा BaselineProfileRule का इस्तेमाल करने के सबसे नए नतीजे दिखते हैं. ( aosp/2057008, b/228203086 )

वर्शन 1.1.0-beta06

6 अप्रैल, 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 रिलीज़ हो गया है. वर्शन 1.1.0-beta06 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • API 21/22 पर ट्रेस रिकॉर्डिंग क्रैश होने की समस्या ठीक की गई (If7fd6, b/227509388)
  • स्टार्टअप मैक्रोबेंचमार्क में 'किसी भी मेट्रिक को नहीं पढ़ा जा सका' अपवाद को ठीक करने के लिए, गतिविधि लॉन्च होने की प्रोसेस का पता लगाने की सुविधा को बेहतर बनाया गया है. (Ia517c)
  • CompilationMode.None() का इस्तेमाल करते समय, मैक्रोबेंचमार्क के लिए स्टार्टअप मेट्रिक ठीक की गईं. इस बदलाव से पहले, CompilationMode.Partial() की तुलना में Compilation.None() की परफ़ॉर्मेंस बेहतर दिखती थी. (611ac9).

वर्शन 1.1.0-beta05

23 मार्च, 2022

androidx.benchmark:benchmark-*:1.1.0-beta05 रिलीज़ हो गया है. वर्शन 1.1.0-beta05 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • CompilationMode.None का इस्तेमाल करते समय, प्रोफ़ाइल इंस्टॉल करने की प्रोसेस को स्किप करने के बाद पैकेज बंद करें. (aosp/1991373)
  • उस समस्या को ठीक किया गया है जिसकी वजह से StartupMode.COLD का इस्तेमाल करते समय, Macrobenchmarks स्टार्टअप मेट्रिक इकट्ठा नहीं कर पाता था. (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)

  • Q (API 29) और इसके बाद के वर्शन पर, थर्मल थ्रॉटलिंग का पता लगाने के लिए PowerManager का इस्तेमाल करें. इससे थर्मल थ्रॉटलिंग का पता लगाने के दौरान, गलत पॉज़िटिव की फ़्रीक्वेंसी में काफ़ी कमी आती है. साथ ही, यह उपयोगकर्ता के बिल्ड पर बेंचमार्क की स्पीड को काफ़ी बढ़ा देता है. यह थ्रॉटलिंग का पता भी लगाता है. ऐसा तब भी होता है, जब क्लॉक लॉक हों. हालांकि, ऐसा तब होता है, जब डिवाइस के फ़िज़िकल एनवायरमेंट के हिसाब से क्लॉक बहुत ज़्यादा लॉक हों. (I9c027, b/217497678, b/131755853)

  • जांच को आसान बनाने के लिए, simpleperf की सैंपलिंग प्रोफ़ाइलिंग को सिर्फ़ measureRepeated थ्रेड पर फ़िल्टर करें (Ic3e12, b/217501939)

  • एक से ज़्यादा प्रोसेस वाले ऐप्लिकेशन में, नाम वाली यूज़र इंटरफ़ेस (यूआई) सबप्रोसेस से मेट्रिक पाने की सुविधा (Ice6c0, b/215988434)

  • Android 9 (SDK 28) को टारगेट करने के लिए, बेसलाइन प्रोफ़ाइल के नियमों को फ़िल्टर करें. aosp/1980331 b/216508418

  • Compilation.None() का इस्तेमाल करते समय, प्रोफ़ाइल इंस्टॉल करने की प्रोसेस को स्किप करें. इसके अलावा, अगर ऐप्लिकेशन androidx.profileinstaller और Android Gradle प्लगिन के पुराने वर्शन का इस्तेमाल कर रहा है, तो चेतावनी की रिपोर्ट करें. aosp/1977029

वर्शन 1.1.0-beta03

9 फ़रवरी, 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 रिलीज़ हो गया है. वर्शन 1.1.0-beta03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • ऑडियो अंडररन का पता लगाने की अनुमति देने के लिए, एक्सपेरिमेंटल फ़्लैग के तहत मैक्रोबेंचमार्क लाइब्रेरी में AudioUnderrunMetric जोड़ा गया (Ib5972)
  • BaselineProfileRule अब setup ब्लॉक को स्वीकार नहीं करता है, क्योंकि यह profileBlock की तरह ही काम करता था. (Ic7dfe, b/215536447)

    उदाहरण के लिए,

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

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें Studio आउटपुट से लिंक होने पर, बाद के रन में माइक्रोबेंच प्रोफ़ाइलर ट्रेस अपडेट नहीं होते थे (I5ae4d, b/214917025)
  • एपीआई 23 (Ice380) पर, कंपाइलेशन शेल कमांड को रोकने की सुविधा
  • इनके नाम बदले गए हैं: FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi. ऐसा इसलिए किया गया है, ताकि यह साफ़ तौर पर पता चल सके कि ये अवधि हैं, टाइमस्टैंप नहीं. साथ ही, प्रीफ़िक्स को मैच करने के लिए भी ऐसा किया गया है. (I0eba3, b/216337830)

वर्शन 1.1.0-beta02

26 जनवरी, 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 रिलीज़ हो गया है. वर्शन 1.1.0-beta02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • माइक्रोबेंचमार्क स्टैक सैंपलिंग / मेथड ट्रेसिंग प्रोफ़ाइल के नतीजे अब Studio के आउटपुट में लिंक किए गए हैं. ये नतीजे, अन्य प्रोफ़ाइलिंग आउटपुट की तरह ही होते हैं. साथ ही, ये नतीजे, ऐलोकेशन मेट्रिक को नहीं छिपाते. (Idcb65, b/214440748, b/214253245)
  • BaselineProfileRule अब जनरेट की गई BaselineProfile टेक्स्ट फ़ाइल को पुल करने के लिए, logcat और Studio आउटपुट में adb pull कमांड प्रिंट करता है. (f08811)

वर्शन 1.1.0-beta01

12 जनवरी, 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 रिलीज़ हो गया है. वर्शन 1.1.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • इस कुकी का इस्तेमाल, प्रोफ़ाइलर के आर्ग्युमेंट को चालू करने की सुविधा को अनदेखा करने की समस्या को ठीक करने के लिए किया जाता है. (I37373, b/210619998)
  • अब इस्तेमाल में नहीं है CompliationModes (I98186, b/213467659)
  • CompilationMode.Partial के आधारभूत प्रोफ़ाइल आर्ग्युमेंट को साफ़ तौर पर समझने के लिए, enum में स्विच किया गया. (Id67ea)

वर्शन 1.1.0-alpha13

15 दिसंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 रिलीज़ हो गया है. वर्शन 1.1.0-alpha13 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Android Q (एपीआई 29+) पर, माइक्रोबेंच के आउटपुट में कम ओवरहेड वाली सिस्टम ट्रेसिंग की सुविधा जोड़ी गई है. ध्यान दें कि फ़िलहाल, यह सुविधा कस्टम ट्रेसिंग (android.os.Trace या androidx.tracing Jetpack API के ज़रिए) को कैप्चर नहीं करती है, ताकि नतीजों पर कोई असर न पड़े. इस ट्रेसिंग से, अस्थिरता की समस्या का पता लगाने में मदद मिलनी चाहिए. खास तौर पर, बेंचमार्क से बाहर के सोर्स से होने वाली अस्थिरता की समस्या का पता लगाने में. (I298be, b/205636583, b/145598917)
  • CompilationModes को तीन क्लास में बांटा गया है - पूरी तरह से, कोई नहीं, कुछ हद तक. पहले, इन्हें कंपाइलेशन के तर्कों के हिसाब से अलग-अलग नाम दिए जाते थे. अब हम इन्हें लागू करने से जुड़ी जानकारी और सुविधाओं के तौर पर मानते हैं. इससे, प्लैटफ़ॉर्म के अलग-अलग वर्शन के बीच होने वाले फ़ायदे-नुकसान, संभावित कॉम्बिनेशन, और व्यवहार के बारे में ज़्यादा जानकारी मिलती है. (I3d7bf, b/207132597)
  • सेटअप और मेज़रमेंट अब हमेशा जोड़े में होते हैं और क्रम से होते हैं. अब पैकेज के नाम और वर्शन के बारे में क्वेरी की जा सकती है. हालांकि, कुछ वार्मअप के मामलों में वर्शन null हो सकता है. (Id3b68, b/208357448, b/208369635)

गड़बड़ियां ठीक की गईं

  • CompilationMode.Speed को गलती से None के तौर पर माना गया (I01137)

वर्शन 1.1.0-alpha12

17 नवंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha12 रिलीज़ हो गया है. वर्शन 1.1.0-alpha12 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • कस्टम ट्रेस-आधारित टाइमिंग मेज़रमेंट के लिए, एक्सपेरिमेंटल TraceSectionMetric जोड़ें. (I99db1, b/204572664)

गड़बड़ियां ठीक की गईं

  • हर दोहराव पर डिवाइस को चालू करता है, ताकि यूज़र इंटरफ़ेस (यूआई) की जांच की जा सके - इसके लिए, लॉकस्क्रीन बंद होनी चाहिए. (Ibfa28, b/180963442)
  • एम्युलेटर और नॉन-रूटेड डिवाइसों पर, StackSampling प्रोफ़ाइलिंग मोड में कई क्रैश ठीक किए गए (Icdbda, b/202719335)
  • हर इटरेशन के आखिर में 0.5 सेकंड की नींद को हटा दिया गया है - अगर आपको इस बदलाव के साथ मेट्रिक नहीं दिखती हैं, तो कृपया गड़बड़ी की शिकायत करें. (Iff6aa)
  • डेटा के ड्रॉप होने की संभावना कम करें. साथ ही, ट्रेसिंग से मेमोरी ओवरहेड कम करें (Id2544, b/199324831, b/204448861)
  • कॉम्पैक्ट शेड स्टोरेज फ़ॉर्मैट पर स्विच करके, ट्रेस के साइज़ को ~40% तक कम किया गया. (Id5fb6, b/199324831)
  • स्टार्टअप मेट्रिक के अपडेट किए गए इंप्लीमेंटेशन, ताकि वे हमेशा रेंडरथ्रेड के आखिर में खत्म हों. यह अलग-अलग प्लैटफ़ॉर्म वर्शन पर एक जैसा होगा. साथ ही, यह इन-ऐप्लिकेशन मेज़रमेंट से ज़्यादा मेल खाएगा. (Ic6b55)

वर्शन 1.1.0-alpha11

3 नवंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 रिलीज़ हो गया है. वर्शन 1.1.0-alpha11 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Macrobenchmark में अब minSdkVersion का 23 है. (If2655)
  • एक नया एक्सपेरिमेंटल BaselineProfileRule जोड़ा गया है. यह ऐप्लिकेशन की क्रिटिकल यूज़र जर्नी के लिए बेसलाइन प्रोफ़ाइल जनरेट कर सकता है. ज़्यादा जानकारी वाला दस्तावेज़ जल्द ही उपलब्ध होगा. (Ibbefa, b/203692160)
  • measureRepeated इंटरफ़ेस के उस वैरिएंट को हटाता है जिसे Java कॉलर के लिए जोड़ा गया था. इसकी वजह यह है कि इससे, तरीके को पूरा करने/हल करने में अस्पष्टता पैदा होती थी. Java कॉल करने वालों को, measureRepeated से Unit.Instance को फिर से दिखाना होगा. अगर इससे आपको परेशानी हो रही है, तो कृपया गड़बड़ी की शिकायत करें. हम आने वाले समय में इस समस्या को ठीक कर सकते हैं. (Ifb23e, b/204331495)

वर्शन 1.1.0-alpha10

27 अक्टूबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 रिलीज़ हो गया है. वर्शन 1.1.0-alpha10 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • StartupTimingMetric को एपीआई 23 पर वापस ले जाएं. इस नए तरीके से, reportFullyDrawn() को बेहतर तरीके से मैनेज किया जाता है, ताकि तब तक इंतज़ार किया जा सके, जब तक कि कॉन्टेंट रेंडर न हो जाए. (If3ac9, b/183129298)
  • Java कॉल करने वालों के लिए, कई MacrobenchmarkScope तरीकों में JvmOverloads जोड़ा गया. (I644fe, b/184546459)
  • MacrobenchmarkRule.measureRepeated फ़ंक्शन का ऐसा विकल्प उपलब्ध कराएं जो Java भाषा में सही तरीके से इस्तेमाल करने के लिए, Consumer<MacrobenchmarkScope> का इस्तेमाल करता हो. (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 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • 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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • स्क्रोलिंग मैक्रोबेंचमार्क को एपीआई 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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • एपीआई लेवल को बढ़ाकर 21 कर दिया गया है, ताकि आने वाले समय में सबसे कम एपीआई लेवल को सपोर्ट किया जा सके. RequiredApi() के ज़रिए, एपीआई के मौजूदा वर्शन के बारे में जानकारी दी जाती है. फ़िलहाल, यह 29 है (I440d6, b/183129298)

गड़बड़ियां ठीक की गईं

  • ProfileInstaller से जुड़ी समस्याओं को ठीक किया गया है, ताकि बेसलाइन प्रोफ़ाइलों का इस्तेमाल करने वाले ऐप्लिकेशन, CompilationMode.BaselineProfile का इस्तेमाल करके MacroBenchmarks को आसानी से चला सकें. (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 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • androidx.benchmark.iterations इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया है. इससे स्थानीय तौर पर टेस्टिंग/प्रोफ़ाइलिंग करते समय, मैन्युअल तरीके से इटरेशन की संख्या को बदला जा सकता है. (6188be, b/194137879)

गड़बड़ियां ठीक की गईं

  • API 29 और इसके बाद के वर्शन पर, डिफ़ॉल्ट सैंपलिंग प्रोफ़ाइलर के तौर पर Simpleperf का इस्तेमाल किया गया. (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

एपीआई में हुए बदलाव

  • am start के ज़रिए लॉन्च करने के लिए, startActivityAndWait पर स्विच किया गया है. इससे हर मेज़रमेंट इटरेशन का समय करीब पांच सेकंड कम हो जाता है. हालांकि, अब इंटेंट पार्सलेबल काम नहीं करेंगे. (I5a6f5, b/192009149

गड़बड़ियां ठीक की गईं

  • थर्मल थ्रॉटलिंग का पता लगाने की सुविधा को कम संवेदनशील बनाना. साथ ही, अगर थ्रॉटलिंग का पता बार-बार चलता है, तो बेसलाइन को फिर से कैलकुलेट करना. (I7327b)
  • Android S बीटा पर काम करने के लिए, FrameTimingMetric से जुड़ी समस्या ठीक की गई (Ib60cc, b/193260119)
  • CompilationMode.BaselineProfile को बेहतर तरीके से काम करने में मदद करने के लिए, EmptyActivity का इस्तेमाल करके टारगेट ऐप्लिकेशन को फ़ोर्स स्टॉप की स्थिति से बाहर लाएं. (Id7cac, b/192084204)
  • प्लैटफ़ॉर्म के स्टैंडर्ड के मुताबिक, ट्रेस फ़ाइल एक्सटेंशन को .perfetto-trace में बदल दिया गया है. (I4c236, b/174663039)
  • StartupTimingMetric अब "fullyDrawnMs" मेट्रिक आउटपुट करता है. इससे यह मेज़र किया जाता है कि आपका ऐप्लिकेशन पूरी तरह से रेंडर होने में कितना समय लेता है. अपने ऐप्लिकेशन के लिए इस मेट्रिक को तय करने के लिए, Activity.reportFullyDrawn को तब कॉल करें, जब आपका शुरुआती कॉन्टेंट तैयार हो. जैसे, जब आपकी शुरुआती सूची के आइटम, डीबी या नेटवर्क से लोड हो जाते हैं. (reportFullyDrawn तरीका, ComponentActivity पर बिल्ड वर्शन की जांच किए बिना उपलब्ध है). ध्यान दें कि आपकी जांच को मेट्रिक कैप्चर करने के लिए, लंबे समय तक चलना चाहिए. ऐसा इसलिए, क्योंकि startActivityAndWait, reportFullyDrawn के लिए इंतज़ार नहीं करता. (If1141, b/179176560)
  • ट्रेस में यूज़र इंटरफ़ेस (यूआई) मेटाडेटा जोड़ने की लागत को 50 मि॰से॰ से ज़्यादा कम किया गया (Ic8390, b/193923003)
  • ट्रेसिंग बंद करने पर, पोलिंग फ़्रीक्वेंसी में काफ़ी बढ़ोतरी हुई.इससे स्टार्टअप बेंचमार्क रनटाइम में 30% से ज़्यादा की कमी आ सकती है. उदाहरण के लिए, Idfbc1, b/193723768

वर्शन 1.1.0-alpha03

16 जून, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 रिलीज़ हो गया है. वर्शन 1.1.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

गड़बड़ियां ठीक की गईं

  • बेंचमार्क की गड़बड़ियों को छिपाने के लिए, Gradle के सैंपल कोड को अपडेट कर दिया गया है. अब इसमें ऐसे एपीआई का इस्तेमाल किया गया है जो बंद नहीं हुआ है. साथ ही, इसका सिंटैक्स ऐसा है जो .gradle.kts का इस्तेमाल करने वाले लोगों के लिए भी काम करता है.

    उदाहरण के लिए,

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

वर्शन 1.1.0-alpha02

18 मई, 2021

मानदंड के वर्शन 1.1.0-alpha02 में, बेंचमार्किंग के लिए एक नया कॉम्पोनेंट जोड़ा गया है. इसका नाम मैक्रोबेंचमार्क है. बेंचमार्क की मदद से सीपीयू लूप को मेज़र किया जा सकता है. इसके अलावा, मैक्रोबेंचमार्क की मदद से, पूरे ऐप्लिकेशन के इंटरैक्शन को मेज़र किया जा सकता है. जैसे, स्टार्टअप और स्क्रोलिंग. साथ ही, ट्रेस कैप्चर किए जा सकते हैं. ज़्यादा जानकारी के लिए, लाइब्रेरी का दस्तावेज़ देखें.

androidx.benchmark:benchmark-*:1.1.0-alpha02 रिलीज़ हो गया है. वर्शन 1.1.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

Macrobenchmark के आर्टफ़ैक्ट जोड़े गए (androidx.benchmark:benchmark-macro-junit4 और androidx.benchmark:benchmark-macro)

  • अपने ऐप्लिकेशन से स्टार्टअप, स्क्रोलिंग/ऐनिमेशन की परफ़ॉर्मेंस मेट्रिक कैप्चर करें. ऐसा स्थानीय तौर पर या सीआई में करें
  • Android Studio में ही ट्रेस कैप्चर करना और उनकी जांच करना

गड़बड़ियां ठीक की गईं

  • Android 12 पर आउटपुट डायरेक्ट्री के साथ शेल अनुमतियों से जुड़ी समस्या को हल किया गया है (ध्यान दें - जिन डिवाइसों पर यह समस्या आ रही है उन पर आउटपुट फ़ाइलें कैप्चर करना जारी रखने के लिए, Android Gradle प्लगिन को 7.0.0 canary और Android Studio को Arctic Fox (2020.3.1) पर अपडेट करना पड़ सकता है). (Icb039)
  • BenchmarkPlugin में सहायता कॉन्फ़िगरेशन को कैश मेमोरी में सेव करने की सुविधा (6be1c1, b/159804788)
  • फ़ाइल आउटपुट को आसान बनाया गया - यह सुविधा डिफ़ॉल्ट रूप से चालू होती है. यह ऐसी डायरेक्ट्री में होती है जिसके लिए requestLegacyExternalStorage=true की ज़रूरत नहीं होती (8b5a4d, b/172376362)
  • यह लाइब्रेरी, logcat में प्रिंट होने वाली उन चेतावनियों को ठीक करती है जिनमें यह बताया जाता है कि प्लैटफ़ॉर्म के उन वर्शन पर JIT थ्रेड नहीं मिली है जहां यह मौजूद नहीं है. (I9cc63, b/161847393)
  • डिवाइस पर कॉन्टेंट पढ़ने की ज़्यादा से ज़्यादा फ़्रीक्वेंसी से जुड़ी समस्या ठीक की गई. (I55c7a)

वर्शन 1.1.0-alpha01

10 जून, 2020

androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01, और androidx.benchmark:benchmark-junit4:1.1.0-alpha01 रिलीज़ किए जाते हैं. वर्शन 1.1.0-alpha01 में ये बदलाव शामिल हैं.

1.1 की नई सुविधाएं

  • बंटवारे की मेट्रिक - बेंचमार्क अब वार्मअप और टाइमिंग के बाद एक और फ़ेज़ में चलते हैं. इससे, बंटवारे की संख्या कैप्चर की जाती है. एलॉकेशन की वजह से, प्लैटफ़ॉर्म के पुराने वर्शन पर परफ़ॉर्मेंस से जुड़ी समस्याएं हो सकती हैं. जैसे, O में 140ns, M में 8ns हो गया. इसे Nexus5X पर मेज़र किया गया था. इसमें क्लॉक लॉक की गई थीं. यह मेट्रिक, Android Studio कंसोल आउटपुट में दिखती है. साथ ही,
  • प्रोफ़ाइलिंग की सुविधा - अब बेंचमार्क रन के लिए प्रोफ़ाइलिंग डेटा कैप्चर किया जा सकता है. इससे यह पता लगाया जा सकता है कि आपका कोड धीरे-धीरे क्यों चल रहा है. बेंचमार्क, एआरटी से मेथड ट्रेसिंग या मेथड सैंपलिंग को कैप्चर करने की सुविधा देता है. इन फ़ाइलों की जांच, Android Studio में मौजूद Profiler की मदद से की जा सकती है. इसके लिए, File > Open का इस्तेमाल करें.
  • Benchmark Gradle प्लगिन अब आसानी से सेटअप करने के लिए डिफ़ॉल्ट सेटिंग उपलब्ध कराता है:
    • testBuildType को डिफ़ॉल्ट रूप से रिलीज़ करने के लिए सेट किया गया है, ताकि कोड कवरेज की सुविधा के साथ डिपेंडेंसी का इस्तेमाल न किया जा सके. रिलीज़ buildType को डिफ़ॉल्ट buildType के तौर पर भी कॉन्फ़िगर किया जाता है. इससे Android Studio को पहली बार कोई प्रोजेक्ट खोलने पर, सही बिल्ड वैरिएंट को अपने-आप चुनने की अनुमति मिलती है. (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 वर्शन की मुख्य सुविधाएं

बेंचमार्क लाइब्रेरी की मदद से, ऐप्लिकेशन कोड के परफ़ॉर्मेंस बेंचमार्क लिखे जा सकते हैं. साथ ही, नतीजे तुरंत पाए जा सकते हैं.

यह बिल्ड और रनटाइम कॉन्फ़िगरेशन से जुड़ी समस्याओं को रोकता है. साथ ही, डिवाइस की परफ़ॉर्मेंस को बेहतर बनाता है, ताकि यह पक्का किया जा सके कि मेज़रमेंट सटीक और एक जैसे हों. समय के साथ कोड की परफ़ॉर्मेंस देखने और रिग्रेशन को रोकने के लिए, बेंचमार्क को सीधे तौर पर Android Studio में या Continuous Integration में चलाएं.

मुख्य सुविधाओं में ये शामिल हैं:

  • घड़ी की स्थिरता
  • थ्रेड को प्राथमिकता देने की सुविधा
  • यूज़र इंटरफ़ेस (यूआई) की परफ़ॉर्मेंस की जांच करने की सुविधा, जैसे कि RecyclerView के सैंपल में
  • JIT-aware वार्मअप और लूपिंग
  • प्रोसेस होने के बाद के लिए, 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 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • मानदंडों में सिस्ट्रैस ट्रेसिंग जोड़ी गई

गड़बड़ियां ठीक की गईं

  • मेट्रिक के स्थिर न होने की समस्या को ठीक किया गया है. इसमें, कम प्राथमिकता की वजह से वार्म अप से पहले JIT पूरा नहीं होता था (b/140773023)
  • Android Gradle प्लगिन 3.5 और 3.6 में, JSON फ़ॉर्मैट में आउटपुट देने वाली डायरेक्ट्री एक ही है

वर्शन 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 कोड सही तरीके से लिंट की गड़बड़ियां दिखा सके. यह Kotlin कॉल करने वालों के लिए, Kotlin के एक्सपेरिमेंट के तौर पर उपलब्ध एनोटेशन की तरह ही काम करता है.
  • अब Android Gradle प्लगिन 3.6 में, आउटपुट के लिए additionalTestOutputDir इंस्ट्रुमेंटेशन आर्ग्युमेंट के इस्तेमाल का सही तरीके से पता लगाता है. इससे यह पता चलता है कि 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 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • टेस्ट रनर के लिए, पुराने पैकेज का गलत तरीके से इस्तेमाल करने की जांच की गई है. इससे अब ज़्यादा मददगार गड़बड़ी का मैसेज मिलता है

एपीआई में हुए बदलाव

  • एक्सपेरिमेंट के तौर पर उपलब्ध एनोटेशन ExperimentalAnnotationReport अब सार्वजनिक तौर पर सही तरीके से उपलब्ध है. एक्सपेरिमेंट के तौर पर उपलब्ध 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 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

एपीआई में हुए बदलाव

  • 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) के साथ किया जा सकता है. साथ ही, इसे सीआई में भी चलाया जा सकता है. ज़्यादा जानकारी के लिए, Gradle के बिना बेंचमार्क बनाना और लगातार इंटिग्रेशन में बेंचमार्क चलाना लेख पढ़ें.

नई सुविधाएं

  • Gradle प्लगिन
    • अब यह टेस्ट कवरेज को अपने-आप बंद कर देता है और डिफ़ॉल्ट रूप से AndroidBenchmarkRunner सेट करता है (b/138374050)
    • AGP पर आधारित डेटा कॉपी करने की नई सुविधा जोड़ी गई है. इसका इस्तेमाल, बेंचमार्क चलाते समय और AGP 3.6+ का इस्तेमाल करते समय किया जा सकता है
  • JSON फ़ॉर्मैट में जोड़े गए नए फ़ील्ड
    • आउटपुट के कुल बेंचमार्क टेस्ट को पूरा होने में लगने वाला समय (b/133147694)
    • @Parameterized नाम वाली स्ट्रिंग का इस्तेमाल करने वाले बेंचमार्क (उदाहरण के लिए, @Parameters(name = "size={0},depth={1}")) अब JSON आउटपुट (b/132578772) में, हर बेंचमार्क के हिसाब से पैरामीटर के नाम और वैल्यू दिखाते हैं
  • ड्राई रन मोड (b/138785848)
    • हर बेंचमार्क लूप को सिर्फ़ एक बार चलाने के लिए, "ड्राई रन" मोड जोड़ा गया है. इससे मेज़रमेंट कैप्चर किए बिना, गड़बड़ियों/क्रैश की जांच की जा सकती है. यह फ़ंक्शन, उदाहरण के लिए, प्रीसबमिट में बेंचमार्क को तुरंत चलाने के लिए काम आ सकता है. इससे यह जांच की जा सकती है कि वे ठीक से काम कर रहे हैं या नहीं.

एपीआई में हुए बदलाव

  • मॉड्यूल का स्ट्रक्चर बदल गया है. इसलिए, लाइब्रेरी को अलग-अलग हिस्सों में बांट दिया गया है (b/138451391)
    • benchmark:benchmark-junit4 में JUnit डिपेंडेंसी वाली क्लास शामिल हैं: AndroidBenchmarkRunner और BenchmarkRule. ये दोनों क्लास, androidx.benchmark.junit4 पैकेज में ले जाई गई हैं
    • benchmark:benchmark-common में बाकी लॉजिक शामिल होता है. इसमें BenchmarkState API भी शामिल है
    • इस स्प्लिट की मदद से, लाइब्रेरी आने वाले समय में JUnit4 एपीआई के बिना बेंचमार्किंग की सुविधा दे पाएगी
  • कॉन्फ़िगरेशन से जुड़ी चेतावनियों को अब गड़बड़ियों के तौर पर माना जाता है. इससे टेस्ट क्रैश हो जाएगा (b/137653596)
    • ऐसा इसलिए किया जाता है, ताकि सटीक मेज़रमेंट को बढ़ावा दिया जा सके. खास तौर पर, सीआई में
    • इंस्ट्रुमेंटेशन आर्ग्युमेंट का इस्तेमाल करके, इन गड़बड़ियों को वापस चेतावनियों में बदला जा सकता है. उदाहरण के लिए: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

गड़बड़ियां ठीक की गईं

  • Q डिवाइसों पर बाहरी स्टोरेज में डेटा सेव करते समय होने वाली गड़बड़ियों के बारे में ज़्यादा जानकारी वाले मैसेज मिलते हैं. साथ ही, समस्या हल करने के सुझाव भी मिलते हैं
  • बेंचमार्क रन के दौरान स्क्रीन अपने-आप चालू हो जाती हैं. ऐसा तब होता है, जब स्क्रीन बंद होने पर टेस्ट पूरा नहीं हो पाता

बाहरी योगदान

  • Sergey Zakharov को धन्यवाद. उन्होंने JSON आउटपुट को बेहतर बनाने और स्क्रीन बंद होने की समस्याओं को ठीक करने में मदद की!

वर्शन 1.0.0-alpha03

2 जुलाई, 2019

androidx.benchmark:benchmark:1.0.0-alpha03 और androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 रिलीज़ हो गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

नई सुविधाएं

  • पूरी JSON रिपोर्ट में, हर बेंचमार्क के हिसाब से थर्मल थ्रॉटलिंग की वजह से नींद की अवधि का डेटा दिखाएं

गड़बड़ियां ठीक की गईं

  • Android प्लगिन और Android ब्लॉक के बाद, Gradle प्लगिन को लागू करने की ज़रूरत नहीं होनी चाहिए
  • स्कोप किए गए स्टोरेज का इस्तेमाल करने वाले Android 10 डिवाइसों पर, मानदंड वाली रिपोर्ट की सुविधा जोड़ी गई

वर्शन 1.0.0-alpha02

6 जून, 2019

androidx.benchmark:1.0.0-alpha02 और androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 रिलीज़ हो गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

ध्यान दें कि हम JSON स्कीमा को एक एपीआई के तौर पर इस्तेमाल कर रहे हैं. हम अन्य एपीआई की तरह ही, स्थिरता से जुड़ी पाबंदियों का पालन करेंगे: बीटा वर्शन में एक बार स्थिर (बहुत कम अपवादों के साथ) और फ़ाइनल रिलीज़ में ठीक किया गया. साथ ही, माइनर रिलीज़ में सिर्फ़ जोड़े गए और मेजर रिलीज़ में बदलाव/हटाए गए.

एपीआई में हुए बदलाव

  • JSON स्कीमा को बेहतर बनाया गया है. JSON स्कीमा में आगे होने वाले बदलावों में, सिर्फ़ नई चीज़ें जोड़ी जाएंगी:

    • नतीजे के ऑब्जेक्ट स्ट्रक्चर को फिर से व्यवस्थित किया गया है, ताकि आने वाले समय में अतिरिक्त मेट्रिक ग्रुप के साथ काम किया जा सके (b/132713021)
    • डिवाइस और बिल्ड की जानकारी और घड़ियों के लॉक होने की स्थिति जैसी टेस्ट रन की कॉन्टेक्स्ट जानकारी को टॉप-लेवल ऑब्जेक्ट (b/132711920) में जोड़ा गया है
    • समय की मेट्रिक के नामों में अब ‘ns’ शामिल है (b/132714527)
    • रिपोर्ट की गई हर मेट्रिक के लिए अतिरिक्त आंकड़े जोड़े गए (ज़्यादा से ज़्यादा, मीडियन, कम से कम). साथ ही, 'नैनो' की खास जानकारी देने वाले आसान आंकड़े हटा दिए गए (b/132713851)
  • एक्सएमएल आउटपुट हटाया गया (b/132714414)

  • BenchmarkState.reportData API से, थर्मल थ्रॉटलिंग का पता लगाने की सुविधा हटा दी गई है (b/132887006)

गड़बड़ियां ठीक की गईं

  • हाल ही के कुछ ओएस डिवाइसों पर ./gradlew lockClocks के काम न करने की समस्या ठीक की गई है (b/133424037)
  • इमुलेटर के लिए, थ्रॉटलिंग का पता लगाने की सुविधा बंद की गई (b/132880807)

वर्शन 1.0.0-alpha01

7 मई, 2019

androidx.benchmark:benchmark:1.0.0-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.