मानदंड
| नया अपडेट | स्टेबल वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 07 अक्टूबर, 2026 | 1.5.0 | - | - | 1.6.0-alpha01 |
डिपेंडेंसी का एलान करना
बेंचमार्क पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
मैक्रोबेंचमार्क
अपने प्रोजेक्ट में Macrobenchmark का इस्तेमाल करने के लिए, macrobenchmark मॉड्यूल के लिए अपनी build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
माइक्रोबेंचमार्क
अपने प्रोजेक्ट में Microbenchmark का इस्तेमाल करने के लिए, अपने microbenchmark मॉड्यूल की build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Microbenchmark लाइब्रेरी, आपके माइक्रोबंचमार्क मॉड्यूल के साथ इस्तेमाल करने के लिए, Gradle प्लग इन भी उपलब्ध कराती है.
यह प्लग इन, मॉड्यूल के लिए डिफ़ॉल्ट रूप से कॉन्फ़िगरेशन सेट करता है. साथ ही, होस्ट में बेंचमार्क आउटपुट कॉपी सेट अप करता है और
./gradlew lockClocks टास्क उपलब्ध कराता है.
प्लग इन का इस्तेमाल करने के लिए, अपनी टॉप-लेवल build.gradle फ़ाइल के `plugins` ब्लॉक में यह लाइन शामिल करें:
Groovy
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.5.0" apply false }
इसके बाद, अपने बेंचमार्क मॉड्यूल की build.gradle फ़ाइल में प्लग इन लागू करें
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.6
वर्शन 1.6.0-alpha01
07 अक्टूबर, 2026
androidx.benchmark:benchmark-*:1.6.0-alpha01 रिलीज़ हो गया है. वर्शन 1.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- बेंचमार्क
:lockClocksटास्क अब उपलब्ध होने पर, फ़िक्स्ड परफ़ॉर्मेंस मोड का इस्तेमाल करता है. यह सिर्फ़ रूट-ओनली मोड के पिछले वर्शन के मुकाबले बेहतर है. इसका मतलब है कि ज़्यादा से ज़्यादा फ़िज़िकल डिवाइसों पर क्लॉक को लॉक किया जा सकता है, ताकि आपको बेहतर नतीजे मिल सकें. खास तौर पर, यह सुविधा माइक्रोबेंचमार्क के लिए काफ़ी मददगार है. अगर आपको थर्मल थ्रॉटलिंग से जुड़ी कोई समस्या दिखती है, तो कृपया उसकी शिकायत करें. (I0d032)
एपीआई में हुए बदलाव
ExperimentalConfigमेंMemoryProfilingConfigजोड़ा गया, ताकि मैक्रोबेंचमार्क रन, Perfetto हीप प्रोफ़ाइलिंग में ऑप्ट इन कर सकें. (Ibc931)
गड़बड़ियां ठीक की गईं
- माइक्रोबेंचमार्क में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, एएनआर से बचने के लिए, तरीकों की सूची को कैप्चर करने की प्रोसेस को कभी-कभी ज़रूरत से ज़्यादा सावधानी बरतते हुए छोड़ दिया जाता था. (Ifc307)
:<suffix>नेमिंग पैटर्न का इस्तेमाल न करने वाली प्रोसेस के लिए, बेसलाइन प्रोफ़ाइल कैप्चर करने की समस्या को ठीक किया गया. (I512ab)- प्रोफ़ाइलर ट्रेस के लिंक अब आईडीई की खास जानकारी में, 'प्रोफ़ाइलिंग ट्रेस' सेक्शन में अलग से रिपोर्ट किए जाते हैं. (Id639f)
- वर्चुअल फ़ाइल फ़्लशिंग में मौजूद गड़बड़ी को ठीक किया गया. इसकी वजह से,
Unable to flush profiles for <packagename>की समस्या आ रही थी. (I48ccc) - सिस्टम ट्रेस करने की प्रक्रिया में एम्बेड किए गए तरीकों की सूची में सिंक्रनाइज़ेशन की समस्या ठीक की गई. Ifd2e33 b/537688349
- बेसलाइन प्रोफ़ाइल Gradle प्लगिन - सबडायरेक्ट्री में
test-result.pbफ़ाइलें ढूंढने की सुविधा के लिए,CollectBaselineProfileTaskको बेहतर बनाया गया है. इससे, नए बिल्ट-इन टेस्ट प्लैटफ़ॉर्म के साथ काम करने की सुविधा मिलती है. Id9c488 b/543799367
संस्करण 1.5
वर्शन 1.5.0
09 सितंबर, 2026
androidx.benchmark:benchmark-*:1.5.0 रिलीज़ हो गया है. वर्शन 1.5.0 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-rc02
26 अगस्त, 2026
androidx.benchmark:benchmark-*:1.5.0-rc02 रिलीज़ हो गया है. वर्शन 1.5.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-rc01
12 अगस्त, 2026
androidx.benchmark:benchmark-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.5.0-beta01
29 जुलाई, 2026
androidx.benchmark:benchmark-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PerfettoCaptureऔरPerfettoTraceRuleअब इन-प्रोसेस ट्रेस कैप्चर कर सकते हैं और उन्हें टारगेट पैकेज के लिए मर्ज कर सकते हैं. (I9a00b, b/497959820)
वर्शन 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 कैप्चर को भी अपडेट करें
androidx.benchmark.requireAotऔरandroidx.benchmark.requireAotको डिफ़ॉल्ट रूप से 'सही है' पर सेट करें. इन सुरक्षित डिफ़ॉल्ट सेटिंग से यह पक्का होता है कि माइक्रोबेंचमार्क चलाने से पहले, कंपाइलेशन किया जाए. AGP 8.4 और इसके बाद के वर्शन का इस्तेमाल करने पर, बेंचमार्क ग्रैडल प्लग इन के साथ यह सुविधा डिफ़ॉल्ट रूप से चालू होती है. साथ ही, यह पक्का किया जाता है किmeasureRepeatedका इस्तेमाल मुख्य थ्रेड पर न किया जाए, जहां इसकी वजह से एएनआर की गड़बड़ियां हो सकती हैं. (I1bc3c, b/379115078)- Perfetto के बंद होने की समयसीमा को 5 सेकंड से बढ़ाकर 30 सेकंड कर दिया गया है. हालांकि, यह सिर्फ़ बेंचमार्क के लिए कैप्चर किए गए Perfetto सेशन पर लागू होता है. समस्या होने पर, गड़बड़ी को लॉग करने की सुविधा को बेहतर बनाया गया है. (If188f, b/435589290)
वर्शन 1.5.0-alpha06
6 मई, 2026
androidx.benchmark:benchmark-*:1.5.0-alpha06 रिलीज़ हो गया है. वर्शन 1.5.0-alpha06 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बेंचमार्क आउटपुट डायरेक्ट्री से अतिरिक्त टेस्ट आउटपुट डायरेक्ट्री में फ़ाइलों को ले जाते समय, डिवाइस के एक से ज़्यादा उपयोगकर्ताओं वाले एनवायरमेंट को सही तरीके से मैनेज करें. (I90da5, b/489358149)
वर्शन 1.5.0-alpha05
25 मार्च, 2026
androidx.benchmark:benchmark-*:1.5.0-alpha05 रिलीज़ हो गया है. वर्शन 1.5.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टॉप-लेवल पैकेज को ध्यान में रखते हुए,
ArtMetricको अपडेट किया गया. यह खास तौर पर तब ज़रूरी होता है, जब AGP/R8 9.1+ या-repackageclassesग्लोबल विकल्प का इस्तेमाल किया जा रहा हो. पहले,ArtMetricअपनेartClassLoad...मेज़रमेंट में इन क्लासलोड का पता नहीं लगा पाता था. (If8a35, b/487402058)
नई सुविधाएं
- एक नया इंस्ट्रूमेंटेशन आर्ग्युमेंट androidx.benchmark.requireLockedClocks जोड़ा गया है. इससे यह जांच की जा सकती है कि रूट किए गए डिवाइसों के लिए सीपीयू क्लॉक लॉक हैं या नहीं. (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 मल्टी-प्लैटफ़ॉर्म मॉड्यूल के लिए, बेसलाइन प्रोफ़ाइल जनरेट करने की सुविधा को कुछ हद तक जोड़ना. आम तौर पर, प्रोफ़ाइलों की डिपेंडेंसी को dependencies ब्लॉक में
baselineProfileGradle कॉन्फ़िगरेशन का इस्तेमाल करके तय किया जा सकता है. हालांकि, फ़िलहाल यह KMP मॉड्यूल के लिए काम नहीं करता.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }इसके बजाय, आपको
baselineProfile**एक्सटेंशन का इस्तेमाल करके अपनी डिपेंडेंसी तय करनी चाहिए. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
वर्शन 1.5.0-alpha01
17 दिसंबर, 2025
androidx.benchmark:benchmark-*:1.5.0-alpha01 रिलीज़ हो गया है. वर्शन 1.5.0-alpha01 में ये बदलाव शामिल हैं.
- Macrobenchmark 1.5,
UiAutomator2.4 का इस्तेमाल करता है, ताकि मेज़र किए गए ऐप्लिकेशन के साथ इंटरैक्ट करना आसान हो सके. MacrobenchmarkScope ऑब्जेक्ट अब UiAutomatorTestScope को बढ़ाता है. इससे आपकोUiAutomatorएपीआई इस्तेमाल करने की अनुमति मिलती है. जैसे,onElement { ... }.click(). UiAutomator2.4 के बारे में ज़्यादा जानकारी के लिए, दस्तावेज़ देखें.
नई सुविधाएं
- बेसलाइन प्रोफ़ाइल Gradle प्लगिन को अब AGP 9.0 में
newDsl=falseकी ज़रूरत नहीं है (Iaaac7, b/443311090) - ट्रेस कॉन्फ़िगरेशन को बढ़ाया गया है, ताकि बेंचमार्क में कैप्चर किए गए सिस्टम/Perfetto ट्रेस में मुख्य साइज़ (जैसे, छोटा/बड़ा) शामिल किया जा सके. (I8e397, b/457469959)
एपीआई में हुए बदलाव
- (UiAutomator में) नई विंडो के लिए इंतज़ार करने के लिए,
startActivitywait को बदल दिया गया है. (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अगर
perfettoSdkTracing=true(जैसे, माइक्रोबेंचमार्क में Compose को ट्रेस करते समय) पहले से चल रही टारगेट प्रोसेस को बंद कर देता था और StartupMode तय नहीं किया गया था. (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 के 'अभी पुष्टि करें' सुविधा के तहत, ऐप्लिकेशन को पहली बार लॉन्च करने के बाद कुछ हद तक कंपाइल किया जाता है. इस वजह से, की परफ़ॉर्मेंस में उतार-चढ़ाव हो सकता है. - एक्सपेरिमेंट के तौर पर उपलब्ध सुविधा - स्टार्टअप इनसाइट,
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))पास करके स्टार्टअप मैक्रोबेंचमार्क में कुछ सामान्य समस्याओं को हाइलाइट कर सकती है. - ArtMetric को जोड़ा गया है. इसका इस्तेमाल, जेआईटी कंपाइलेशन और ऑप्टिमाइज़ नहीं की गई क्लास लोड होने का पता लगाने के लिए किया जा सकता है. ये दोनों ही, बेसलाइन प्रोफ़ाइल के ऑप्टिमाइज़ेशन की पुष्टि करने के लिए काम के हैं.
बेसलाइन प्रोफ़ाइलें
BaselineProfileRuleअब मल्टी-प्रोसेस ऐप्लिकेशन के लिए प्रोफ़ाइलें इकट्ठा करता है.
अन्य बदलाव
- TraceProcessor को इसकी लाइब्रेरी (
androidx.benchmark:benchmark-traceprocessor) से बाहर निकाला गया है, ताकि इसे अन्य मामलों मेंMacrobenchmarkमेट्रिक के बाहर इस्तेमाल किया जा सके. इसे डेस्कटॉप जेवीएम पर भी चलाया जा सकता है. इसके लिए, आपको अपना 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BaselineProfileConfig.Builderको जोड़ा गया, ताकि Java डेवलपर के लिएBaselineProfileRule.collectWithResults()को कॉल करना आसान हो सके. (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सर्वर लोड और क्वेरी के लिए, डिफ़ॉल्ट टाइम आउट को बढ़ाकर 120 सेकंड कर दिया गया है. पहले यह 60/30 सेकंड था. साथ ही, दोनों को एक टाइम आउट पैरामीटर के साथ कॉन्फ़िगर किया जा सकता है. (Ifec87)
गड़बड़ियां ठीक की गईं
profileinstallerके बिना किसी ऐप्लिकेशन की प्रोफ़ाइल को कैप्चर करने या उसकी परफ़ॉर्मेंस की तुलना करने पर होने वाली कुछ समस्याओं को ठीक किया गया है. इसमेंBroadcastRecieverशामिल है. इसका असर सिर्फ़ रूट किए गए डिवाइसों पर चलने वाले टेस्ट पर पड़ता है. (Ied308)
वर्शन 1.4.0-alpha09
12 मार्च, 2025
androidx.benchmark:benchmark-*:1.4.0-alpha09 रिलीज़ हो गया है. वर्शन 1.4.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम लाइफ़साइकल के साथ आसानी से इस्तेमाल करने के लिए,
TraceProcessorऔर Session API को जोड़ा गया है. इनमें बंद किए जा सकने वाले हैंडल शामिल हैं. यह Coroutine और Java API के इस्तेमाल को आसान बनाने की दिशा में भी एक कदम है.TraceProcessor.runServer {}के लिए एक्सटेंशन फ़ंक्शन को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है. ऐसा इसलिए, क्योंकि आने वाले समय में इन्हें हटाया जा सकता है और इन्हें एक्सपेरिमेंट के तौर पर मार्क नहीं किया जाएगा. (I358b4)
गड़बड़ियां ठीक की गईं
- एपीआई 36 के साथ, बेंचमार्क और बेसलाइन प्रोफ़ाइल कैप्चर करने की सुविधा काम नहीं करने की समस्या को ठीक किया गया. ऐसा
pgrepटॉयबॉक्स में हुए बदलाव की वजह से हुआ था. अब पूरी कमांड लाइन को प्रिंट करने के लिए,-aकी ज़रूरत होती है. (Idc991) - डिफ़ॉल्ट ट्रेसिंग कॉन्फ़िगरेशन को फ़िल्टर करें, ताकि नए एपीआई लेवल पर ट्रेस में डेटा के नुकसान का जोखिम कम हो सके. (I54e8a)
- एक्सपेरिमेंट के तौर पर
androidx.benchmark.killExistingPerfettoRecordingsइंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया है. इसेfalseपर सेट किया जा सकता है, ताकि पहले से मौजूद परफ़ेक्टो ट्रेस कैप्चर जारी रहे. डिफ़ॉल्ट रूप से, डिवाइस पर पहले से मौजूद Perfetto ट्रेस कैप्चर को बंद कर दिया जाता है, ताकि कोई रुकावट न आए. (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) - '
pm dump-profilesstdout की उम्मीद है' लेबल वाले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इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया है. इसे फ़ॉल्स पर सेट किया जा सकता है, ताकि लोकल टेस्टिंग के लिएmeasureRepeatedOnMainThreadके थ्रो ऑन डेडलाइन व्यवहार को बंद किया जा सके. आम तौर पर, इसका सुझाव नहीं दिया जाता, क्योंकि इससे टेस्ट के दौरान एएनआर की संभावना बढ़ जाती है. (Idbeec, b/353226476)
एपीआई में हुए बदलाव
MicrobenchmarkConfigकंस्ट्रक्टर में@JvmOverloadsको जोड़ा गया. (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 एनोटेशन का इस्तेमाल करती है. ये एनोटेशन, टाइप-यूज़ होते हैं. 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()की परफ़ॉर्मेंस में उतार-चढ़ाव होता था. साथ ही, यह शुरुआती और सबसे खराब परफ़ॉर्मेंस को नहीं दिखाती थी. यह प्लैटफ़ॉर्म में हुए बदलाव के हिसाब से काम करता है. इससे एआरटी के कंपाइलेशन स्टेटसverifyको, ऐप्लिकेशन के पहली बार लॉन्च होने के कुछ समय बाद, उन्हें कुछ हद तक कंपाइल करने की अनुमति मिलती है. इससे सिर्फ़ क्लास लोड होने पर असर पड़ता है. (Ie48d0) - उस समस्या को ठीक किया गया है जिसमें (खास तौर पर छोटे) ट्रेस कैप्चर किए जा सकते थे. हालांकि, Perfetto ट्रेस में प्रोसेस का नाम छोटा होने की वजह से, पहले से मौजूद मैक्रोबेंचमार्क मेट्रिक से मेज़रमेंट की रिपोर्ट नहीं की जा सकती थी. अब Macrobenchmark, इस समस्या को हल करने के लिए, पैकेज के पूरे नाम के साथ-साथ, पैकेज के छोटे नाम को भी सभी बिल्ट-इन क्वेरी में खोजता है. ध्यान दें कि कस्टम
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को अब हमेशा बदला जाता है. साथ ही, बेंचमार्क औरnonMinified(बेसलाइन प्रोफ़ाइल कैप्चर) बिल्ड, दोनों मेंisDebuggableको भी अब हमेशा बदला जाता है. (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 रनटाइम की परफ़ॉर्मेंस की जांच करने के लिए किया जा सकता है. यह कुकी, JIT, क्लास शुरू होने की प्रोसेस (जहां उपलब्ध हो) और क्लास की पुष्टि की संख्या और कुल अवधि को कैप्चर करती है. इसके अलावा,CaptureInfoमें बदलाव किए गए हैं, ताकि डिफ़ॉल्ट रूप से एआरटी मेनलाइन का वैकल्पिक वर्शन शामिल किया जा सके. (I930f7) - बेंचमार्क JSON आउटपुट में
coefficientOfVariationजोड़ें, ताकि किसी बेंचमार्क रन में स्थिरता दिखाई जा सके. (Ib14ea)
गड़बड़ियां ठीक की गईं
- एवीडी डिवाइस में स्पेस होने पर,
CollectBaselineProfileTaskको ठीक किया गया. (Ia0225, b/371642809) StartupMode.COLDअपवादों से जुड़ी गड़बड़ियों को ठीक करने के लिए अनुमानित फ़िक्स:Package <packagename> must not be running prior to cold start!. अब,MacrobenchmarkScope.killProcess()(इसमें हर बार दोहराए जाने से पहले चलाया जाने वाला टेस्ट भी शामिल है, जिसका इस्तेमालStartupMode.COLDके व्यवहार को लागू करने के लिए किया जाता है) यह पुष्टि करने के लिए इंतज़ार करेगा कि ऐप्लिकेशन की सभी प्रोसेस बंद हो गई हैं. (I60aa6, b/351582215)- उस समस्या को ठीक कर दिया गया है जिसकी वजह से रूट किए गए कुछ एम्युलेटर पर UNLOCKED_ गड़बड़ी दिखती थी. (Ic5117)
- यह लाइब्रेरी अब JSpecify के nullness एनोटेशन का इस्तेमाल करती है. ये एनोटेशन, टाइप-यूज़ होते हैं. 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 टेस्ट लैब (एफ़टीएल) की वह समस्या ठीक कर दी गई है जिसमें बेसलाइन प्रोफ़ाइल 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)
- हमने एक्सपेरिमेंट के तौर पर स्क्रिप्ट जोड़ी हैं. इनकी मदद से, jit को बंद किया जा सकता है. इसके लिए, रूट / रनटाइम रीस्टार्ट करना ज़रूरी है. साथ ही, डिवाइस की परफ़ॉर्मेंस/टेस्ट की स्थिति को रीसेट किया जा सकता है. फ़िलहाल, इन्हें Gradle टास्क के तौर पर पब्लिश नहीं किया गया है. (7c3732b)
- एम्युलेटर पर टेस्ट चलाते समय, टेस्ट को स्किप करने के लिए बेंचमार्क आर्ग्युमेंट जोड़ा गया.
automaticGenerationDuringबिल्ड चालू होने पर, बेंचमार्क भी बेसलाइन प्रोफ़ाइल जनरेट करने की प्रोसेस को ट्रिगर करेंगे. अगर एमुलेटर का इस्तेमाल किया जाता है, तो यह काम नहीं करेगा. नए आर्ग्युमेंटskipBenchmarksOnEmulatorकी मदद से, टेस्ट को स्किप किया जा सकता है. (0c2ddcd) - एपीआई 23 और इसके बाद के वर्शन पर, परफ़ॉर्मेंस इवेंट को चालू करने के लॉजिक में बदलाव किया गया (2550048)
एपीआई में हुए बदलाव
MacrobenchmarkRule.measureRepeated()के लिए, एक्सपेरिमेंट के तौर पर इस्तेमाल किए जा रहे मौजूदाPerfettoConfigआर्ग्युमेंट को नएExperimentalConfigऑब्जेक्ट में ले जाया गया.
गड़बड़ियां ठीक की गईं
- बार-बार कोशिश करने की संख्या बढ़ाएं
lockClocks.sh(99e9dac) - अगर
nonMinifiedऔर बेंचमार्क बिल्ड टाइप पहले से मौजूद हैं, तो उन्हें न बनाएं. बग की वजह से,nonMinifiedऔर बेंचमार्क बिल्ड टाइप मौजूद होने पर भी, उन्हें फिर से बनाया जा रहा था. (e75f0a5) TraceSectionMetricनतीजों में से, ऐसे स्लाइस को अनदेखा करें जो खत्म नहीं होते. (a927d20)- एम्युलेटर की जांच करने की सुविधा को बेहतर बनाया गया है, ताकि
sdk_प्रीफ़िक्स को ध्यान में रखा जा सके. (1587de8) FrameTimingGfxInfoMetricमें, नहीं चल रहे पैकेज को 'क्लियर किया गया' के तौर पर मार्क करें. (35cc79c)- गैर-निर्देश इवेंट के लिए,
androidx.benchmark.cpuEventCounterसे खराब वैल्यू जनरेट होने की समस्या ठीक की गई. (06edd59) resumeTiming/runWithTimingDisabledको ठीक करें, ताकि मेट्रिक की प्राथमिकता के क्रम का पालन किया जा सके. साथ ही, कम प्राथमिकता वाली मेट्रिक को रोकने/फिर से शुरू करने से, ज़्यादा प्राथमिकता वाली मेट्रिक के नतीजों पर पड़ने वाले असर को काफ़ी कम किया जा सके. उदाहरण के लिए, अगरcpuEventCounter.enableइंस्ट्रुमेंटेशन आर्ग्युमेंट के ज़रिए सीपीयू परफ़ॉर्मेंस काउंटर का इस्तेमाल किया जा रहा है, तो रोकने/फिर से शुरू करने पर timeNs में अब ज़्यादा कमी नहीं आएगी. (5de0968)
वर्शन 1.3
वर्शन 1.3.4
26 मार्च, 2025
androidx.benchmark:benchmark-*:1.3.4 रिलीज़ हो गया है. वर्शन 1.3.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बेंचमार्क बेसलाइन Gradle प्लगिन में, Gradle प्रोजेक्ट आइसोलेशन की काम न करने वाली सुविधाओं को ठीक किया गया. (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 टेस्ट लैब (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}")
}
}
}
साथ ही, बनाए गए एफ़टीएल डिवाइस को बेसलाइन प्रोफ़ाइल एक्सटेंशन में जोड़ना होगा:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
वर्शन 1.3.1
18 सितंबर, 2024
androidx.benchmark:benchmark-*:1.3.1 रिलीज़ हो गया है. वर्शन 1.3.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बेसलाइन प्रोफ़ाइल से जुड़ी सभी चेतावनियों को छिपाने के लिए, gradle प्रॉपर्टी
androidx.baselineprofile.suppressWarningsजोड़ी गई (I7c36e, b/349646646) - बेसलाइन प्रोफ़ाइल Gradle प्लगिन को ठीक किया गया, ताकि रैपर बनाने के बजाय, ऐप्लिकेशन से बनाए गए मौजूदा
nonMinified…औरbenchmark…का इस्तेमाल किया जा सके. (Ia8934, b/361370179) - एम्युलेटर पर
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 पर सेट करें. हालांकि, हमारा सुझाव है कि सीआई रन के लिए ऐसा न करें, क्योंकि एएनआर की वजह से लंबे सीआई रन में समस्या आ सकती है.
- यूज़र इंटरफ़ेस (यूआई) थ्रेड के बेंचमार्क (जैसे, Compose/View यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करने वाले बेंचमार्क) के लिए,
- काट-छांट
- काट-छांट की सुविधा चालू होने पर, माइक्रोबेंचमार्किंग को बेहतर बनाने के लिए, एम्बेड किए गए ProGuard नियम
- लाइब्रेरी मॉड्यूल में काट-छांट/R8 के लिए, Android Gradle प्लगिन (AGP) 8.3 की ज़रूरत होती है. इसे
build.gradleमेंandroid.buildTypes.release.androidTest.enableMinificationकी मदद से चालू किया जा सकता है - एक्सपेरिमेंट के तौर पर उपलब्ध
BlackHole.consume()एपीआई को जोड़ा गया, ताकि डेड कोड को हटाने से रोका जा सके (If6812, b/286091643)
- मेट्रिक
- सीपीयू इवेंट काउंटर की एक्सपेरिमेंटल सुविधा (
perf_event_openसे मिलने वाली मेट्रिक. इसके लिए, प्लैटफ़ॉर्म के ज़्यादातर वर्शन पर रूट ऐक्सेस की ज़रूरत होती है),InstrumentationArgumentandroidx.benchmark.cpuEventCounter.enableके ज़रिए ऐक्सेस किया जा सकता है (इसेtrueपर सेट किया जा सकता है). साथ ही,androidx.benchmark.cpuEventCounter.eventsको (Instructions,CpuCycles) पर सेट किया जा सकता है. यह सुविधा, कुछ userdebug एम्युलेटर पर काम करनी चाहिए. हालांकि, यह सुविधा सभी उपलब्ध एम्युलेटर पर काम करती है या नहीं, इसकी जांच नहीं की गई है
- सीपीयू इवेंट काउंटर की एक्सपेरिमेंटल सुविधा (
Macrobenchmark में 1.2.0 के बाद किए गए बदलाव
- मैक्रोबेंचमार्क के लिए, तरीकों की सूची को पूरी तरह से बदला गया.
- अब तरीकों की सूची,
measureBlockकी अवधि तक सीमित है. साथ ही, अगर प्रोसेस कई बार शुरू होती है, तो यह कई सेशन कैप्चर कर सकती है. - पहले, तरीकों की सूची सिर्फ़
StartupMode.COLDमानदंड के लिए काम करती थी. साथ ही, यहmeasureBlocksके लिए कुछ भी कैप्चर नहीं करती थी, जिससे टारगेट प्रोसेस रीस्टार्ट नहीं होती थी - मैक्रोबेंचमार्क में फ़्लश किए गए फ़िक्स्ड तरीके के ट्रेस, ताकि धीमी परफ़ॉर्मेंस वाले डिवाइसों पर भी, तरीके के सभी ट्रेस कैप्चर किए जा सकें और मान्य हों. (I6349a, b/329904950)
- अब तरीकों की सूची,
- प्रोसेस बंद होने पर, अलग-अलग
warmUpइटरेशन के दौरान एआरटी प्रोफ़ाइल को सही तरीके से डंप किया जाता है, ताकिCompilationMode.Partial(warmup=N)मेज़रमेंट ज़्यादा सटीक हों. (I17923) - Drop Shader ब्रॉडकास्ट न हो पाने का मैसेज
- शेडर ब्रॉडकास्ट करने में गड़बड़ी होने पर दिखने वाले मैसेज में, डीबग करने से जुड़े सुझाव जोड़े गए
ProfileInstaller1.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) - रुकावटों को कम करने के लिए, Macrobenchmark चलाने से पहले बैकग्राउंड में चल रहे 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 / अपवाद लेबल जोड़े गए. इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. इसलिए, कुछ गड़बड़ियां दिखती हैं और अन्य गड़बड़ियों का पता नहीं चलता. इससे सिर्फ़ यह समझने में आसानी होती है कि गड़बड़ी क्यों हुई. आम तौर पर, जिन ऐप्लिकेशन में
Log.w()और स्टार्टअप मेट्रिक रिपोर्ट नहीं होती हैं उनमें नॉन-फ़्रेम इवेंट मौजूद नहीं होते. साथ ही, फ़्रेम टाइमिंग की जानकारी (यूआई/आरटी स्लाइस से) को छोड़कर, स्टार्टअप का पता चलने पर अपवाद थ्रो किए जाते हैं. (Id240f, b/329145809) frameCountमेंFrameTimingMetricमेज़रमेंट जोड़ा गया है. इससे उन स्थितियों का पता लगाने में मदद मिलती है जहां जनरेट किए गए फ़्रेम की संख्या में बदलाव होने की वजह से, मेज़रमेंट में बदलाव होता है. जैसे, नए ऐनिमेशन जोड़े जाने या अमान्य होने की समस्याएं ठीक होने पर. (I1e5aa)- यह साफ़ तौर पर बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर, ट्रैकिंग के लिए
frameOverrunMsको पसंदीदा मेट्रिक के तौर पर क्यों चुना जाता है. (I18749, b/329478323) - इस अपडेट में, ट्रेस की शुरुआत और आखिर में मौजूद ऐसे फ़्रेम को एक साथ जोड़ा जा सकता है जो पूरे नहीं हुए हैं. इससे, उन्हें एक ही बहुत लंबे फ़्रेम के तौर पर गलत तरीके से रिपोर्ट किया जाएगा. इस समस्या को ठीक किया गया है. (I39353, b/322232828)
- फ़्रेम जनरेट न होने पर,
FrameTimingMetricगड़बड़ी को बेहतर बनाएं. साथ ही, मेट्रिक पार्स करने में गड़बड़ी होने पर, समस्या का पता लगाने में मदद करने के लिए, हमेशा ट्रेस करने के लिए लिंक आउटपुट करें. (I956b9) FrameTimingMetricमें क्रैश होने की समस्या को ठीक किया गया है. इस समस्या की वजह से, फ़्रेम आईडी को पार्स नहीं किया जा पा रहा था. खास तौर पर, ओईएम के कुछ डिवाइसों पर. (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) BaselineProfilegradle प्लगिन प्रॉपर्टी ओवरराइड करने की समस्या ठीक की गई है. इससेnonMinifiedया बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाने पर, बेसलाइन प्रोफ़ाइल जनरेट करने और बेंचमार्किंग की सुविधा चालू की जा सकेगी. (Ib8f05, b/324837887)- AGP 8.3.0-alpha15 से पहले के वर्शन में, एएआर में लाइब्रेरी की बेसलाइन प्रोफ़ाइलें शामिल करने से जुड़ी समस्या को ठीक किया गया. (I1d2af, b/313992099)
- जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल के आउटपुट यूआरएल को ठीक किया गया. (I802e5, b/313976958)
1.2.0 के बाद किए गए अन्य अहम बदलाव
- ट्रेस कैप्चर करना
- गड़बड़ी से लॉग की गई चेतावनी तक, EXITCODE 2 की गड़बड़ी को कम किया गया
- बेंचमार्क में, एआईडीएल ट्रेसिंग की सुविधा को डिफ़ॉल्ट रूप से चालू किया गया. इसके लिए, एपीआई 28 की ज़रूरत होती है (Ia0af2, b/341852305)
- बेंचमार्क में, पोर्टर टैग ट्रेसिंग की सुविधा डिफ़ॉल्ट रूप से चालू करें. उदाहरण के लिए, इसमें वेक लॉक ट्रेसपॉइंट कैप्चर किए जाते हैं. (Icfe44, b/286551983)
- धीमी परफ़ॉर्मेंस वाले डिवाइसों पर ट्रेसिंग शुरू करते समय क्रैश होने से बचने के लिए, ट्रेस कैप्चर शुरू होने की टाइम आउट अवधि बढ़ाई गई (I98841, b/329145808)
- सार्वजनिक एपीआई
PerfettoTraceProcessor.Session.queryMetricsएपीआई जोड़े गए हैं. इनमें JSON, textproto, और प्रोटो बाइनरी (अनडिकोडेड) वैरिएंट शामिल हैं. इनकी मदद से,TraceProcessorमें पहले से मौजूद मेट्रिक के बारे में क्वेरी की जा सकती है (I54d7f, b/304038382) - Perfetto ट्रेस रिकॉर्ड पर, ट्रेसिंग शुरू होने पर डेटा ब्लॉक करने की सुविधा चालू करें. इससे ट्रेसिंग की शुरुआत में डेटा के मौजूद न होने का जोखिम कम हो जाता है. यह सिर्फ़ एपीआई 33 और इसके बाद के वर्शन पर काम करता है. (Ie6e41, b/310760059)
- JSON फ़ॉर्मैट में आउटपुट
- 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)
- JSON आउटपुट में
profilerOutputसूची जोड़ी गई, ताकि प्रोफ़ाइलिंग ट्रेस (जैसे, Perfetto, तरीकों की सूची) के लिए टूल का इस्तेमाल आसानी से किया जा सके (I05ddd, b/332604449) - बेंचमार्क मॉड्यूल में Android Test Orchestrator का इस्तेमाल करने पर, चेतावनी जोड़ी गई है. ऐसा इसलिए, क्योंकि इससे हर मॉड्यूल की आउटपुट JSON फ़ाइलों को बार-बार ओवरराइट किया जाएगा. (Ia1af6, b/286899049)
- फ़ाइल के नाम 200 वर्णों से ज़्यादा होने पर गड़बड़ी का मैसेज दिखाएं. इससे, फ़ाइलें लिखते समय या पोस्ट-प्रोसेसिंग के दौरान, क्रैश होने की समस्या से बचा जा सकता है. (I4a5ab)
- JSON आउटपुट में, बेंचमार्क के कॉन्टेक्स्ट में अतिरिक्त जानकारी जोड़ी गई है:
वर्शन 1.3.0-rc01
7 अगस्त, 2024
androidx.benchmark:benchmark-*:1.3.0-rc01 रिलीज़ हो गया है. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.benchmark.cpuEventCounterसे, निर्देश वाले इवेंट के अलावा अन्य इवेंट के लिए गलत वैल्यू जनरेट होने की समस्या ठीक की गई (I7386a, b/286306579)- मेट्रिक के प्राथमिकता क्रम का पालन करने के लिए,
resumeTiming/runWithTimingDisabledको ठीक किया गया है. साथ ही, कम प्राथमिकता वाली मेट्रिक को रोकने/फिर से शुरू करने से, ज़्यादा प्राथमिकता वाली मेट्रिक के नतीजों पर पड़ने वाले असर को काफ़ी कम किया गया है. उदाहरण के लिए, अगरcpuEventCounter.enableइंस्ट्रुमेंटेशन आर्ग्युमेंट की मदद से सीपीयू परफ़ॉर्मेंस काउंटर का इस्तेमाल किया जा रहा है, तो 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) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह काम अपने-आप हो जाता है. एजीपी का इस्तेमाल न करने वाले क्लाइंट को, D8 के वर्शन 8.1 या इसके बाद वाले वर्शन पर अपडेट करने की सलाह दी जाती है. ज़्यादा जानकारी के लिए यह लेख देखें. (I9496c, b/345472586)
- पैकेज का नाम इंस्ट्रूमेंटेशन आर्ग्युमेंट के तौर पर भेजने के लिए, एजीपी वर्शन की जांच करने की सुविधा जोड़ी गई. एजीपी 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)
गड़बड़ियां ठीक की गईं
- एजीपी के सुझाए गए ज़्यादा से ज़्यादा वर्शन को 9.0.0-alpha01 पर सेट किया गया. (I5bbb0)
- बेंचमार्क कॉन्टेक्स्ट में कंपाइलेशन मोड जोड़ा गया (If5612, b/325512900)
- डिफ़ॉल्ट रूप से एआईडीएल ट्रेसिंग चालू करें (इसके लिए एपीआई 28 की ज़रूरत होती है) (Ia0af2, b/341852305)
- JSON आउटपुट में, बेंचमार्क के संदर्भ में अतिरिक्त जानकारी जोड़ी गई:
context.artMainlineVersion- Art मेनलाइन मॉड्यूल का इंटिजर वर्शन (अगर डिवाइस पर मौजूद है, तो -1)context.build.id- इसके बराबर हैandroid.os.Build.IDcontext.build.version.codename- बराबर हैandroid.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename- रिलीज़ से पहले के कोडनेम के पहले अक्षर से मेल खाता है (रिलीज़ के लिए तैयार बिल्ड पर भी) (Ie5020)
androidx.benchmark.profiling.sampleDurationSecondsका पालन करने के लिए,StackSamplingको ठीक किया गया (Ib1d53)- मैक्रो->कॉमन डिपेंडेंसी को
api()में बदलें, ताकिPerfettoTraceऔरPerfettoConfigजैसे उदाहरणों का इस्तेमाल करना आसान हो. (Icdae3, b/341851833) - पक्का करें कि
mergeArtProfileऔरmergeStartupProfileटास्क, हमेशा बेसलाइन प्रोफ़ाइल जनरेट होने का इंतज़ार करें. (I623d6, b/343086054) - यह तय करते समय कि वैरिएंट को चालू करना है या नहीं, वैरिएंट की चालू होने की स्थिति को ध्यान में रखें. (I5d19e, b/343249144)
- Perfetto ट्रेस प्रोसेसर के लिए, डिफ़ॉल्ट रूप से शुरू होने का टाइम आउट बढ़ाया गया. (I87e8c, b/329145808)
वर्शन 1.3.0-alpha05
14 मई, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05 रिलीज़ हो गया है. वर्शन 1.3.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब मैक्रोबेंच मेट्रिक, सभी इटरेशन के लिए शून्य वैल्यू दिखाती है, तब ज़्यादा साफ़ तौर पर अपवाद दिखाएं (Iab58f, b/314931695)
- माइक्रोबेंच प्रोगार्ड नियमों में, समस्या हल करने के अतिरिक्त नियम जोड़े गए हैं. इनमें लिसनर नियमों और अन्य चेतावनियों / गड़बड़ियों के लिए सहायता शामिल है. (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) - JSON आउटपुट में
profilerOutputको जोड़ा गया, ताकि प्रोफ़ाइलिंग ट्रेस (जैसे, perfetto, तरीकों की सूची) के लिए टूल का इस्तेमाल करना आसान हो सके. (I05ddd, b/332604449) - Perfetto कॉन्फ़िगरेशन को बेंचमार्क करने के लिए, पावर टैग जोड़ा गया. यह वेकलॉक ट्रेसपॉइंट कैप्चर करता है. उदाहरण के लिए, वेकलॉक ट्रेसपॉइंट. (Icfe44, b/286551983)
- inst आर्ग्युमेंट
androidx.benchmark.profiling.skipWhenDurationRisksAnrजोड़ा गया है. इसे फ़ॉल्स पर सेट किया जा सकता है, ताकि अनुमानित अवधि की वजह से एएनआर होने पर, तरीके के ट्रेस को स्किप न किया जा सके. सीआई रन में इससे बचने का सुझाव दिया जाता है. - एक्सपेरिमेंट के लिए inst आर्ग्युमेंट
androidx.benchmark.profiling.perfCompare.enableजोड़ा गया है. मेज़रमेंट और प्रोफ़ाइलिंग फ़ेज़ के बीच तुलना करने के लिए, इसे सही पर सेट करें. यह सुविधा, तरीकों की सूची बनाने के ओवरहेड का आकलन करने में मददगार होती है. (I61fb4, b/329146942)
एपीआई में हुए बदलाव
TraceSectionMetric.Modeको सील की गई क्लास में बदला गया, ताकि आने वाले समय में, I71f7b स्टेटमेंट के दौरान, बिना किसी रुकावट के इसे बेहतर बनाया जा सकेTraceSectionMetric.Mode.Averageऔर.Countको जोड़ा गया. साथ ही, आर्ग्युमेंट को फिर से क्रम में लगाया गया, ताकि ज़्यादा सामान्य आर्ग्युमेंट (मोड) आर्ग्युमेंट की सूची में पहले हो. इससे पैरामीटर के नाम बताने की ज़रूरत कम हो गई. (Ibf0b0, b/315830077, b/322167531)- रिटर्न टाइप से मैच करने के लिए,
Metric.getResultका नाम बदलकरgetMeasurementsकिया गया (I42595)
गड़बड़ियां ठीक की गईं
automaticGenerationDuringBuildके बंद होने पर, यह पक्का करने के लिए समस्या को ठीक किया गया कि बेंचमार्क, जनरेट की गई बेसलाइन प्रोफ़ाइलों का इस्तेमाल करें (Ic144f, b/333024280)BaselineProfileGradle प्लगिन की प्रॉपर्टी को ओवरराइड करने की समस्या ठीक की गई है. इससे,nonMinifiedया बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाने पर, बेसलाइन प्रोफ़ाइल जनरेट करने और बेंचमार्किंग की सुविधा चालू की जा सकती है. (Ib8f05, b/324837887)- मैक्रोबेंचमार्क में फ़्लश किए गए फ़िक्स्ड तरीके के ट्रेस, ताकि धीमी परफ़ॉर्मेंस वाले डिवाइसों पर भी, तरीके के सभी ट्रेस कैप्चर किए जा सकें और मान्य हों. (I6349a, b/329904950)
- Perfetto ट्रेस रिकॉर्ड पर, ट्रेसिंग शुरू होने पर डेटा ब्लॉक करने की सुविधा चालू करें. इससे ट्रेसिंग की शुरुआत में डेटा के मौजूद न होने का जोखिम कम हो जाता है. यह सिर्फ़ एपीआई 33 और इसके बाद के वर्शन पर काम करता है. (Ie6e41, b/310760059)
- बेंचमार्क मॉड्यूल में Android के जांच करने वाले टूल का इस्तेमाल करने पर, चेतावनी जोड़ी गई है. ऐसा इसलिए, क्योंकि इससे हर मॉड्यूल की आउटपुट JSON फ़ाइलों को बार-बार ओवरराइट किया जाएगा. (Ia1af6, b/286899049)
- Studio के आउटपुट में एक जैसा फ़ॉर्मैट बनाए रखने के लिए, हज़ार वाले सेपरेटर के तौर पर ',' (कॉमा) का इस्तेमाल करें. डिवाइस की स्थान-भाषा को अनदेखा करें (I3e921, b/313496656)
TraceSectionMetricअबTrace.{begin|end}AsyncSectionका इस्तेमाल करके बनाई गई स्लाइस के साथ काम करता है. (I91b32, b/300434906)- स्टार्टअप का पता लगाने में हुई सभी गड़बड़ियों के लिए, log.w / exception लेबल जोड़े गए. इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता है. इसलिए, कुछ गड़बड़ियां दिखती हैं और कुछ गड़बड़ियां स्टार्टअप का पता लगाने में चुपचाप विफल हो जाती हैं. इससे इसे समझना आसान हो जाता है. आम तौर पर, जिन ऐप्लिकेशन में
Log.w()और स्टार्टअप मेट्रिक रिपोर्ट नहीं होती हैं उनमें नॉन-फ़्रेम इवेंट मौजूद नहीं होते. साथ ही, फ़्रेम टाइमिंग की जानकारी (यूआई/आरटी स्लाइस से) को छोड़कर, स्टार्टअप का पता चलने पर अपवाद थ्रो किए जाते हैं. (Id240f, b/329145809) - रुकावटों को कम करने के लिए, Macrobenchmark चलाने से पहले बैकग्राउंड में चल रहे 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) TraceSectionMetricAPI में कई बदलाव किए गए हैं: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) को ठीक करने के लिए, डेटा सोर्स के टाइम आउट में बदलाव किया गयाProfileInstaller1.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)- अब Macrobenchmark, टारगेट ऐप्लिकेशन के लिए
1 secondतक इंतज़ार करता है, ताकि वह एआरटी प्रोफ़ाइल को फ़्लश कर सके. इससे पहले, यह500 msतक इंतज़ार करता था. (I85a50, b/316082056) - फ़्रेम जनरेट न होने पर,
FrameTimingMetricगड़बड़ी को बेहतर बनाएं. साथ ही, मेट्रिक पार्स करने में गड़बड़ी होने पर, समस्या का पता लगाने में मदद करने के लिए, हमेशा ट्रेस करने के लिए लिंक आउटपुट करें. (I956b9) FrameTimingMetricमें क्रैश होने की समस्या को ठीक किया गया है. यह समस्या, फ़्रेम आईडी को पार्स न कर पाने की वजह से हो रही थी. खास तौर पर, ओईएम के कुछ डिवाइसों पर. (Ia24bc, b/303823815, b/306235276)FrameMetricsमें जांच की सख्ती को कम किया गया है. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई है. (Iadede)
वर्शन 1.2
वर्शन 1.2.4
17 अप्रैल, 2024
androidx.benchmark:benchmark-*:1.2.4 रिलीज़ हो गया है. वर्शन 1.2.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बेंचमार्क वैरिएंट में, बेसलाइन प्रोफ़ाइल srcset सेट अप न होने की समस्या को ठीक किया गया. साथ ही, लाइब्रेरी में
automaticGenerationDuringBuildको ठीक करता है, जिससे सर्कुलर डिपेंडेंसी होती है. (I28ab7, b/333024280) am force-stopका इस्तेमाल करके, उन ऐप्लिकेशन को बंद करें जो सिस्टम ऐप्लिकेशन नहीं हैं. जैसे, सिस्टम यूज़र इंटरफ़ेस (यूआई) या लॉन्चर. इस अपडेट में,StartupMode.COLDके बेंचमार्क क्रैश होने की समस्या को ठीक किया गया है. यह समस्या "Package $package must not be running prior to cold start!" की वजह से हो रही थी. ऐसा इसलिए हो रहा था, क्योंकि प्रोसेस पूरी तरह से बंद नहीं हो रही थी. (I5e028)
वर्शन 1.2.3
24 जनवरी, 2024
androidx.benchmark:benchmark-*:1.2.3 रिलीज़ हो गया है. वर्शन 1.2.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- AGP का वर्शन 8.3.0 या इसके बाद का वर्शन होने पर, Baseline Profile Gradle प्लगिन से अपवाद हटाया गया.
- AGP 8.3.0-alpha15 से पहले के वर्शन में, एएआर में लाइब्रेरी बेसलाइन प्रोफ़ाइलें शामिल करने से जुड़ी समस्या को ठीक किया गया.
वर्शन 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आर्ग्युमेंट जोड़ा गया है. उदाहरण के लिए, Compose की रीकंपोज़िशन ट्रेसिंग. ध्यान दें किStartupMode.COLDके साथ इस्तेमाल करने पर, टाइमिंग पर काफ़ी असर पड़ेगा. ऐसा इसलिए, क्योंकि ऐप्लिकेशन के स्टार्टअप के दौरान, ट्रेसिंग लाइब्रेरी लोड और चालू हो जाती है.
ज़रूरी शर्तें
- Macrobenchmark को अब टारगेट ऐप्लिकेशन में
ProfileInstaller1.3.0 या इसके बाद के वर्शन की ज़रूरत होती है, ताकि प्रोफ़ाइल कैप्चर / रीसेट करने और शेडर कैश मेमोरी को मिटाने की सुविधा चालू की जा सके.
- Macrobenchmark को अब टारगेट ऐप्लिकेशन में
नए एक्सपेरिमेंटल Metrics API
- एक्सपेरिमेंट के तौर पर
TraceSectionMetricजोड़ा गया है. इसकी मदद से, आपके ऐप्लिकेशन में मौजूदtrace("") {}ब्लॉक से टाइमिंग की सामान्य जानकारी निकाली जा सकती है. इसके अलावा, PerfettoTraceProcessorकी पूरी क्वेरी क्षमता का फ़ायदा उठाने के लिए, TraceMetric का इस्तेमाल किया जा सकता है. - पावर के इस्तेमाल की जानकारी कैप्चर करने के लिए, एक्सपेरिमेंटल
PowerMetricजोड़ा गया - पेज में गड़बड़ियों की संख्या का पता लगाने के लिए, एक्सपेरिमेंट के तौर पर
MemoryCountersMetricजोड़ा गया - एक्सपेरिमेंट के तौर पर
PerfettoTraceProcessorएपीआई जोड़ा गया है. इसका इस्तेमाल, सिस्टम ट्रेस (Perfetto ट्रेस) से मेट्रिक निकालने के लिए किया जाता है
- एक्सपेरिमेंट के तौर पर
समाधान
- हमने एक ऐसी समस्या को ठीक किया है जिसमें एक से ज़्यादा APK से इंस्टॉल किए गए ऐप्लिकेशन (जैसे, ऐप्लिकेशन बंडल से) से प्रोफ़ाइलें इंस्टॉल या एक्सट्रैक्ट करते समय ऐप्लिकेशन क्रैश हो जाते थे.
FrameTimingMetricको ठीक किया गया, ताकि वह अलग-अलग फ़्रेम आईडी वाले फ़्रेम को अनदेखा कर सके. आम तौर पर, एपीआई 31 और इसके बाद के वर्शन पर रिपल के दौरान फ़्रेम (I747d2, b/279088460)- 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)
- एआरटी मेथड ट्रेस को perfetto फ़ॉर्मैट में बदलते समय, ओओएम क्रैश की समस्या को ठीक करना. (I106bd, b/296905344)
- (मैक्रोबेंचमार्क) Studio टेस्ट आउटपुट में लिंक किए जाने पर, तरीकों की सूची के लेबल को साफ़ तौर पर बताया गया है. साथ ही, तरीकों की सूची के फ़ाइल नामों को ठीक किया गया है, ताकि वे डिवाइस/होस्ट पर यूनीक हों. इससे, एक से ज़्यादा बेंचमार्क चलाने पर, उन्हें ओवरराइट नहीं किया जाएगा. (I08e65, b/285912360)
- इस कुकी का इस्तेमाल यह पक्का करने के लिए किया जाता है कि बेसलाइन प्रोफ़ाइल कैप्चर करते समय डिवाइस ऐक्टिव हो. (I503fc)
वर्शन 1.2.0-beta05
30 अगस्त, 2023
androidx.benchmark:benchmark-*:1.2.0-beta05 रिलीज़ हो गया है. वर्शन 1.2.0-beta05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- बेसलाइन प्रोफ़ाइल 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)
- एपीआई 31 और इसके बाद के वर्शन पर, मैक्रोबेंचमार्क NOT-PROFILEABLE गड़बड़ी को हटाया गया. साथ ही, eng/userdebug रूट किए गए डिवाइसों पर, प्रोफ़ाइल किए जा सकने वाले ऐप्लिकेशन की जांच को स्किप किया गया. (I2abac, b/291722507)
- Dex लेआउट ऑप्टिमाइज़ेशन का इस्तेमाल करते समय, स्टार्टअप प्रोफ़ाइल के नियमों को अब बेसलाइन प्रोफ़ाइल के नियमों के तौर पर भी माना जाता है. (aosp/2684246, b/293889189)
वर्शन 1.2.0-beta02
26 जुलाई, 2023
androidx.benchmark:benchmark-*:1.2.0-beta02 रिलीज़ हो गया है. वर्शन 1.2.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- माइक्रोबेंच कस्टम मेट्रिक और कॉन्फ़िगरेशन (जैसे, प्रोफ़ाइलर और ट्रेसिंग) के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई जोड़े गए. (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()एपीआई का नाम बदलकरBaselineProfileRule.collect()कर दिया गया है. (I4b665)
गड़बड़ियां ठीक की गईं
androidx.benchmark.profiling.mode = MethodTracingके लिए Macrobenchmark की सुविधा. (I7ad37, b/285912360)- माइक्रोबेंचमार्क प्रोफ़ाइलिंग को एक अलग फ़ेज़ में ले जाया गया है. इसलिए, यह मेज़रमेंट को बदलने के बजाय, मेज़रमेंट के बाद क्रम से होती है. कैप्चर किए गए Perfetto ट्रेस में, अब
MethodTracingट्रेस सेक्शन भी शामिल हैं. हालांकि, इसके लिए ज़रूरी है कि वे मौजूद हों. (I9f657, b/285014599) TraceSectionMetricमेंMode.Sumके साथ गिनती का मेज़रमेंट जोड़ें. (Ic121a, b/264398606)
वर्शन 1.2.0-alpha15
7 जून, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15 रिलीज़ हो गया है. वर्शन 1.2.0-alpha15 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टारगेट ऐप्लिकेशन की मेमोरी के इस्तेमाल को ट्रैक करने के लिए, एक्सपेरिमेंट के तौर पर
MemoryUsageMetricजोड़ा गया. (I56453, b/133147125, b/281749311) 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का इस्तेमाल करके, Macrobenchmark में कॉल स्टैक सैंपलिंग की सुविधा जोड़ी गई है. (I1d13b, b/282188489) - Android U (एपीआई 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)
- Perfetto ट्रेस के कॉन्टेंट के आधार पर, पूरी तरह से कस्टम मेट्रिक तय करने के लिए, एक्सपेरिमेंट के तौर पर नया
TraceMetricएपीआई जोड़ा गया. (I4ce31, b/219851406) - बेंचमार्क के दौरान पेज फ़ॉल्ट की संख्या का पता लगाने के लिए, एक्सपेरिमेंटल मेट्रिक जोड़ें. (I48db0)
वर्शन 1.2.0-alpha12
22 मार्च, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12 रिलीज़ हो गया है. वर्शन 1.2.0-alpha12 में ये बदलाव शामिल हैं.
नई सुविधाएं
- बेसलाइन प्रोफ़ाइल Gradle प्लगिन का नया वर्शन, ऐल्फ़ा वर्शन में रिलीज़ किया गया है. इससे बेसलाइन प्रोफ़ाइल जनरेट करना आसान हो जाता है. साथ ही, डेवलपर के वर्कफ़्लो को भी आसान बनाया जा सकता है.
एपीआई में हुए बदलाव
- एपीआई 21 और 22 पर Perfetto ट्रेसिंग की सुविधा हटा दी गई है. इसमें Microbenchmarks और एक्सपेरिमेंट के तौर पर उपलब्ध
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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने
MacrobenchmarkRuleऔरBaselineProfileRuleमें क्रैश होने की समस्या को ठीक कर दिया है. यह समस्या, कई APK वाले ऐप्लिकेशन बंडल से प्रोफ़ाइलों को फिर से इंस्टॉल करने या उन्हें निकालने के दौरान आती थी. (I0d8c8, b/270587281)
वर्शन 1.2.0-alpha10
22 फ़रवरी, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10 रिलीज़ हो गया है. वर्शन 1.2.0-alpha10 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Android 14 और इसके बाद के वर्शन पर, Macrobenchmark अब टारगेट ऐप्लिकेशन को फिर से इंस्टॉल नहीं करता है, ताकि कंपाइलेशन की स्थिति को रीसेट किया जा सके. ऐसा नई प्लैटफ़ॉर्म सुविधा की वजह से होता है. पहले, रूट किए गए डिवाइस का होना ज़रूरी था. इसके अलावा, हर बेंचमार्क के चलने से पहले, ऐप्लिकेशन की सभी स्थितियों (जैसे, उपयोगकर्ता का लॉगिन) को हटाना पड़ता था. (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सभी बेंचमार्क / बेसलाइन प्रोफ़ाइल जनरेशन को बंद करने के लिए,
Noneकोandroidx.benchmark.enabledRulesइंस्ट्रुमेंटेशन आर्ग्युमेंट में पास करने की सुविधा चालू की गई. (I3d7fd, b/258671856) - ऐप्लिकेशन मॉड्यूल (यानी कि अपने-आप इंस्ट्रुमेंट न होने वाले टेस्ट APK) में
PerfettoTraceकैप्चर करने की समस्या ठीक की गई (I12cfc) - Studio आउटपुट में, बेसलाइन प्रोफ़ाइल के adb pull आर्ग्युमेंट के क्रम को ठीक किया गया (I958d1, b/261781624)
- Arm एम्युलेटर एपीआई 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- जांच के दौरान, Perfetto ट्रेस (इन्हें सिस्टम ट्रेस भी कहा जाता है) को कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर नए एपीआई
PerfettoTrace.record {}औरPerfettoTraceRuleजोड़े गए हैं. इससे जांच के दौरान ऐप्लिकेशन के काम करने के तरीके और परफ़ॉर्मेंस का पता लगाया जा सकता है. (I3ba16) BaselineProfileRuleअब पैकेज प्रीफ़िक्स की सूची के बजाय, फ़िल्टर प्रेडिकेट स्वीकार करता है. इससे टेस्ट को फ़िल्टर करने पर पूरा कंट्रोल मिलता है. (I93240)- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई
BaselineProfileRule.collectStableBaselineProfileजोड़ें. यह एपीआई तब तक इंतज़ार करता है, जब तक बेसलाइन प्रोफ़ाइल N बार दोहराए जाने के लिए स्टेबल नहीं हो जाती. (I923f3) BaselineProfileRuleका इस्तेमाल करके बेसलाइन प्रोफ़ाइलें जनरेट करते समय, आउटपुट फ़ाइल के नाम के प्रीफ़िक्स को तय करने की सुविधा जोड़ी गई. (I7b59f, b/260318655)
गड़बड़ियां ठीक की गईं
- फ़ाइल आउटपुट लिखने की सुरक्षा को बेहतर बनाएं. इससे आउटपुट फ़ाइलों को बिना किसी सूचना के लिखे जाने / जोड़े जाने से रोका जा सकेगा. खास तौर पर, एपीआई 21/22 पर. (If8c44, b/227510293)
- फ़ाइल को सही तरीके से बनाने और उसे सही जगह पर रखने के लिए,
simpleperfट्रेस आउटपुट को ठीक करें. इससे उन समस्याओं को भी ठीक किया जा सकता है जिनमें Gradle, फ़ाइल को पुल नहीं कर पाता. (I12a1c, b/259424099) - profileinstaller के बहुत पुराना होने पर, गड़बड़ी के मैसेज को बेहतर बनाया गया. अब यह आपको एपीआई 31 से 33 पर बेसलाइन प्रोफ़ाइल मेज़र करने के लिए, profileinstaller के वर्शन (1.2.1) को अपडेट करने के लिए कहता है. यह नहीं कहता कि यह सुविधा काम नहीं करती. (Ia517f, b/253519888)
- शेल कमांड से जुड़ी कई गड़बड़ियों को ठीक किया गया. गड़बड़ी का मैसेज मिलने पर, ज़रूरी एपीआई <=23 को प्रिंट किया गया. इसमें Perfetto कैप्चर बाइनरी सेटअप और ट्रेस कैप्चर से जुड़ी गड़बड़ियां शामिल हैं (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 फ़ाइल में यह जोड़ें:
<!-- 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) - अगर मैक्रोबेंचमार्क टेस्ट APK को सेल्फ़-इंस्ट्रुमेंटिंग के तौर पर सेट अप नहीं किया गया है, तो गड़बड़ी जोड़ें. इस गड़बड़ी की वजह से, टारगेट ऐप्लिकेशन की प्रोसेस में मैक्रोबेंचमार्किंग नहीं हो पाती. इस प्रोसेस में, मैक्रोबेंच ऐप्लिकेशन को कंपाइल/बंद/कोल्ड स्टार्ट नहीं कर पाएगा. साथ ही, अपनी अनुमतियों को कंट्रोल नहीं कर पाएगा (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=truebuild.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)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, अनरूट किए गए बिल्ड पर हर मैक्रोबेंचमार्क के बीच, कंपाइल किए गए तरीके सही तरीके से रीसेट नहीं हो रहे थे. हालांकि, इसके लिए हर बार APK को फिर से इंस्टॉल करना पड़ता है. इससे हर मैक्रोबेंचमार्क के लिए, ऐप्लिकेशन का डेटा मिट जाएगा. (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.system.ErrnoException: open failed: EACCESको ठीक किया गया है. यह गड़बड़ी, Android 11 (एपीआई 30) और इसके बाद के वर्शन वाले कुछ डिवाइसों पर होती थी. यह1.2.0-alpha01से मिली गड़बड़ी को ठीक करने का एक तरीका है. (aosp/2072249)
वर्शन 1.1.0
वर्शन 1.1.0
15 जून, 2022
androidx.benchmark:benchmark-*:1.1.0 रिलीज़ हो गया है. वर्शन 1.1.0 में ये बदलाव शामिल हैं.
- यह वर्शन,
androidx.benchmark:benchmark-*:1.1.0-rc03जैसा ही है.
1.0.0 के बाद किए गए अहम बदलाव
Jetpack Macrobenchmarks के लिए सहायता उपलब्ध है. इसकी मदद से, पूरे ऐप्लिकेशन के इंटरैक्शन को मेज़र किया जा सकता है. जैसे, स्टार्टअप और स्क्रोलिंग. इससे ट्रेस कैप्चर करने की सुविधा मिलती है. साथ ही, ट्रेस सेक्शन को मेज़र किया जा सकता है.
बेसलाइन प्रोफ़ाइलों के लिए सहायता
CompilationMode.Partialका इस्तेमाल करके, बेसलाइन प्रोफ़ाइलों की परफ़ॉर्मेंस का आकलन करें.@BaselineProfileRule, ताकि किसी क्रिटिकल यूज़र जर्नी के लिए, बेसलाइन प्रोफ़ाइलें अपने-आप जनरेट हो सकें.
माइक्रोबेंचमार्क रन के दौरान, ऐलोकेशन मेट्रिक और प्रोफ़ाइलिंग की सुविधा उपलब्ध है.
वर्शन 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)
Macrobenchmarks की मदद से बेसलाइन प्रोफ़ाइलें जनरेट करते समय, 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=falseandroidx.benchmark.enabledRulesइंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़कर, मैक्रोबेंचमार्क और बेसलाइन प्रोफ़ाइल जनरेट करने वाले टेस्ट के बीच मॉड्यूल शेयर करने की सुविधा जोड़ी गई है. सिर्फ़ एक तरह का टेस्ट चलाने के लिए, 'Macrobenchmark' या 'BaselineProfile' पास करें. उदाहरण के लिए, एम्युलेटर परBaselineProfilesजनरेट करते समय. (I756b7, b/230371561)उदाहरण के लिए, आपके मैक्रोबेंचमार्क की build.gradle फ़ाइल में:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }या Gradle कमांड लाइन से:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
वर्शन 1.1.0-rc01
20 अप्रैल, 2022
androidx.benchmark:benchmark-*:1.1.0-rc01 रिलीज़ हो गया है. वर्शन 1.1.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android Studio में बेसलाइन प्रोफ़ाइल के आउटपुट लिंक, अब एक यूनीक फ़ाइल नाम का इस्तेमाल करते हैं. इस तरह, आउटपुट में हमेशा
BaselineProfileRuleके इस्तेमाल के सबसे नए नतीजे दिखते हैं. ( aosp/2057008, b/228203086 )
वर्शन 1.1.0-beta06
6 अप्रैल, 2022
androidx.benchmark:benchmark-*:1.1.0-beta06 रिलीज़ हो गया है. वर्शन 1.1.0-beta06 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Fix trace recording crash on 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 (एपीआई 29) और इसके बाद के वर्शन पर, थर्मल थ्रॉटलिंग का पता लगाने के लिए
PowerManagerका इस्तेमाल करें. इससे, थर्मल थ्रॉटलिंग का पता लगाने में फ़ॉल्स पॉज़िटिव की फ़्रीक्वेंसी काफ़ी कम हो जाती है. इसके लिए, 90 सेकंड के कूलडाउन के बाद बेंचमार्क को फिर से आज़माया जाता है. साथ ही, उपयोगकर्ता के बिल्ड पर बेंचमार्क की स्पीड काफ़ी बढ़ जाती है. यह थ्रॉटलिंग का पता भी लगाता है. ऐसा तब भी होता है, जब क्लॉक लॉक हों. हालांकि, ऐसा तब होता है, जब डिवाइस के फ़िज़िकल एनवायरमेंट के हिसाब से क्लॉक बहुत ज़्यादा लॉक हों. (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के बेसलाइन प्रोफ़ाइल आर्ग्युमेंट को एनम में बदला गया. (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.tracingJetpack एपीआई के ज़रिए) को कैप्चर नहीं करता है, ताकि नतीजों पर असर न पड़े. यह ट्रेसिंग, अस्थिरता का पता लगाने में मददगार होनी चाहिए. खास तौर पर, बेंचमार्क से बाहर के सोर्स से. (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) - मेज़ररिपीटेड इंटरफ़ेस के उस वैरिएंट को हटाता है जिसे 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एपीआई 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)
गड़बड़ियां ठीक की गईं
- एपीआई 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 को कॉल करें. जैसे, जब शुरुआती सूची के आइटम, डीबी या नेटवर्क से लोड हो जाएं. (ComponentActivity पर बिल्ड वर्शन की जांच किए बिना, reportFullyDrawn तरीका उपलब्ध है). ध्यान दें कि मेट्रिक को कैप्चर करने के लिए, आपका टेस्ट काफ़ी समय तक चलना चाहिए. 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 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Jetpack ProfileInstaller लाइब्रेरी का इस्तेमाल करके इंस्टॉल की गई प्रोफ़ाइलों के लिए, एक नया
CompilationMode.BaselineProfileजोड़ा गया. (aosp/1720930)
गड़बड़ियां ठीक की गईं
बेंचमार्क की गड़बड़ियों को छिपाने के लिए, सैंपल Gradle कोड को अपडेट किया गया है. इससे, अब ऐसे एपीआई का इस्तेमाल किया जा सकेगा जो अब भी काम करता है. साथ ही, इसमें ऐसे सिंटैक्स का इस्तेमाल किया गया है जो .gradle.kts उपयोगकर्ताओं के साथ भी काम करता है.
उदाहरण के लिए,
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
वर्शन 1.1.0-alpha02
18 मई, 2021
बेंचमार्क के वर्शन 1.1.0-alpha02 में, बेंचमार्किंग के लिए एक नया कॉम्पोनेंट जोड़ा गया है. इसका नाम Macrobenchmark है. बेंचमार्क की मदद से सीपीयू लूप को मेज़र किया जा सकता है. इसके अलावा, मैक्रोबेंचमार्क की मदद से, पूरे ऐप्लिकेशन के इंटरैक्शन को मेज़र किया जा सकता है. जैसे, स्टार्टअप और स्क्रोलिंग. साथ ही, ट्रेस कैप्चर किए जा सकते हैं. ज़्यादा जानकारी के लिए, लाइब्रेरी का दस्तावेज़ देखें.
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) - यह लाइब्रेरी, उन प्लैटफ़ॉर्म वर्शन पर JIT थ्रेड नहीं मिलने के बारे में logcat की चेतावनियों को ठीक करती है जहां यह मौजूद नहीं है. (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 वर्शन में 140 नैनोसेकंड का समय, M वर्शन में आठ नैनोसेकंड हो गया. इसे Nexus5X पर लॉक की गई क्लॉक के साथ मेज़र किया गया. यह मेट्रिक, Android Studio कंसोल आउटपुट में दिखती है. साथ ही,
- प्रोफ़ाइलिंग की सुविधा - अब बेंचमार्क रन के लिए प्रोफ़ाइलिंग डेटा कैप्चर किया जा सकता है. इससे यह पता लगाया जा सकता है कि आपका कोड धीरे-धीरे क्यों चल रहा है. बेंचमार्क, एआरटी से तरीकों की सूची या सैंपल इकट्ठा करने की सुविधा देता है. इन फ़ाइलों की जांच, Android Studio में प्रोफ़ाइलर की मदद से की जा सकती है. इसके लिए, फ़ाइल > खोलें पर जाएं.
- बेंचमार्क Gradle प्लगिन अब आसान सेटअप के लिए डिफ़ॉल्ट सेटिंग उपलब्ध कराता है:
testBuildTypeको डिफ़ॉल्ट रूप से रिलीज़ पर सेट किया गया है, ताकि कोड कवरेज के साथ पहले से मौजूद डिपेंडेंसी का इस्तेमाल करने से बचा जा सके. रिलीज़ buildType को डिफ़ॉल्ट buildType के तौर पर भी कॉन्फ़िगर किया जाता है. इससे Android Studio को पहली बार कोई प्रोजेक्ट खोलने पर, सही बिल्ड वैरिएंट को अपने-आप चुनने की अनुमति मिलती है. (b/138808399)signingConfig.debugका इस्तेमाल, डिफ़ॉल्ट हस्ताक्षर कॉन्फ़िगरेशन के तौर पर किया जाता है (b/153583269)
** गड़बड़ियां ठीक की गईं **
- वॉर्मअप ट्रांज़िशन ओवरहेड को काफ़ी कम किया गया. इसमें हर मानदंड के लिए पहला मेज़रमेंट, अन्य की तुलना में आर्टिफ़िशियल तौर पर ज़्यादा था. यह समस्या, बहुत छोटे बेंचमार्क (एक माइक्रोसेकंड या उससे कम) में ज़्यादा देखने को मिली. (b/142058671)
- कमांड लाइन से चलाने पर, हर बेंचमार्क के लिए
InstrumentationResultParserगड़बड़ी ठीक की गई. (I64988, b/154248456)
पहले से मालूम समस्याएं
- कमांड लाइन, बेंचमार्क के 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 सैंपल में
- जेआईटी-अवेयर वॉर्मअप और लूपिंग
- प्रोसेस होने के बाद के लिए, 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 में ये बदलाव शामिल हैं.
नई सुविधाएं
- बेंचमार्क में सिस्ट्रेस ट्रेसिंग की सुविधा जोड़ी गई
गड़बड़ियां ठीक की गईं
- मेट्रिक के अस्थिर होने की समस्या को ठीक किया गया. इसमें, प्राथमिकता कम होने की वजह से वॉर्म अप से पहले जेआईटी पूरा नहीं होता था (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इंस्ट्रुमेंटेशन आर्ग्युमेंट के इस्तेमाल का सही तरीके से पता लगाया जा सकता है. इससे यह पता चलता है कि एजीपी, डेटा कॉपी को कब मैनेज करेगा. - 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) - बेंचमार्क चलाते समय और एजीपी 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 डिवाइसों पर बाहरी स्टोरेज में डेटा सेव करते समय होने वाली गड़बड़ियों के बारे में ज़्यादा जानकारी वाले मैसेज मिलते हैं. साथ ही, समस्या हल करने के तरीके के बारे में सुझाव भी मिलते हैं
- बेंचमार्क रन के दौरान, स्क्रीन बंद होने पर फ़ेल होने के बजाय, अपने-आप चालू हो जाती हैं
बाहरी योगदान
- 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.reportDataAPI से थर्मल थ्रॉटलिंग का पता लगाने की सुविधा हटा दी गई है (b/132887006)
गड़बड़ियां ठीक की गईं
- हाल ही के कुछ ओएस डिवाइसों पर
./gradlew lockClocksके काम न करने की समस्या ठीक की गई है (b/133424037) - एम्युलेटर के लिए, थ्रॉटलिंग का पता लगाने की सुविधा बंद की गई (b/132880807)
वर्शन 1.0.0-alpha01
7 मई, 2019
androidx.benchmark:benchmark:1.0.0-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.