मानदंड
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
21 अगस्त, 2024 | 1.3.0 | - | - | - |
डिपेंडेंसी तय करना
बेंचमार्क पर डिपेंडेंसी जोड़ने के लिए, आपको Google Maven रिपॉज़िटरी को यहां जोड़ना होगा आपका प्रोजेक्ट. मैसेज पढ़ा गया ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी जानकारी.
मैक्रोबेंचमार्क
मैक्रोबेंचमार्क का इस्तेमाल करने के लिए
के लिए, अपनी build.gradle
फ़ाइल में ये डिपेंडेंसी जोड़ें
निजी
मैक्रोबेंचमार्क मॉड्यूल:
ग्रूवी
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
माइक्रोबैंचमार्क
माइक्रोबेंचमार्क का इस्तेमाल करने के लिए
के लिए, अपनी build.gradle
फ़ाइल में ये डिपेंडेंसी जोड़ें
निजी
माइक्रोबेंचमार्क मॉड्यूल:
ग्रूवी
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
माइक्रोबेंचमार्क लाइब्रेरी, आपके माइक्रोबेंचमार्क मॉड्यूल के साथ इस्तेमाल करने के लिए, एक Gradle प्लग इन भी उपलब्ध कराती है.
यह प्लगिन मॉड्यूल के लिए बिल्ड कॉन्फ़िगरेशन डिफ़ॉल्ट सेट करता है, सेट अप करता है
होस्ट के लिए बेंचमार्क आउटपुट कॉपी,
और
./gradlew lockClocks
टास्क.
प्लग इन का इस्तेमाल करने के लिए, अपने टॉप-लेवल में `प्लग इन` ब्लॉक में नीचे दी गई लाइन शामिल करें
build.gradle
फ़ाइल:
ग्रूवी
plugins { id 'androidx.benchmark' version '1.3.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.3.0" apply false }
इसके बाद, प्लगिन को अपने बेंचमार्क मॉड्यूल की build.gradle
फ़ाइल पर लागू करें
ग्रूवी
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
सुझाव
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको नई समस्याओं का पता चलता है या आपको इस लाइब्रेरी को बेहतर बनाने के लिए आइडिया मिल सकते हैं. कृपया, इस मौजूदा समस्याएं इस लाइब्रेरी में जोड़ें. किसी मौजूदा समस्या के लिए अपना वोट दें. इसके लिए ये तरीके अपनाएं: स्टार बटन पर क्लिक करके ऐसा किया जा सकता है.
समस्या को ट्रैक करने वाले टूल से जुड़ा दस्तावेज़ देखें हमारा वीडियो देखें.
वर्शन 1.3
वर्शन 1.3.0
21 अगस्त, 2024
androidx.benchmark:benchmark-*:1.3.0
रिलीज़ हो गया है. वर्शन 1.3.0 में ये बातें शामिल हैं.
1.2.0 से माइक्रोबेंचमार्क में हुए बदलाव
- ज़्यादातर डिवाइसों पर दौड़ने के दौरान, माइक्रोबेंचमार्क में, तरीका ट्रेस करने की सुविधा डिफ़ॉल्ट रूप से चालू रहती है
- मेज़रमेंट के बाद, मेथड ट्रेसिंग एक अलग फ़ेज़ के तौर पर चलती है
- कुछ प्लैटफ़ॉर्म और एआरटी वर्शन पर मेथड ट्रेसिंग के बाद के चरणों पर असर पड़ेगा. इन वर्शन में, तरीका ट्रेस करने की सुविधा डिफ़ॉल्ट रूप से बंद रहती है और Studio आउटपुट में चेतावनी दिखती है
- मुख्य थ्रेड के मानदंड और ANR
- कई सेकंड तक चलने पर ANR से बचने के लिए, यूज़र इंटरफ़ेस (यूआई) थ्रेड के बेंचमार्क के लिए,
measureRepeatedOnMainThread
को जोड़ा गया. उदाहरण के लिए, जो 'लिखें'/'व्यू यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करते हैं) के लिए. - अगर ANR से बचने की समयसीमा खत्म हो जाती है, तो मेथड ट्रेस को स्किप कर दिया जाता है. इस व्यवहार को बंद करने के लिए,
androidx.benchmark.profiling.skipWhenDurationRisksAnr
को 'गलत' पर सेट करें (सीआई चलाने का सुझाव नहीं दिया जाता).
- कई सेकंड तक चलने पर ANR से बचने के लिए, यूज़र इंटरफ़ेस (यूआई) थ्रेड के बेंचमार्क के लिए,
- छोटा करना
- छोटा करने की सुविधा चालू करके, माइक्रोबेंचमार्किंग को बेहतर बनाने के लिए, एम्बेड किए गए प्रोगार्ड के नियम
- लाइब्रेरी मॉड्यूल में छोटा करने/R8 का इस्तेमाल करने के लिए, AGP 8.3 होना ज़रूरी है. इसे अपने
build.gradle
मेंandroid.buildTypes.release.androidTest.enableMinification
के ज़रिए चालू किया जा सकता है - खराब कोड को हटाए जाने से रोकने के लिए, प्रयोग के तौर पर
BlackHole.consume()
एपीआई जोड़ा गया (If6812, b/286091643)
- मेट्रिक
- एक्सपेरिमेंट के तौर पर उपलब्ध सीपीयू इवेंट काउंटर की सुविधा (
perf_event_open
की मेट्रिक, जिसके लिए प्लैटफ़ॉर्म के ज़्यादातर वर्शन पर रूट होना ज़रूरी है),InstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
के ज़रिए ऐक्सेस करें (true
पर सेट किया जा सकता है), औरandroidx.benchmark.cpuEventCounter.events
को सेट किया जा सकता है (Instructions,CpuCycles
) तक. यह कुछ userडीबग एम्युलेटर पर काम करना चाहिए. हालांकि, पूरे सिस्टम में इस सहायता की जाँच नहीं की गई है
- एक्सपेरिमेंट के तौर पर उपलब्ध सीपीयू इवेंट काउंटर की सुविधा (
मैक्रोबेंचमार्क में 1.2.0 के बाद से बदलाव हुआ है
- मैक्रोबेंचमार्क के लिए, गड़बड़ियों का पता लगाने का तरीका.
- अब मेथड ट्रेस के दायरे में
measureBlock
की कुल अवधि होती है. साथ ही, प्रोसेस कई बार शुरू होने पर, कई सेशन कैप्चर किए जा सकते हैं. - पहले, तरीका ट्रेस करने की सुविधा सिर्फ़
StartupMode.COLD
मानदंडों के लिए काम करती थी. साथ ही,measureBlocks
के लिए ऐसी कोई जानकारी कैप्चर नहीं होती थी जिससे टारगेट की प्रक्रिया फिर से शुरू न होती हो - फ़िक्स्ड मेथड से मैक्रोबेंचमार्क में फ़्लश का पता चलता है. इससे, मेथड ट्रेस पूरी तरह से कैप्चर और मान्य होने चाहिए. भले ही, वे डिवाइस धीमे हों. (I6349a, b/329904950)
- अब मेथड ट्रेस के दायरे में
- प्रोसेस खत्म होने के बाद, अलग-अलग
warmUp
बार में एआरटी प्रोफ़ाइल को सही तरीके से डंप करें, ताकिCompilationMode.Partial(warmup=N)
की माप ज़्यादा सटीक हो. (I17923) - ड्रॉप शेडर ब्रॉडकास्ट न होने का मैसेज
- शेडर ब्रॉडकास्ट न होने का मैसेज भेजने के लिए, डीबग करने के सुझाव जोड़े गए
ProfileInstaller
1.3 के बिना मानदंड ऐप्लिकेशन के क्रैश होने पर, शेडर ड्रॉपिंग व्यवहार को बदलने के लिए, दो इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ें:androidx.benchmark.dropShaders.enable=true/false
: इसका इस्तेमाल, शेडर ड्रॉप करने की प्रोसेस को स्किप करने के लिए किया जा सकता है. इसमें,StartupMode.Cold
के लॉन्च में किया गया शेडिंग भी शामिल है. खास तौर पर, ऐसा तब होगा, जब स्टैंडर्ड ऐप्लिकेशन, प्रोफ़ाइलइंस्टॉलर 1.3 का इस्तेमाल न करते होंandroidx.benchmark.dropShaders.throwOnFailure=true/false
: शेडर को छोड़ने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है, उदाहरण के लिए जब प्रोफ़ाइलइंस्टॉलर 1.3 (I4f573) के बिना मानदंड वाले ऐप्लिकेशन
- एक्सपेरिमेंट के तौर पर उपलब्ध
MacrobenchmarkRule#measureRepeated
वैरिएंट जोड़ा गया. इसे पूरी तरह से पसंद के मुताबिक बनाया गया परफ़ेटो ट्रेस रिकॉर्ड करने के लिए, पसंद के मुताबिक बनाए गएPerfettoConfig
का इस्तेमाल किया गया. ध्यान दें कि गलत तरीके से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन की वजह से, हो सकता है कि बिल्ट-इन मेट्रिक क्लास की सुविधा काम न करे. (Idfd3d, b/309841164, b/304038384) - रुकावट को कम करने के लिए, मैक्रोबेंचमार्क चलाने से पहले, बैकग्राउंड में काम करने वाले डीएक्सप्ट जॉब रद्द करें. (I989ed)
- मैक्रोबेंचमार्क, अब टारगेट ऐप्लिकेशन को किसी ART प्रोफ़ाइल को फ़्लश करने के लिए 1 सेकंड तक इंतज़ार करता है (पहले इसे 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
में होने वाले क्रैश की समस्या ठीक की गई. खास तौर पर, कुछ OEM डिवाइसों पर. (Ia24bc, b/303823815, b/306235276) FrameMetrics
में जांचों की सख्ती से जांच की गई. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई. (इडेड)
- पावर -
1.2.0 के बाद से बेसलाइन प्रोफ़ाइल कैप्चर / Gradle प्लग इन में बदलाव
- AGP के सुझाए गए अधिकतम वर्शन को 9.0.0-alpha01 तक बढ़ाया गया.
- पक्का करें कि
mergeArtProfile
औरmergeStartupProfile
टास्क हमेशा बेसलाइन प्रोफ़ाइल जनरेट होने तक इंतज़ार करें. (I623d6, b/343086054) - बेसलाइन प्रोफ़ाइल जनरेट करने पर, बदलावों की खास जानकारी मिलेगी (I824c8, b/269484510)
- चेतावनियां बंद करने के लिए डीएसएल जोड़ा गया (Ic4deb, b/331237001)
- यह पक्का करने के लिए कि
automaticGenerationDuringBuild
के बंद होने पर मानदंड, जनरेट की गई बेसलाइन प्रोफ़ाइल का इस्तेमाल करें (Ic144f, b/333024280) nonMinified
या मानदंड बिल्ड टाइप को पसंद के मुताबिक बनाते समय,BaselineProfile
के ग्रेडल प्लगिन प्रॉपर्टी को बदलने से जुड़ी गड़बड़ी को ठीक किया जा सकता है. इससे, बेसलाइन प्रोफ़ाइल जनरेट करने और मानदंड तय करने की सुविधा चालू हो जाएगी. (Ib8f05, b/324837887)- AGP 8.3.0-alpha15 से पहले के AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइल शामिल करने के लिए ठीक किया गया. (I1d2af, b/313992099)
- जनरेशन टास्क के खत्म होने पर बेसलाइन और स्टार्टअप प्रोफ़ाइल आउटपुट यूआरएल को ठीक किया गया. (I802e5, b/313976958)
1.2.0 के बाद से हुए अन्य अहम बदलाव
- ट्रेस कैप्चर
- परफ़ेटो शुरू करने से लेकर लॉग की गई चेतावनी में जाने पर, ExitCODE 2 गड़बड़ी कम हो गई
- बेंचमार्क में, एआईडीएल ट्रेस करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है(एपीआई 28 ज़रूरी है) (Ia0af2, b/341852305)
- मानदंड में, पोर्टर टैग ट्रेसिंग को डिफ़ॉल्ट रूप से चालू करें. उदाहरण के लिए, यह वेकलॉक ट्रेसपॉइंट को कैप्चर करता है. (Icfe44, b/286551983)
- ज़्यादा समय लेने वाले ट्रेस कैप्चर शुरू होने का टाइम आउट बढ़ाएं, ताकि धीमे डिवाइस पर ट्रेस करते समय क्रैश से बचा जा सके (I98841, b/329145808)
- JSON, टेक्स्टप्रोटो, और प्रोटो बाइनरी (बिना कोड वाले) वैरिएंट के साथ सार्वजनिक एपीआई
PerfettoTraceProcessor.Session.queryMetrics
एपीआई जोड़ा गया. इसकी मदद से,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)
- प्रोफ़ाइलिंग ट्रेस (उदाहरण के लिए, Perfetto, मेथड ट्रेस) (I05ddd, b/332604449) को आसानी से टूल करने के लिए, JSON आउटपुट में
profilerOutput
सूची जोड़ी गई - मानदंड मॉड्यूल में, 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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- निर्देश न देने वाले इवेंट (I7386a, b/286306579) के लिए खराब वैल्यू जनरेट करने वाली
androidx.benchmark.cpuEventCounter
की गड़बड़ी ठीक करें - मेट्रिक के प्राथमिकता के क्रम को ध्यान में रखते हुए,
resumeTiming
/runWithTimingDisabled
को ठीक करें. साथ ही, ज़्यादा प्राथमिकता वाली मेट्रिक के नतीजों पर, कम प्राथमिकता वाली मेट्रिक रोकने/फिर से शुरू करने की वजह से, असर को काफ़ी कम करें. उदाहरण के लिए, अगरcpuEventCounter.enable
इंस्ट्रुमेंटेशन आर्ग्युमेंट के ज़रिए सीपीयू परफ़ काउंटर का इस्तेमाल किया जाता है, तो रोकने/फिर से शुरू करने पर timeNs में ज़्यादा कमी नहीं आएगी. (I39c2e, b/286306579, b/307445225) - स्टैक सैंपलिंग के कन्वर्ज़न की संभावना कम होती है. इसकी वजह से
measureRepeatedOnMainThread
, मुख्य थ्रेड में हार्ड टाइम आउट तक नहीं पहुंच पाता. ऐसा करने के लिए, स्टैक सैंपलिंग कन्वर्ज़न को मुख्य थ्रेड से बाहर कर दिया जाता है. (I487a8, b/342237318) - नए प्लैटफ़ॉर्म एपीआई के ऐक्सेस की मैन्युअल आउटलाइन हटाई गई. ऐसा इसलिए, क्योंकि AGP 7.3 या उसके बाद के वर्शन (जैसे कि R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर और एजीपी 8.1 या उसके बाद के वर्शन (जैसे कि D8 वर्शन 8.1) के साथ, R8 का इस्तेमाल करने पर ऐसा अपने-आप होता है. जो क्लाइंट एजीपी का इस्तेमाल नहीं कर रहे हैं उन्हें D8 के 8.1 या इसके बाद के वर्शन पर अपडेट करने की सलाह दी जाती है. ज़्यादा जानकारी के लिए यह लेख देखें. (I9496c, b/345472586)
- पैकेज नाम को instr org के तौर पर भेजने के लिए, agp वर्शन की जांच की गई. AGP 8.4.0 से पहले के वर्शन में, टारगेट ऐप्लिकेशन पैकेज के नाम को इंस्ट्रुमेंटेशन ऐप्लिकेशन पर इंस्ट्रुमेंटेशन आर्ग्युमेंट के ज़रिए नहीं भेजा जा सकता. (0c72a3f)
वर्शन 1.3.0-beta02
10 जुलाई, 2024
androidx.benchmark:benchmark-*:1.3.0-beta02
रिलीज़ हो गया है. वर्शन 1.3.0-beta02 में ये प्रतिबद्धताएं शामिल हैं.
गड़बड़ियां ठीक की गईं
- Perfetto को शुरू करते समय, चेतावनी को लॉग करने के लिए, ExitCODE
2
को सही तरीके से हैंडल करें और आगे बढ़ें.
वर्शन 1.3.0-beta01
12 जून, 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
रिलीज़ हो गया है. वर्शन 1.3.0-beta01 में ये प्रतिबद्धताएं शामिल हैं.
एपीआई में किए गए बदलाव
- एक जैसा अनुभव देने के लिए,
MethodTracing.affectsMeasurementOnThisDevice
का नाम बदलकरAFFECTS_MEASUREMENT_ON_THIS_DEVICE
किया गया. (I1bdfa) - माइक्रोबेंचमार्क में, डेड कोड एलिमिनेशन से बचने के लिए, एक्सपेरिमेंटल
BlackHole.consume()
एपीआई जोड़ा गया. (If6812, b/286091643) - तरीके से ट्रेस करने के तरीके में कोई रुकावट न आए, इसके लिए माइक्रोबेंचमार्क को सही तरीके से फेंका जाएगा. ऐसा कुछ डिवाइसों पर तब होता है, जब तरीका ट्रेस करने की सुविधा को इंस्ट्रुमेंटेशन आर्ग या
MicrobenchmarkConfig
के ज़रिए ज़बरदस्ती चालू किया जाता है. ऐसा तब भी होता है, जब तरीके ट्रेस करने के बाद, तरीके को मापा जाता है. जिन डिवाइसों पर इस रुकावट का असर हुआ है, उन पर एपीआई 26-30 या कुछ एआरटी मेनलाइन मॉड्यूल के वर्शन चल रहे हैं. इन डिवाइसों का पता,ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
की मदद से रनटाइम के दौरान लगाया जा सकता है. (Iafb92, b/303660864)
गड़बड़ियां ठीक की गईं
- 9.0.0-alpha01 वाला सुझाया गया अधिकतम agp वर्शन. (I5bbb0)
- मानदंड के कॉन्टेक्स्ट में कंपाइलेशन मोड जोड़ा गया (If5612, b/325512900)
- डिफ़ॉल्ट रूप से AIDL ट्रेस करने की सुविधा चालू करें (एपीआई 28 ज़रूरी है) (Ia0af2, b/341852305)
- JSON आउटपुट में, मानदंड के संदर्भ में ज़्यादा जानकारी जोड़ी गई:
context.artMainlineVersion
- आर्ट मेनलाइन मॉड्यूल का पूर्णांक वर्शन (अगर डिवाइस पर मौजूद है, तो -1, नहीं तो)context.build.id
-android.os.Build.ID
के बराबर हैcontext.build.version.codename
-android.os.Build.VERSION.CODENAME
के बराबर हैcontext.build.version.abbreviatedCodename
- यह रिलीज़ के पहले वाले कोडनेम के पहले अक्षर से मेल खाता है (रिलीज़ बिल्ड पर भी) (Ie5020)
androidx.benchmark.profiling.sampleDurationSeconds
(Ib1d53) का पालन करने के लिए,StackSampling
को ठीक करता है- मैक्रो->सामान्य डिपेंडेंसी को
api()
में बदलें, ताकि इस्तेमाल करने में आसानी हो, उदाहरण के लिएPerfettoTrace
औरPerfettoConfig
. (Icdae3, b/341851833) - पक्का करें कि
mergeArtProfile
औरmergeStartupProfile
टास्क हमेशा बेसलाइन प्रोफ़ाइल जनरेट होने तक इंतज़ार करें. (I623d6, b/343086054) - वैरिएंट चालू किया जाना चाहिए या नहीं, यह तय करते समय वैरिएंट को चालू करने की स्थिति पर ध्यान दें. (I5d19e, b/343249144)
- परफ़ेटो ट्रेस प्रोसेसर के लिए, डिफ़ॉल्ट स्टार्ट टाइम आउट बढ़ाएं. (I87e8c, b/329145808)
वर्शन 1.3.0-alpha05
14 मई, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
रिलीज़ हो गया है. वर्शन 1.3.0-alpha05 में ये कमिट मौजूद हैं.
गड़बड़ियां ठीक की गईं
- जब मैक्रोबेंच मेट्रिक सभी इटरेशन के लिए शून्य वैल्यू दिखाती है, तो बेहतर अपवाद का इस्तेमाल करें (Iab58f, b/314931695)
- माइक्रोबेंच प्रोगार्ड नियमों में समाधान के कुछ और नियम जोड़े गए हैं. इनमें, लिसनर के नियमों और अन्य चेतावनियों / गड़बड़ियों के लिए भी सहायता शामिल है. (I14d8f, b/329126308, b/339085669)
- मैक्रोबेंचमार्क के दौरान, मेथड ट्रेसिंग एक अलग फ़ेज़ के रूप में चलती है और अब मेज़रमेंट पर इसका कोई असर नहीं पड़ता. (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
वैरिएंट जोड़ा गया. इसे पूरी तरह से पसंद के मुताबिक बनाया गया परफ़ेटो ट्रेस रिकॉर्ड करने के लिए, पसंद के मुताबिक बनाए गए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, टेक्स्टप्रोटो, और प्रोटो बाइनरी (बिना कोड वाले) वैरिएंट के साथ सार्वजनिक एपीआई
PerfettoTraceProcessor.Session.queryMetrics
API को जोड़ा जाता है. इनकी मदद से, Traceप्रोसेसर में पहले से मौजूद मेट्रिक (I54d7f, b/304038382) से क्वेरी की जा सकती है - JSON आउटपुट में
profilerOutput
को जोड़ा गया, ताकि प्रोफ़ाइलिंग ट्रेस (जैसे कि परफ़ेटो, मेथड ट्रेस) को आसानी से टूल से भरा जा सके. (I05ddd, b/332604449) - मानदंड Perfetto कॉन्फ़िगरेशन में पावर टैग जोड़ा गया. उदाहरण के लिए, यह वेकलॉक ट्रेसपॉइंट को कैप्चर करता है. (Icfe44, b/286551983)
- इंस्टेंस तर्क
androidx.benchmark.profiling.skipWhenDurationRisksAnr
को जोड़ा गया. इसे 'गलत' पर सेट किया जा सकता है, ताकि जब अनुमानित अवधि की वजह से ANR की गड़बड़ी हो रही हो, तब तरीके के ट्रेस को स्किप न किया जा सके. सीआई के इस्तेमाल से बचने का सुझाव दिया जाता है. - एक्सपेरिमेंट के तौर पर शुरुआती तर्क
androidx.benchmark.profiling.perfCompare.enable
जोड़ा गया. मेज़रमेंट और प्रोफ़ाइलिंग के चरणों के बीच तुलना के समय की तुलना करने के लिए, इसे 'सही' पर सेट करें. उदाहरण के लिए मददगार तरीका ट्रेस करने के ओवरहेड का आकलन किया जा सकता है. (I61fb4, b/329146942)
एपीआई में किए गए बदलाव
- आने वाले समय में एक्सपैंशन की सुविधा चालू करने के लिए,
TraceSectionMetric.Mode
को सील की गई क्लास में बदला गया. स्टेटमेंट में पूरी जानकारी शामिल न करें (I71f7b) TraceSectionMetric.Mode.Average
और.Count
को जोड़ा गया. साथ ही, फिर से क्रम में लगाए गए आर्ग्युमेंट को इसलिए जोड़ा गया, ताकि आर्ग्युमेंट सूची में ज़्यादा सामान्य आर्ग्युमेंट (मोड) पहले रखा गया हो. इससे पैरामीटर के नाम तय करने की ज़रूरत कम हो जाती है. (Ibf0b0, b/315830077, b/322167531)- रिटर्न टाइप (I42595) से मैच करने के लिए,
Metric.getResult
का नाम बदलकरgetMeasurements
किया गया
गड़बड़ियां ठीक की गईं
- यह पक्का करने के लिए कि
automaticGenerationDuringBuild
के बंद होने पर मानदंड, जनरेट की गई बेसलाइन प्रोफ़ाइल का इस्तेमाल करें (Ic144f, b/333024280) nonMinified
या मानदंड बिल्ड टाइप को पसंद के मुताबिक बनाते समय,BaselineProfile
के ग्रेडल प्लगिन प्रॉपर्टी को बदलने से जुड़ी गड़बड़ी को ठीक किया जा सकता है. इससे, बेसलाइन प्रोफ़ाइल जनरेट करने और मानदंड तय करने की सुविधा चालू हो जाएगी. (Ib8f05, b/324837887)- फ़िक्स्ड मेथड से मैक्रोबेंचमार्क में फ़्लश का पता चलता है. इससे, मेथड ट्रेस पूरी तरह से कैप्चर और मान्य होने चाहिए. भले ही, वे डिवाइस धीमे हों. (I6349a, b/329904950)
- Perfetto ट्रेस के रिकॉर्ड को ब्लॉक करने की प्रोसेस शुरू करने की सुविधा को चालू करें, ताकि ट्रेस की शुरुआत में ही डेटा गायब होने का जोखिम कम हो सके. यह सुविधा सिर्फ़ एपीआई वर्शन 33 के बाद के वर्शन पर काम करती है. (Ie6e41, b/310760059)
- मानदंड मॉड्यूल में, Android Test Orchestrator का इस्तेमाल करने पर एक चेतावनी जोड़ी गई. इसकी वजह से, हर मॉड्यूल के आउटपुट JSON फ़ाइलों को बार-बार ओवरराइट करना पड़ सकता है. (Ia1af6, b/286899049)
- ',' फ़ोर्स करें (कॉमा) डिवाइस की स्थान-भाषा (I3e921, b/313496656) को अनदेखा करते हुए, Studio के आउटपुट में एक जैसा रहने के लिए हज़ार की संख्या को अलग करने वाले सेपरेटर.
TraceSectionMetric
अबTrace.{begin|end}AsyncSection
का इस्तेमाल करके बनाए गए स्लाइस के साथ काम करता है. (I91b32, b/300434906)- स्टार्टअप का पता लगाने वाली सभी गड़बड़ियों के लिए, log.w / अपवाद लेबल जोड़े गए. इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता (इसलिए, कुछ गड़बड़ियां होती हैं और कुछ गड़बड़ियां हो जाती हैं). इससे, स्टार्टअप के बारे में आसानी से पता चल जाता है. इससे, उपयोगकर्ता को आसानी से समझा जा सकता है. आम तौर पर, ऐसे इवेंट जो
Log.w()
करते हैं और स्टार्टअप मेट्रिक को रिपोर्ट नहीं कर पाते, वे होते हैं जिनमें बिना फ़्रेम वाले इवेंट मौजूद नहीं होते. हालांकि, स्टार्टअप का पता चलने पर अपवाद दिखाए जाते हैं. इनमें फ़्रेम टाइमिंग की जानकारी (यूआई/आरटी स्लाइस से) शामिल नहीं है. (Id240f, b/329145809) - रुकावट को कम करने के लिए, मैक्रोबेंचमार्क चलाने से पहले, बैकग्राउंड में काम करने वाले डीएक्सप्ट जॉब रद्द करें. (I989ed)
frameCount
मेज़रमेंट कोFrameTimingMetric
में जोड़ा गया, ताकि उन स्थितियों का पता लगाया जा सके जहां मेज़रमेंट में बदलाव होने की वजह से, रेंडर होने वाले फ़्रेम की संख्या बदल गई है (नए ऐनिमेशन जोड़े गए, अमान्य होने से जुड़ी समस्याएं ठीक की गईं). (I1e5aa)- बताया गया कि
frameOverrunMs
, दस्तावेज़ों में उपलब्ध होने पर ट्रैकिंग के लिए पसंदीदा मेट्रिक है और क्यों. (I18749, b/329478323)
वर्शन 1.3.0-alpha02
20 मार्च, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये कमिट मौजूद हैं.
नई सुविधाएं
एम्बेड किए गए 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
बूलियन पैरामीटर का नाम बदला गया (Ia8f00, b/303387299) BenchmarkRule.measureRepeatedOnMainThread
को जोड़ा गया, ताकि मुख्य थ्रेड के मानदंड (जैसे कि 'व्यू' या 'लिखें' यूज़र इंटरफ़ेस (यूआई) को छूते हों) ANR ट्रिगर होने से बचा जा सकता है. ऐसा खास तौर पर, सीआई (CI) में बड़े सुइट के दौरान होता है. (I5c86d)FrameTimingGfxInfoMetric
को जोड़ा गया. यहFrameTimingMetric
को प्रयोग के तौर पर लागू किया गया था. इसमें परफ़ेटो ट्रेस से नहीं, बल्कि सीधे प्लैटफ़ॉर्म से मिली जानकारी का इस्तेमाल किया गया था. (I457cb, b/322232828)- अलग-अलग
warmUp
बार-बार होने के दौरान, एआरटी प्रोफ़ाइल को डंप करने की सुविधा जोड़ें. (I17923) TraceSectionMetric
एपीआई में कई बदलाव किए गए:Mode.Min
,Mode.Max
जोड़ें- सेक्शन के नाम को मेट्रिक लेबल में बदलने के लिए, लेबल आर्ग्युमेंट जोड़ें
- मेट्रिक का मतलब साफ़ तौर पर समझाने के लिए, आउटपुट में मोड का नाम जोड़ा गया
- डिफ़ॉल्ट को कुल योग में बदल दिया गया है, क्योंकि इस मेट्रिक का ज़्यादातर इस्तेमाल दोहराए जाने वाले इवेंट के लिए किया जाता है सीआई के इस्तेमाल में हो रहे बदलावों का ध्यान रखें, क्योंकि इसकी वजह से समस्याएं पैदा हो सकती हैं या पार्सिंग को तोड़ें. (Ic1e82, b/301892382, b/301955938)
गड़बड़ियां ठीक की गईं
- मैनेज किया जा रहा डिवाइस मौजूद न होने पर, बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन में गड़बड़ी के मैसेज को बेहतर बनाया गया (आइडिया2b, b/313803289)
- AGP 8.3.0-alpha15 (I1d2af, b/313992099) से पहले वाली लाइब्रेरी बेसलाइन प्रोफ़ाइल को शामिल करने की समस्या को ठीक करना
- जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल का आउटपुट यूआरएल ठीक कर दिया गया है (I802e5, b/313976958)
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
को ठीक करने के लिए, डेटा सोर्स के टाइम आउट में बदलाव किया गया (I8dc7d, b/323601788)ProfileInstaller
1.3 के बिना मानदंड ऐप्लिकेशन के क्रैश होने पर, शेडर ड्रॉपिंग व्यवहार को बदलने के लिए, दो इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ें:androidx.benchmark.dropShaders.enable=true/false
: इसका इस्तेमाल, शेडर ड्रॉप करने की प्रोसेस को स्किप करने के लिए किया जा सकता है. इसमें,StartupMode.Cold
के लॉन्च में किया गया शेडिंग भी शामिल है. खास तौर पर, ऐसा तब होगा, जब स्टैंडर्ड ऐप्लिकेशन, प्रोफ़ाइलइंस्टॉलर 1.3 का इस्तेमाल न करते होंandroidx.benchmark.dropShaders.throwOnFailure=true/false
: शेडर को छोड़ने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है, उदाहरण के लिए जब प्रोफ़ाइलइंस्टॉलर 1.3 (I4f573) के बिना मानदंड वाले ऐप्लिकेशन
- जब कुछ सेकंड से ज़्यादा समय लगने की संभावना हो, तो यूज़र इंटरफ़ेस (यूआई) थ्रेड पर तरीका ट्रेस करने की प्रक्रिया छोड़ें. साथ ही, डेटा फेंकते समय क्लीनअप करने का तरीका ट्रेस करें. (I6e768)
- फ़ाइलों को लिखते या प्रोसेस करने के बाद, साफ़ तौर पर होने वाले क्रैश से बचने के लिए, फ़ाइल नामों में 200 से ज़्यादा वर्ण इस्तेमाल करें. (I4a5ab)
- उस समस्या को ठीक करता है जहां ट्रेस की शुरुआत और आखिर में, खत्म नहीं होने वाले फ़्रेम को एक साथ जोड़ा जा सकता है. इससे गलती से बहुत लंबे फ़्रेम के तौर पर रिपोर्ट बन सकती है. (I39353, b/322232828)
- एपीआई 30-33 पर पैकेज को फिर से इंस्टॉल करने के दौरान, एपीआई 30 या इसके बाद के वर्शन पर
--skip verification
का इस्तेमाल करें. इससे, उपयोगकर्ताओं के बिल्ड पर ART प्रोफ़ाइलों को हटाने में मदद मिलेगी. इससे, Play Protect की उन चेतावनियों को बायपास करने में मदद मिलती है जिनकी वजह से, कुछ डिवाइसों पर ऐप्लिकेशन काम नहीं करता. (Ic9e36) - जब सिस्टम यूज़र इंटरफ़ेस (यूआई) या लॉन्चर जैसे सिस्टम ऐप्लिकेशन न हों, तो ऐप्लिकेशन बंद करने के लिए
am force-stop
का इस्तेमाल करें. (I5e028) - मैक्रोबेंचमार्क, अब टारगेट ऐप्लिकेशन के ज़रिए किसी ART प्रोफ़ाइल को फ़्लश करने के लिए
1 second
की इंतज़ार करता है (पहले यह500 ms
के लिए इंतज़ार करता था). (I85a50, b/316082056) - फ़्रेम न बनने पर,
FrameTimingMetric
गड़बड़ी को ठीक करें. साथ ही, मेट्रिक पार्स नहीं होने पर, गड़बड़ी का पता लगाने के लिए लिंक हमेशा कैप्चर करें. (I956b9) - फ़्रेम आईडी पार्स न हो पाने पर,
FrameTimingMetric
में होने वाले क्रैश की समस्या ठीक की गई. खास तौर पर, कुछ OEM डिवाइसों पर. (Ia24bc, b/303823815, b/306235276) FrameMetrics
में जांचों की सख्ती से जांच की गई. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई. (इडेड)
वर्शन 1.2
वर्शन 1.2.4
17 अप्रैल, 2024
androidx.benchmark:benchmark-*:1.2.4
रिलीज़ हो गया है. वर्शन 1.2.4 में ये बातें शामिल हैं.
गड़बड़ियां ठीक की गईं
- मानदंड वाले वैरिएंट में, बेसलाइन प्रोफ़ाइल एसआरसेट सेट अप न होने की समस्या ठीक की गई है. साथ ही, लाइब्रेरी में सर्कुलर डिपेंडेंसी की वजह से होने वाली
automaticGenerationDuringBuild
को ठीक करता है. (I28ab7, b/333024280) - जब सिस्टम यूज़र इंटरफ़ेस (यूआई) या लॉन्चर जैसे सिस्टम ऐप्लिकेशन न हों, तो ऐप्लिकेशन बंद करने के लिए
am force-stop
का इस्तेमाल करें. इससेStartupMode.COLD
के क्रैश हो रहे बेंचमार्क को ठीक कर दिया जाता है, "कोल्ड स्टार्ट से पहले पैकेज $package नहीं होना चाहिए!" प्रोसेस किल के पूरी तरह से सफल न होने के कारण. (I5e028)
वर्शन 1.2.3
24 जनवरी, 2024
androidx.benchmark:benchmark-*:1.2.3
रिलीज़ हो गया है. वर्शन 1.2.3 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- एजीपी वर्शन 8.3.0 या इसके बाद का वर्शन होने पर, बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन से अपवाद हटाया गया.
- AGP 8.3.0-alpha15 से पहले के AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइल शामिल करने के लिए ठीक किया गया.
वर्शन 1.2.2
1 दिसंबर, 2023
androidx.benchmark:benchmark-*:1.2.2
रिलीज़ हो गया है. वर्शन 1.2.2 में ये कमियां शामिल हैं.
बेसलाइन प्रोफ़ाइलें
- एक्ज़ीक्यूशन लॉग, बेसलाइन प्रोफ़ाइल के आउटपुट फ़ाइल पाथ को लोकल फ़ाइल यूआरआई के तौर पर दिखाएगा (aosp/2843918, aosp/2853665, b/313976958)
वर्शन 1.2.1
15 नवंबर, 2023
androidx.benchmark:benchmark-*:1.2.1
रिलीज़ हो गया है. वर्शन 1.2.1 में ये कमियां शामिल हैं.
नई सुविधाएं
- टेस्ट वैरिएंट बंद करने पर, गड़बड़ी का बेहतर मैसेज (b/307478189)
- AS टेस्ट रन इंटिग्रेशन के साथ काम करने वाली प्रॉपर्टी (b/309805233), (b/309116324)
वर्शन 1.2.0
18 अक्टूबर, 2023
androidx.benchmark:benchmark-*:1.2.0
रिलीज़ हो गया है. वर्शन 1.2.0 में ये कमियां शामिल हैं.
1.1.0 के बाद से हुए अहम बदलाव
बेसलाइन प्रोफ़ाइलें
- नया बेसलाइन प्रोफ़ाइल ग्रेडल प्लग इन आपके टेस्ट और बिल्ड वर्कफ़्लो में बेसलाइन प्रोफ़ाइल को अपने-आप कैप्चर करने और शामिल करने की सुविधा देता है.
BaselineProfileRule.collect
अब ठीक से काम कर रहा है. यह प्रयोग वाले पिछलेBaselineProfileRule.collectBaselineProfile
एपीआई का आसान और बेहतर वर्शन है- बस
packageName
तय करें और अपना ऐप्लिकेशन चलाएं
- बस
- बेसलाइन प्रोफ़ाइल जनरेट करने वाली लाइब्रेरी के लिए, अब जनरेट किए गए नियमों को या तो कोड (
BaselineProfileRule.collect
आर्ग्युमेंट) में फ़िल्टर किया जा सकता है. इसके अलावा, Gradle प्लग इन में और भी आसान तरीके से फ़िल्टर किया जा सकता है - ऐसी गड़बड़ियां जो ठीक की जा सकती हैं
- Android U+ (Id1392, b/277645214) पर बेसलाइन प्रोफ़ाइल ठीक किया गया है
मैक्रोबेंचमार्क
- कंपाइलेशन
- मैक्रोबेंचमार्क, अब हर कंपाइल के लिए कंपाइलेशन की स्थिति को सही तरीके से रीसेट करता है - इसके लिए, Android 14 से पहले वाले APK को फिर से इंस्टॉल करना ज़रूरी है. इसलिए, अगर आपको मेज़र की जा रही स्थिति (जैसे, उपयोगकर्ता लॉगिन) को बनाए रखना है, तो Android 14 और इसके बाद के वर्शन पर मानदंड को लागू करने का सुझाव दिया जाता है.
- इसके लिए, अलग-अलग ऐप्लिकेशन कंपाइलेशन को कंट्रोल किया जा सकता है. साथ ही,
CompilationMode.Ignore()
या इंस्ट्रुमेंट वाले आर्ग्युमेंट की मदद से, कंपाइलेशन को छोड़ा जा सकता है
इंस्ट्रुमेंटेशन आर्ग्यूमेंट
androidx.benchmark.dryRunMode.enable
इंस्ट्रुमेंटेशन आर्ग्युमेंट के लिए सहायता (माइक्रोबेंचमार्क में पहले से ही उपलब्ध है) ताकि पुष्टि तुरंत की जा सके (उदाहरण के लिए, मानदंड बनाते समय या पहले से सबमिट करते समय)androidx.benchmark.profiling.mode=StackSampling
औरMethodTracing
के लिए सहायता.androidx.benchmark.enabledRules
को जोड़ा गया, ताकि बेसलाइन प्रोफ़ाइल और मैक्रोबेंचमार्क नियम की जांच के दौरान रनटाइम फ़िल्टर करने की अनुमति मिल सके- ट्रेसिंग-परफ़ेटो से ट्रेस करने की सुविधा चालू करने के लिए,
androidx.benchmark.perfettoSdkTracing.enable
आर्ग्युमेंट जोड़ा गया, जैसे कि रीकंपोज़िशन ट्रेसिंग लिखें. ध्यान दें किStartupMode.COLD
के साथ इस्तेमाल करने पर समय पर काफ़ी असर पड़ेगा, क्योंकि ऐप्लिकेशन के शुरू होने के दौरान, ट्रेस करने वाली लाइब्रेरी लोड और चालू होती है.
ज़रूरी शर्तें
- मैक्रोबेंचमार्क को टारगेट ऐप्लिकेशन में
ProfileInstaller
1.3.0 या इसके बाद के वर्शन की ज़रूरत होती है. इससे प्रोफ़ाइल कैप्चर / रीसेट करने और शेडर कैश मेमोरी को मिटाने की सुविधा चालू हो जाती है.
- मैक्रोबेंचमार्क को टारगेट ऐप्लिकेशन में
नए प्रयोग वाले मेट्रिक एपीआई
- एक्सपेरिमेंटल
TraceSectionMetric
जोड़ा गया. इसकी मदद से, आपके ऐप्लिकेशन मेंtrace("") {}
ब्लॉक से आसान टाइमिंग हासिल की जा सकती है. इसके अलावा, PerfettoTraceProcessor
की क्वेरी की क्षमता का इस्तेमाल करने के लिए, TraceMetric से आसान टाइमिंग हासिल करने की सुविधा जोड़ी गई है. - बैटरी के इस्तेमाल की जानकारी कैप्चर करने के लिए, एक्सपेरिमेंटल
PowerMetric
को जोड़ा गया - पेज में गड़बड़ियों की गिनती करने के लिए, प्रयोग के तौर पर
MemoryCountersMetric
जोड़ा गया - एक्सपेरिमेंट के तौर पर उपलब्ध
PerfettoTraceProcessor
एपीआई जोड़ा गया. इसे अंदरूनी तौर पर इस्तेमाल करके, सिस्टम ट्रेस यानी Perfetto ट्रेस से मेट्रिक निकाली जाती हैं
- एक्सपेरिमेंटल
समाधान
- एक से ज़्यादा APK से इंस्टॉल किए गए किसी ऐप्लिकेशन से प्रोफ़ाइल इंस्टॉल करते या निकालते समय, ऐप्लिकेशन के बंद होने की समस्या ठीक की गई है. उदाहरण के लिए, ऐप्लिकेशन बंडल से.
- अलग-अलग फ़्रेम आईडी वाले फ़्रेम को अनदेखा करने वाले
FrameTimingMetric
को ठीक किया गया (आम तौर पर, एपीआई 31+ पर रिपल के दौरान फ़्रेम) (I747d2, b/279088460) - ट्रेस पर पार्स करने से जुड़ी गड़बड़ियां ठीक की गईं > 64 एमबी (Ief831, b/269949822)
- जब डिवाइस (खास तौर पर एम्युलेटर) वाली ओएस इमेज को ट्रेस करने या कंपाइल करने के लिए, सही तरीके से कॉन्फ़िगर नहीं किया गया हो, तो गड़बड़ियों के बारे में साफ़ तौर पर जानकारी देना
- बिना बैटरी वाले डिवाइसों (माइक्रो और मैक्रो) का पता लगाने के लिए, बैटरी लेवल की जांच न करें
- बेहतर फ़ाइल आउटपुट, जिसमें अमान्य आउटपुट डायरेक्ट्री के लिए ज़्यादा साफ़ गड़बड़ियां और सुरक्षित डिफ़ॉल्ट शामिल हैं
- शेडर कैश मेमोरी को लगातार छोड़कर,
StartupMode.COLD
की स्थिरता को बेहतर किया गया है (MacrobenchmarkScope.dropShaderCache
के ज़रिए भी एक्सपोज़ किया गया है) startActivityAndWait
के लिए लीनबैक फ़ॉलबैक को ठीक किया गया.
माइक्रोबेंचमार्क
- विशेषताएं
- अन्य मेट्रिक के बाद, प्रोफ़ाइलिंग को एक अलग चरण में ले जाया गया. इसलिए, एक बार में एक टेस्ट चलाने पर सटीक समय और प्रोफ़ाइलिंग के नतीजे, दोनों दिख सकते हैं.
- एक्सपेरिमेंटल एपीआई
- कस्टम मेट्रिक तय करने के साथ-साथ, ट्रेसिंग और प्रोफ़ाइलिंग कॉन्फ़िगर करने के लिए, एक्सपेरिमेंटल
MicrobenchmarkConfig
एपीआई जोड़ा गया. इसका इस्तेमाल तरीके का पता लगाने या ट्रेसपॉइंट कैप्चर करने के लिए किया जा सकता है. हालांकि, ओवरहेड को ट्रेस करने के बारे में जानकारी रखें. BenchmarkState
कोBenchmarkRule
से अलग, JUnit के बिना, को कंट्रोल करने के लिए एक्सपेरिमेंटल एपीआई जोड़े गए- मानक एपीआई से अलग, कस्टम कॉन्फ़िगरेशन के साथ परफ़ेटो ट्रेस कैप्चर करने की सुविधा चालू करने के लिए, प्रयोग के तौर पर
PerfettoTrace
रिकॉर्ड जोड़ा गया.
- कस्टम मेट्रिक तय करने के साथ-साथ, ट्रेसिंग और प्रोफ़ाइलिंग कॉन्फ़िगर करने के लिए, एक्सपेरिमेंटल
- ऐसी गड़बड़ियां जो ठीक की जा सकती हैं
- Android Studio के मानदंड आउटपुट में, मुख्य खाली सफ़ेद जगह को छोड़ने का तरीका.
- उस समस्या को ठीक किया जा सकता है जिसकी वजह से Android Studio के मानक आउटपुट में, चेतावनियां प्रिंट नहीं हो सकीं.
- Android 13 (एपीआई 33) और इसके बाद के वर्शन में,
SampledProfiling
क्रैश होने की समस्या को ठीक किया गया. IsolationActivity
और परफ़ेटो ट्रेसिंग को स्किप करके,dryRunMode
की परफ़ॉर्मेंस में काफ़ी सुधार हुआ है. ओएस के पुराने वर्शन पर, यह 10 गुना ज़्यादा तेज़ ड्राई रन मोड तक पहुंच सकता है.
वर्शन 1.2.0-rc02
6 अक्टूबर, 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
रिलीज़ हो गया है. वर्शन 1.2.0-rc02 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
BaselineProfile
प्लग इन फ़ाइल कॉपी करने की प्रोसेस में कोई रुकावट न आए, इसके लिए बेंचमार्क फ़ाइल आउटपुट से जुड़ी समस्या ठीक करें. फ़ाइलें जनरेट करके डिवाइस से कॉपी कर ली गई थीं, लेकिन उनका नाम इस तरह बदल दिया गया कि Gradle प्लग इन उन्हें नहीं देख सकेगा. (I8dbcc, b/303034735, b/296453339)- टारगेट ऐप्लिकेशन में मैक्रोबेंचमार्क मॉड्यूल से इंजेक्ट करते समय,
tracing-perfetto
के लोड होने से जुड़ी गड़बड़ी के मैसेज सही तरीके से बताए गए.
वर्शन 1.2.0-rc01
20 सितंबर, 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
रिलीज़ हो गया है. वर्शन 1.2.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब Perfetto SDK टूल को बेंचमार्क में, ट्रेस करने की प्रोसेस शुरू नहीं हो पाती है, तो समस्या को हल करने के निर्देशों के साथ एक अपवाद लागू कर दिया जाता है. (I6c878, b/286228781)
- ART मेथड ट्रेस बदलने के दौरान OOM क्रैश की समस्या ठीक करें -> परफ़ेटो फ़ॉर्मैट. (I106bd, b/296905344)
- (मैक्रोबेंचमार्क) Studio टेस्ट आउटपुट में, तरीके को ट्रेस करने वाले लेबल को बेहतर तरीके से बताया गया और डिवाइस/होस्ट पर, फ़ाइल नाम को ट्रेस करने के तरीके को अलग किया गया. ऐसा इसलिए, ताकि एक से ज़्यादा बेंचमार्क इस्तेमाल किए जाने पर, उन फ़ाइलों को ओवरराइट न किया जाए. (I08e65, b/285912360)
- बेसलाइन प्रोफ़ाइल कैप्चर करते समय, यह पक्का करता है कि डिवाइस चालू है. (I503fc)
वर्शन 1.2.0-beta05
30 अगस्त, 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
रिलीज़ हो गया है. वर्शन 1.2.0-beta05 में ये कमिट हैं.
नई सुविधाएं
- बेसलाइन प्रोफ़ाइल Gradle प्लग इन अब Android Gradle प्लग इन 8.3 के साथ काम करता है. (aosp/2715214)
वर्शन 1.2.0-beta04
23 अगस्त, 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
रिलीज़ हो गया है. वर्शन 1.2.0-beta04 में ये कमिट मौजूद हैं.
नई सुविधाएं
- बेसलाइन प्रोफ़ाइल Gradle प्लग इन अब Android Gradle प्लग इन 8.3 के साथ काम करता है. (aosp/2715214)
गड़बड़ियां ठीक की गईं
- फ़ाइलों (खास तौर पर, पैरामीटर वाले टेस्ट से मिली) को लिखने / एक से दूसरी जगह ले जाने और उन्हें खींचने में होने वाली गड़बड़ियों को ठीक करने के लिए, आउटपुट फ़ाइल के नामों को और भी साफ़ करें, '=' का इस्तेमाल न करें और ':' शामिल हैं. (I759d8)
वर्शन 1.2.0-beta03
9 अगस्त, 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
रिलीज़ हो गया है. वर्शन 1.2.0-beta03 में ये कमिट हैं.
एपीआई में किए गए बदलाव
TraceSectionMetric
को सिर्फ़ टारगेट पैकेज में फ़िल्टर करने के लिए तर्क जोड़ा गया, डिफ़ॉल्ट रूप से (Ia219b, b/292208786)
गड़बड़ियां ठीक की गईं
- आर्टफ़ैक्ट के नाम और अन्य रेफ़रंस को एक जैसा रखने के लिए,
fullTracing.enable
इंस्ट्रुमेंटेशन आर्ग्युमेंट का नाम बदलकरperfettoSdkTracing.enable
किया गया.fullTracing.enable
, फ़ॉलबैक के तौर पर काम करता रहेगा. (I7cc00) - बेंचमार्क लाइब्रेरी के इंटरनल ट्रेसपॉइंट (माइक्रोबेंचमार्क लूप/फ़ेज़ ट्रेसिंग के साथ) अब Studio के सिस्टम ट्रेस व्यूअर में दिखेंगे. साथ ही, Perfetto में सही प्रोसेस के तहत नेस्ट किए गए बेंचमार्क लाइब्रेरी को दिखाया जाएगा. (I6b2e7, b/293510459)
- एपीआई 31+ पर मैक्रोबेंचमार्क NOT-PROFILEABLE गड़बड़ी को हटाया गया. साथ ही, eng/userdebug रूट किए गए डिवाइसों पर प्रोफ़ाइल की जांच को स्किप करें. (I2bac, 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)
गड़बड़ियां ठीक की गईं
- ओएस को ट्रेस करने के लिए गलत तरीके से कॉन्फ़िगर किए जाने पर, मैक्रोबेंच में गड़बड़ी की रिपोर्ट करें. इस गड़बड़ी को हाल ही में एपीआई 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
के लिए मैक्रोबेंचमार्क समर्थन. (I7ad37, b/285912360)- माइक्रोबैंचमार्क प्रोफ़ाइल बनाने की प्रोसेस एक अलग चरण में चली गई. इसलिए, यह मेज़रमेंट के बाद क्रम में हो जाती है. इसके बजाय, इसे बदला जाता है. अगर कैप्चर किए गए परफ़ेटो ट्रेस में
MethodTracing
ट्रेस सेक्शन भी मौजूद हैं, तो उसे भी शामिल कर लिया गया है. (I9f657, b/285014599) Mode.Sum
की मदद से,TraceSectionMetric
में गिनती का मेज़रमेंट जोड़ें. (Ic121a, b/264398606)
वर्शन 1.2.0-alpha15
7 जून, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
रिलीज़ हो गया है. वर्शन 1.2.0-alpha15 में ये कमियां हैं.
नई सुविधाएं
- टारगेट ऐप्लिकेशन के मेमोरी इस्तेमाल को ट्रैक करने के लिए, प्रयोग के तौर पर
MemoryUsageMetric
को जोड़ा गया. (I56453, b/133147125, b/281749311) PerfettoTrace.record
(If9d75, b/280460183) की मदद से, पूरी तरह से पसंद के मुताबिक Perfetto कॉन्फ़िगरेशन के लिए सहायता जोड़ें- बेसलाइन प्रोफ़ाइल जनरेशन स्किप करने के लिए, प्रॉपर्टी जोड़ी गई. इस्तेमाल:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020)
एपीआई में किए गए बदलाव
collectBaselineProfile
एपीआई, हमेशा स्थिर बेसलाइन प्रोफ़ाइल जनरेट करता है.collectStableBaselineProfile
एपीआई को हटा दिया गया है. इसके बजाय,collectBaselineProfile
का इस्तेमाल करें. (I17262, b/281078707)BaselineProfileRule
केfilterPredicate
आर्ग्युमेंट को शून्य के बराबर वाली वैल्यू में बदला गया, ताकि डिफ़ॉल्ट वैल्यू के तौर पर दस्तावेज़ को ज़्यादा साफ़ तौर पर दिखाया जा सके. (I3816e)
गड़बड़ियां ठीक की गईं
- परफ़ॉर्मेंस को बेहतर बनाने के लिए,
dryRunMode
मेंIsolationActivity
और Perfetto ट्रेस करने की सुविधा बंद करें, क्योंकि ये ज़्यादातर रनटाइम थे. (Ie4f7d) - इंस्ट्रुमेंटेशन टेस्ट आर्ग्युमेंट
androidx.benchmark.profiling.mode=StackSampling
औरandroidx.benchmark.profiling.sampleFrequency
का इस्तेमाल करके, मैक्रोबेंचमार्क में कॉल स्टैक सैंपलिंग की सुविधा. (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
को ठीक करें, ताकि अलग-अलग फ़्रेम आईडी वाले फ़्रेम को अनदेखा किया जा सके. इस वजह से,RenderThread
के ऐनिमेट होने के दौरान (जैसे कि किसी रिपल के दौरान), हाल ही के प्लैटफ़ॉर्म वर्शन (एपीआई 31+) पर मौजूद कुछ ऐनिमेशन कई फ़्रेम को अनदेखा कर सकते हैं. (I747d2, b/279088460)- 64Mb से बड़े ट्रेस के लिए ट्रेस प्रोसेसर पार्सिंग ठीक की गई. (Ief831, b/269949822)
pm dump-profiles
निर्देश के अलग-अलग आउटपुट की वजह से, Android U पर बेसलाइन प्रोफ़ाइल जनरेशन ठीक नहीं किया जा सका. (Id1392, b/277645214)- स्ट्रिंग की सही तरीके से तुलना करने के लिए, जीपीयू की घड़ी लॉक करने वाली स्क्रिप्ट ठीक करें (I53e54, b/213935715)
वर्शन 1.2.0-alpha13
5 अप्रैल, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
रिलीज़ हो गया है. वर्शन 1.2.0-alpha13 में ये कमियां हैं.
एपीआई में किए गए बदलाव
- आने वाली स्टार्टअप प्रोफ़ाइल की सुविधा के लिए बेसलाइन प्रोफ़ाइल जनरेट करते समय, प्रोफ़ाइल टाइप पैरामीटर जोड़ा गया (Ie20d7, b/275093123)
- परफ़ेटो ट्रेस के कॉन्टेंट के आधार पर, पूरी तरह से कस्टम मेट्रिक तय करने के लिए, प्रयोग के तौर पर नया
TraceMetric
एपीआई जोड़ा गया. (I4ce31, b/219851406) - किसी बेंचमार्क के दौरान, पेज में गड़बड़ियों की संख्या तय करने के लिए, प्रयोग के तौर पर उपलब्ध मेट्रिक जोड़ें. (I48db0)
वर्शन 1.2.0-alpha12
22 मार्च, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
रिलीज़ हो गया है. वर्शन 1.2.0-alpha12 में ये कमियां हैं.
नई सुविधाएं
- नया बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन, ऐल्फ़ा वर्शन में रिलीज़ किया गया है. इससे बेसलाइन प्रोफ़ाइल आसानी से जनरेट करने और डेवलपर वर्कफ़्लो को आसान बनाने में मदद मिलती है.
एपीआई में किए गए बदलाव
- एपीआई 21 और 22 पर परफ़ेटो ट्रेस करने की सुविधा हटा दी गई है. इसमें माइक्रोबेंचमार्क और एक्सपेरिमेंट के तौर पर शुरू किए गए
PerfettoTrace
एपीआई शामिल हैं. इस वर्शन से पहले, कुछ डिवाइसों परUiAutomation
कनेक्शन ठीक से काम नहीं करते थे. (I78e8c) PerfettoTraceProcessor
के लिए सार्वजनिक एक्सपेरिमेंटल एपीआई जोड़ा गया, ताकि ट्रेस कॉन्टेंट को पार्स किया जा सके. इस चरण में, Perfetto ट्रेस के डेटा पर आधारित पूरी तरह से कस्टम मेट्रिक बनाने की प्रोसेस शुरू की गई है. (I2659e, b/219851406)
वर्शन 1.2.0-alpha11
8 मार्च, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
रिलीज़ हो गया है. वर्शन 1.2.0-alpha11 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- एक से ज़्यादा APK वाले ऐप्लिकेशन बंडल से प्रोफ़ाइल फिर से इंस्टॉल करते समय या उनसे प्रोफ़ाइलों को निकालते समय,
MacrobenchmarkRule
औरBaselineProfileRule
में क्रैश की समस्या ठीक की गई. (I0d8c8, b/270587281)
वर्शन 1.2.0-alpha10
22 फ़रवरी, 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
रिलीज़ हो गया है. वर्शन 1.2.0-alpha10 में ये कमियां हैं.
नई सुविधाएं
- Android 14 और इसके बाद के वर्शन वाले डिवाइसों पर, कंपाइलेशन की स्थिति रीसेट करने के लिए, Macrobenchmark टारगेट ऐप्लिकेशन को फिर से इंस्टॉल नहीं करता था. ऐसा प्लैटफ़ॉर्म की नई सुविधा की वजह से हुआ है. पहले, रूट किया गया डिवाइस होना या हर मानदंड के काम करने से पहले ऐप्लिकेशन की सभी स्थिति (जैसे कि उपयोगकर्ता लॉगिन) को हटाना ज़रूरी था. (I9b08c, b/249143766)
गड़बड़ियां ठीक की गईं
- कंपाइलेशन स्किप करने की वजह से, खाली प्रोफ़ाइल के साथ क्रैश न होने के लिए,
DryRunMode
को ठीक करें. इसके बजाय, यह एक बार बारी-बारी से प्रोफ़ाइल को एक्सट्रैक्ट करता है, ताकि यह पक्का किया जा सके कि कुछ कैप्चर किया गया है. (I2f05d, b/266403227) - पुराने एपीआई लेवल पर, पावरस्टेट की मौजूदगी की जांच करते समय
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) - ऐप्लिकेशन मॉड्यूल (जैसे कि नॉन-इंस्ट्रूमेंटिंग टेस्ट APKs) में
PerfettoTrace
कैप्चर की समस्या ठीक करना (I12cfc) - Studio आउटपुट में बेसलाइन प्रोफ़ाइल adb पुल आर्ग्युमेंट ऑर्डर (I958d1, b/261781624)
- आर्म एम्युलेटर एपीआई 33 की अब सही तरह से पहचान हो गई है, जैसे कि मैक्रोबेंचमार्क चलाने की कोशिश करते समय और यह चेतावनी को सही तरीके से प्रिंट करेगा. (69133b,b/262209591)
- Macrobenchmark (fe4114, b/232448937) में, बिना बैटरी वाले डिवाइसों पर बैटरी लेवल की जांच न करें
वर्शन 1.2.0-alpha08
7 दिसंबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
रिलीज़ हो गया है. वर्शन 1.2.0-alpha08 में ये कमियां हैं.
एपीआई में किए गए बदलाव
- टेस्ट के तौर पर, टेस्ट के तौर पर परफ़ेटो ट्रेस (जिसे सिस्टम ट्रेस भी कहा जाता है) कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर नए एपीआई
PerfettoTrace.record {}
औरPerfettoTraceRule
जोड़े गए. इससे टेस्ट के व्यवहार और परफ़ॉर्मेंस की जांच की जा सकेगी. (I3ba16) BaselineProfileRule
अब पैकेज प्रीफ़िक्स की सूची के बजाय फ़िल्टर प्रेडिकेट स्वीकार करता है. इससे फ़िल्टर को जांच का पूरा कंट्रोल मिलता है. (I93240)- एक्सपेरिमेंट के तौर पर उपलब्ध कोई एपीआई
BaselineProfileRule.collectStableBaselineProfile
जोड़ें. यह तब तक इंतज़ार करता है, जब तक बेसलाइन प्रोफ़ाइल के N बार-बार होने पर रुक जाते हैं. (I923f3) BaselineProfileRule
का इस्तेमाल करके बेसलाइन प्रोफ़ाइल जनरेट करते समय, आउटपुट फ़ाइल के नाम का प्रीफ़िक्स तय करने की सुविधा जोड़ें. (I7b59f, b/260318655)
गड़बड़ियां ठीक की गईं
- आउटपुट राइटिंग को ज़्यादा सुरक्षित बनाएं. ऐसा करने से, आउटपुट फ़ाइलों को चुपचाप लिखे या जोड़े जाने से रोका जा सकता है. ऐसा खास तौर पर, एपीआई 21/22 के दौरान किया जा सकता है. (If8c44, b/227510293)
- फ़ाइल को सही तरीके से बनाने और रखने के लिए,
simpleperf
ट्रेस आउटपुट को ठीक करें. इससे आम तौर पर उन समस्याओं को भी ठीक किया जा सकता है जहां किसी फ़ाइल को ग्रेडल की मदद से नहीं खींचा जा सका. (I12a1c, b/259424099) - प्रोफ़ाइल इंस्टॉलर के बहुत पुराना होने पर, प्रोफ़ाइल इंस्टॉलर से जुड़ी गड़बड़ी के मैसेज को प्रिंट करें. यह अब आपको एपीआई 31 से 33 तक बेसलाइन प्रोफ़ाइल को मेज़र करने के लिए प्रोफ़ाइलइंस्टॉलर वर्शन (1.2.1) को अपडेट करने के लिए कहता है, यह बताने की जगह कि प्रोफ़ाइल काम नहीं करती. (Ia517f, b/253519888)
- 'गड़बड़ी वाले मैसेज' पर कई शेल कमांड फ़ेल होने की समस्या को ठीक किया गया. 'प्रिंट ज़रूरी एपीआई' <=23. साथ ही, बाइनरी सेटअप और ट्रेस कैप्चर न हो पाने की गड़बड़ियों को भी ठीक किया गया (Ib6b87, b/258863685)
- जनरेट किए गए प्रोफ़ाइल नियम, समय के साथ बदलने वाले बदलावों की संख्या को कम करने के लिए, अपने-आप क्रम से लगाए जाते हैं. ऐसा तब होता है, जब सोर्स कंट्रोल में प्रोफ़ाइल के नियमों की जांच की जा रही हो. (Ie2509)
- Android 13 (एपीआई 33) से पहले के वर्शन वाले, बिना रूट किए गए बिल्ड के दौरान
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
(I6c245, b/259508183) वाले मैसेज के साथ क्रैश होने की समस्या ठीक की गई
आम समस्याएं
- ऐसा हो सकता है कि प्रोफ़ाइल इंस्टॉलर मेनिफ़ेस्ट में ब्रॉडकास्ट रजिस्ट्री मौजूद न होने की वजह से, MacrobenchmarkScope.dropShaderCache()
क्रैश हो जाए. हालांकि, इसे अब तक रिलीज़ नहीं किया गया है. (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 में ये कमिट हैं.
एपीआई में किए गए बदलाव
- मैक्रोबेंचमार्क में, ऊर्जा और पावर को मापने के लिए,
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
, टारगेट किए गए ऐप्लिकेशन मेंforceEnableAppTracing
का इस्तेमाल करके,androidx.tracing.Trace
के एपीआई लेवल से कम वाले वर्शन के साथ काम करता है. (Id7b68, b/231455742)
गड़बड़ियां ठीक की गईं
- सभी आउटपुट/गड़बड़ियों की पुष्टि करके, सभी इंटरनल शेल कमांड की सुरक्षा बेहतर बनाई गई है. (I5984d, b/255402908, b/253094958)
- बेसलाइन प्रोफ़ाइल
adb pull
कमांड में डिवाइस की जानकारी दें, ताकि एक से ज़्यादा डिवाइस कनेक्ट होने पर, पुल कमांड को आसानी से कॉपी किया जा सके (एक एम्युलेटर तक) (I6ac6c, b/223359380) - अगर मैक्रोबेंचमार्क टेस्ट APK को अपने-आप इंस्टॉल होने वाले टूल के तौर पर सेट अप नहीं किया गया है, तो गड़बड़ी का मैसेज जोड़ें. यह गड़बड़ी, टारगेट ऐप्लिकेशन की प्रक्रिया में मैक्रोबेंचमार्किंग को रोक देती है. प्रोसेस के दौरान, मैक्रोबेंच, ऐप्लिकेशन को कंपाइल/किल/कोल्ड नहीं कर पाएगा या अपनी अनुमतियों को कंट्रोल नहीं कर पाएगा (I4279b)
measureRepeated()
में उस समस्या को ठीक किया गया है जिसकी वजह सेsetupBlock
के बाद,StartupMode.COLD
टारगेट प्रोसेस को बंद नहीं करेगा. अब ऐप्लिकेशन के साथ इंटरैक्ट करने वाला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)- इस बदलाव से यह भी ठीक हो जाएगा कि रूट न किए गए डिवाइसों पर, किसी ऐप्लिकेशन की प्रोफ़ाइल को डिस्क में कैसे भेजा जाएगा. हालांकि, इसके लिए टारगेट ऐप्लिकेशन की प्रोफ़ाइल इंस्टॉलर की डिपेंडेंसी को अपडेट करना होगा.
- बिना रूट किए डिवाइस पर
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 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- मानदंड कैप्चर किए गए ट्रेस (I3f3ae, b/239677443) के लिए, Studio के सिस्टम ट्रेस व्यूअर में फ़्रेम के ब्रेकडाउन की समस्या ठीक करना
FrameOverrun
को 29 के बजाय एपीआई 31 के तौर पर दिखाने के लिए,FrameTimingMetric
को सही करें (I716dd, b/220702554)BaselineProfileRule
में इटरेशन सेट करें और अगर टारगेट पैकेज इंस्टॉल न हो, तो उसे साफ़ तौर पर फेंकें (MacrobenchmarkRule के लिए पहले से सेट किया जा चुका था). (Ic09a3, b/227991471)
वर्शन 1.2.0-alpha04
21 सितंबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
रिलीज़ हो गया है. वर्शन 1.2.0-alpha04 में ये कमियां हैं.
नई सुविधाएं
मैक्रोबेंचमार्क (पहले से माइक्रो में उपलब्ध) में,
dryRunMode.enable
इंस्ट्रुमेंटेशन आर्ग्युमेंट के लिए सहायता जोड़ें.इससे लोकल डेवलपमेंट और ऐप्लिकेशन ऑटोमेशन की पुष्टि की जा सकेगी. उदाहरण के लिए, पहले से सबमिट करने के दौरान. यह 1 की इटरेशन को बदल देता है, कंपाइलेशन को छोड़ देता है, सभी कॉन्फ़िगरेशन की गड़बड़ियों को रोक देता है, और .json फ़ाइल के आउटपुट को मेज़र करने की सुविधा को बंद कर देता है. (Ib51b4, b/175149857)Gradle कमांड लाइन:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
Build.gradle में:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
गड़बड़ियां ठीक की गईं
StartupTimingMetric
कोMacrobenchmarkScope.startActivityAndWait()
से लॉन्च करने के लिए, मेज़र की गई गतिविधियों की ज़रूरत नहीं होगी. इसका मतलब है कि मेट्रिक यहां से लॉन्च पिक अप कर सकती है. उदाहरण के लिए, सूचनाएं,Context.startActivity()
, इन-ऐप्लिकेशन गतिविधि के हिसाब से नेविगेशन या शेल कमांड. (Ia2de6, b/245414235)- वह गड़बड़ी ठीक करें जहां
startActivityAndWait
, फ़्रेम की पहचान करने वाली प्रोसेस में सख्ती को कम करके, एम्युलेटर पर लॉन्च पूरा होने तक इंतज़ार करने का समय खत्म कर देगा. (Ibe2c6, b/244594339, b/228946895)
वर्शन 1.2.0-alpha03
7 सितंबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
रिलीज़ हो गया है. वर्शन 1.2.0-alpha03 में ये कमियां हैं.
नई सुविधाएं
BenchmarkRule
/JUnit4
से अलग,BenchmarkState
का अलग से इस्तेमाल करने के लिए, एक्सपेरिमेंटल एपीआई जोड़े गए. (Id478f, b/228489614)
गड़बड़ियां ठीक की गईं
startActivityAndWait
के लिए Leanback फ़ॉलबैक जोड़ा गया. (01ed77, b/242899915)
वर्शन 1.2.0-alpha02
24 अगस्त, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
रिलीज़ हो गया है. वर्शन 1.2.0-alpha02 में ये कमियां हैं.
एपीआई में किए गए बदलाव
- रूट किए होने पर भी,
MacrobenchmarkScope.killProcess()
के लिएam force stop
को डिफ़ॉल्ट रूप से सेट किया जाता है. हालांकि, बेसलाइन प्रोफ़ाइल जनरेट करने के दौरान ऐसा नहीं होता. इसे वैकल्पिक बूलियन आर्ग्युमेंट से बदला जा सकता है. (02cce9, b/241214097)
गड़बड़ियां ठीक की गईं
- सिस्टम ऐप्लिकेशन के लिए, बेसलाइन प्रोफ़ाइल जनरेट करने की सुविधा काम करती है. (I900b8, b/241214097)
- अनरूट किए गए डिवाइसों पर ओडीपीएम पावर मेट्रिक की जांच करने से जुड़ी सहायता. (a38c78, b/229623230)
वर्शन 1.2.0-alpha01
27 जुलाई, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
रिलीज़ हो गया है. वर्शन 1.2.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
- नया ट्रेसिंग-परफ़ेटो-कॉमन कॉम्पोनेंट, टूलिंग की मदद से इसे दिखाने वाले ऐप्लिकेशन में Perfetto SDK टूल ट्रेस करने की सुविधा चालू करता है (I2cc7f)
मैक्रोबेंचमार्क को फ़िल्टर करने की सुविधा चालू करने के लिए,
androidx.benchmark.enabledRules
इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया. यह सिर्फ़ मानदंडों या सिर्फ़ बेसलाइन प्रोफ़ाइल जनरेशन के हिसाब से काम करता है. 'Macrobenchmark' या 'BaselineProfile' में पास करें सिर्फ़ एक तरह का टेस्ट चलाने के लिए, उदाहरण के लिए जब हम एम्युलेटर परBaselineProfiles
जनरेट कर रहे होते हैं. कॉमा लगाकर अलग की गई सूची भी काम करती है. (I756b7, b/230371561)उदाहरण के लिए, आपके मैक्रोबेंचमार्क के बिल्ड.gradle में:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
या Gradle कमांड लाइन से:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
एपीआई में किए गए बदलाव
- ऊर्जा और बिजली से जुड़े टास्क को मानदंडों में मापने के लिए, नया
PowerMetric
जोड़ा गया. (I9f39b, b/220183779) - प्रोफ़ाइल को रीसेट करने और कंपाइल करने की प्रक्रिया को स्किप करने के लिए, नया कंपाइलेशन मोड
CompilationMode.Ignore
जोड़ा गया. (Ibbcf8, b/230453509) - आउटपुट फ़ाइल को पैकेज के नाम के हिसाब से फ़िल्टर करने के लिए,
BaselineProfileRule#collectBaselineProfile
में नया पैरामीटर जोड़ा गया (If7338, b/220146561) - डेवलपर को डिवाइस को डिस्चार्ज करने में मदद मिलती है, ताकि बिजली की तेज़ी से खर्च को मापा जा सके. (I6a6cb)
MacrobenchmarkScope
में शेडर की कैश मेमोरी को मिटाने की सुविधा जोड़ी गई. (I32122)- इससे डेवलपर, मेट्रिक टाइप और उसकी पूरी जानकारी को दिखाने के लिए, सबसिस्टम कैटगरी को कॉन्फ़िगर कर सकता है. (I810c9)
- इससे पहले,
UnsupportedOperationException
को ऐसे डिवाइस पर चलाया जाता था जिस पर यह सुविधा काम नहीं करती. अब यूओई सिर्फ़ तब होता है, जब मेट्रिक का इस्तेमाल ऐसे डिवाइस पर किया जाता है जिस पर यह सुविधा काम नहीं करती (जैसे:PowerMetric.configure
). (I5cf20, b/227229375) - मैक्रोबेंचमार्क में, सिस्टम की हर कैटगरी में कुल पावर और ऊर्जा का आकलन करने के लिए,
TotalPowerMetric
औरTotalEnergyMetric
जोड़े गए. (I3b26b, b/224557371)
गड़बड़ियां ठीक की गईं
- समस्या को ठीक किया गया है, जहां प्रोसेस नहीं किए गए बिल्ड के हर मैक्रोबेंचमार्क के बीच, कंपाइल किए गए तरीके सही तरीके से रीसेट नहीं हो रहे थे. हमें खेद है कि इसके लिए हर बार एपीके को फिर से इंस्टॉल करना पड़ेगा, जिससे हर मैक्रोबेंचमार्क का ऐप्लिकेशन डेटा मिट जाएगा. (I31c74, b/230665435)
- एपीआई 21/22 (If7fd6, b/227509388, b/227510293, b/227512788) पर ट्रेस रिकॉर्डिंग के क्रैश होने की समस्या ठीक की गई
- 'कोई भी मेट्रिक पढ़ने में समस्या' को ठीक करने के लिए, ओवरहाल गतिविधि के लॉन्च पूरा होने का पता लगाने वाली सुविधा अपवाद के तौर पर लागू किया जा सकता है. (Ia517c)
वर्शन 1.1.1
वर्शन 1.1.1
9 नवंबर, 2022
androidx.benchmark:benchmark-*:1.1.1
रिलीज़ हो गया है. वर्शन 1.1.1 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android11 (एपीआई 30) के बाद के वर्शन वाले कुछ डिवाइसों पर होने वाली
android.system.ErrnoException: open failed: EACCES
को ठीक करता है. यह1.2.0-alpha01
की खास पेशकश है. (aosp/2072249)
वर्शन 1.1.0
वर्शन 1.1.0
15 जून, 2022
androidx.benchmark:benchmark-*:1.1.0
रिलीज़ हो गया है. वर्शन 1.1.0 में ये कमियां शामिल हैं.
- यह वर्शन,
androidx.benchmark:benchmark-*:1.1.0-rc03
के जैसा है.
1.0.0 के बाद के अहम बदलाव
Jetpack मैक्रोबेंचमार्क के साथ स्टार्टअप और स्क्रोलिंग जैसे पूरे ऐप्लिकेशन के इंटरैक्शन को मेज़र करने की सुविधा मिलती है. इसकी मदद से ट्रेस कैप्चर करने और ट्रैक करने के सेक्शन को मापें.
बेसलाइन प्रोफ़ाइल के लिए सहायता
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)
मैक्रोबेंचमार्क के साथ बेसलाइन प्रोफ़ाइल जनरेट करते समय, मैनेज किए जा रहे 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>
का इस्तेमाल करके, टारगेट को पूरी तरह से कंपाइल किया जा सकता है. इसके बाद, मैक्रोबेंचमार्क के कंपाइलेशन चरण को बायपास किया जा सकता है.उदाहरण के लिए, आपके मैक्रोबेंचमार्क के बिल्ड.gradle में:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
या Gradle कमांड लाइन से:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
androidx.benchmark.enabledRules
इंस्ट्रुमेंटेशन तर्क जोड़कर, मैक्रोबेंचमार्क और बेसलाइन प्रोफ़ाइल जनरेट करने वाले टेस्ट के बीच मॉड्यूल शेयर करना आसान बनाया गया. 'Macrobenchmark' या 'BaselineProfile' में पास करें सिर्फ़ एक तरह का टेस्ट चलाने के लिए, उदाहरण के लिए जब एम्युलेटर परBaselineProfiles
जनरेट किया जा रहा हो. (I756b7, b/230371561)उदाहरण के लिए, आपके मैक्रोबेंचमार्क के बिल्ड.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 में ये तय किए गए अपडेट शामिल हैं.
गड़बड़ियां ठीक की गईं
- एपीआई 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
का इस्तेमाल करने पर मैक्रोबेंचमार्क, स्टार्टअप मेट्रिक इकट्ठा नहीं कर पाते. (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 (एपीआई) पर थर्मल थ्रॉटलिंग का पता लगाने के लिए,
PowerManager
का इस्तेमाल करें 29) और उससे ज़्यादा है. इससे, गलत जानकारी की फ़्रीक्वेंसी बहुत कम हो जाती है थर्मल थ्रॉटलिंग का पता लगाने में पॉज़िटिव रिस्पॉन्स (90 के बाद फिर से कोशिश करें मानदंड दूसरा कूलडाउन पीरियड), और उपयोगकर्ता पर मानदंडों को काफ़ी तेज़ी से बढ़ा देते हैं बिल्ड. इससे घड़ी के समय में भी थ्रॉटल की पहचान की जा सकती है लॉक किया गया हो (अगर ये डिवाइस की फ़िज़िकल चीज़ों के हिसाब से बहुत ऊपर लॉक हों वातावरण). (I9c027, b/217497678, b/131755853)सैंपल की गई प्रोफ़ाइल को
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.tracing
Jetpack API की मदद से कस्टम ट्रेसिंग को कैप्चर नहीं करती है. यह ट्रेसिंग, गड़बड़ी का पता लगाने में मददगार होती है में बदलाव नहीं हो सकता, खास तौर पर ऐसे सोर्स से जो मानक कीमत के हिसाब से नहीं हैं. (I298be, b/205636583, b/145598917) CompilationModes
को तीन क्लास में साफ़ तौर पर बताएं - पूरा, कोई नहीं, आंशिक. पहले, कंपाइलेशन आर्ग्युमेंट (जिसे अब हम लागू करने की जानकारी कहते हैं) और सुविधाओं के नाम अलग-अलग रखे जाते थे. इससे प्लैटफ़ॉर्म के अलग-अलग वर्शन के बीच के तालमेल, संभावित कॉम्बिनेशन, और व्यवहार के बारे में साफ़ तौर पर पता चलता है. (I3d7bf, b/207132597)- सेटअप और मेज़रमेंट की प्रोसेस, अब हमेशा एक-दूसरे से जुड़ी हुई हैं. अब पैकेज के नाम और इटरेशन के बारे में क्वेरी की जा सकती है. हालांकि, कुछ वॉर्मअप की स्थितियों में, इटरेशन की वैल्यू
null
हो सकती है. (Id3b68, b/208357448, b/208369635)
गड़बड़ियां ठीक की गईं
CompilationMode.Speed
को गलत तरीके सेNone
के तौर पर मार्क किया गया (I01137)
वर्शन 1.1.0-alpha12
17 नवंबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
रिलीज़ हो गया है. वर्शन 1.1.0-alpha12 में ये कमियां हैं.
नई सुविधाएं
- कस्टम ट्रेस पर आधारित प्रयोग के लिए, TraceSectionMetric जोड़ें समय की माप. (I99db1, b/204572664)
गड़बड़ियां ठीक की गईं
- यूज़र इंटरफ़ेस (यूआई) की जांच करने के लिए, डिवाइस को हर बार चालू करें - लॉकस्क्रीन की ज़रूरत है. (Ibfa28, b/180963442)
- स्टैकसैंपलिंग प्रोफ़ाइलिंग मोड के एक से ज़्यादा क्रैश को चालू किया गया है एम्युलेटर और रूट न किए गए डिवाइस (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 में ये कमियां हैं.
एपीआई में किए गए बदलाव
- मैक्रोबेंचमार्क में अब
23
काminSdkVersion
है. (If2655) - एक्सपेरिमेंट के तौर पर नया
BaselineProfileRule
जोड़ा गया है. इसकी मदद से, ऐप्लिकेशन के ज़रूरी उपयोगकर्ता अनुभव के लिए बेसलाइन प्रोफ़ाइल जनरेट की जा सकती हैं. आगे की पूरी जानकारी देने वाले दस्तावेज़. (इबेफ़ा, b/203692160) - जोड़ा गया, दोहराए गए इंटरफ़ेस का वैरिएंट हटाता है इस्तेमाल करने का सुझाव देते हैं, क्योंकि इससे समस्याओं को ठीक करने/हल करने में अस्पष्टता पैदा होती है. तरीका. Java कॉलर को फिर से Unit.Instance का डेटा वापस करना होगा मापा गया. अगर इससे आपको परेशानी होती है, तो कृपया इस गड़बड़ी की शिकायत करें. हम आने वाले वर्शन में इस पर फिर से विचार किया जा सकता है. (Ifb23e, b/204331495)
वर्शन 1.1.0-alpha10
27 अक्टूबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
रिलीज़ हो गया है. वर्शन 1.1.0-alpha10 में ये कमियां हैं.
एपीआई में किए गए बदलाव
- एपीआई 23 पर वापस काम करने के लिए, Backport StartupTimingMetric. यह इसे लागू करने का नया तरीका, इंतज़ार करने के लिए reportFullyDrawn() को भी बेहतर तरीके से मैनेज करता है जब तक संबंधित कॉन्टेंट रेंडर नहीं हो जाता. (If3ac9, b/183129298)
- Java कॉलर के लिए, कई MacrobenchmarkScope के तरीकों में JvmOverloads जोड़े गए. (I644fe, b/184546459)
- ऐसा वैकल्पिक MacrobenchmarkRule.measureReped फ़ंक्शन उपलब्ध कराएं जो Java भाषा में मुहावरे का इस्तेमाल करने के लिए,
Consumer<MacrobenchmarkScope>
का इस्तेमाल करता है. (If74ab, b/184546459)
गड़बड़ियां ठीक की गईं
- ट्रेस शुरू न होने और मेट्रिक डेटा के मौजूद न होने की समस्या को ठीक किया गया है. "मेट्रिक पढ़ने में समस्या" ठीक हो सकती है मानक कीमत के दौरान" जो लाइब्रेरी की वजह से हुए थे. (I6dfcb, b/193827052, b/200302931)
- फ़्रेम नेगेटिव के बारे में बताने के लिए, इसका नाम बदलकर FrameOverRun कर दिया गया है. इससे यह पता चलता है कि फ़्रेम अपने तय बजट में कितना खर्च हुआ. (I6c2aa, b/203008701)
वर्शन 1.1.0-alpha09
13 अक्टूबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
रिलीज़ हो गया है. वर्शन 1.1.0-alpha09 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- API 31/S+ पर रूट के बिना कर्नेल पेज की कैश मेमोरी को छोड़ने की सुविधा देता है. इससे StartupMode.COLD लॉन्च सटीक होगा. (Iecfdb, b/200160030)
वर्शन 1.1.0-alpha08
29 सितंबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
रिलीज़ हो गया है. वर्शन 1.1.0-alpha08 में ये कमियां हैं.
एपीआई में किए गए बदलाव
- एपीआई 23 (If39c2, b/183129298) पर वापस जाने के लिए, स्क्रोल करने वाले मैक्रोबेंचमार्क चालू करें
- यूज़र इंटरफ़ेस (यूआई) और JSON आउटपुट में, सैंपल के तौर पर चुनी गई मेट्रिक का नया टाइप जोड़ें. इस पर फ़ोकस रहेगा हर बार के हिसाब से कई सैंपल के पर्सेंटाइल. (I56247, b/199940612)
- पूरे मानदंड में फ़्लोटिंग पॉइंट मेट्रिक पर स्विच करें लाइब्रेरी (Studio के यूज़र इंटरफ़ेस (यूआई) में काट-छांट की गई). (I69249, b/197008210)
वर्शन 1.1.0-alpha07
1 सितंबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
रिलीज़ हो गया है. वर्शन 1.1.0-alpha07 में ये कमिट हैं.
एपीआई में किए गए बदलाव
- एपीआई के कम से कम लेवल को बढ़ाकर 21 कर दिया गया है. इससे, आने वाले समय में एपीआई लेवल के लिए तय किए गए सबसे कम लेवल के बारे में पता चलेगा. फ़िलहाल, कम से कम मौजूदा एपीआई को ज़रूरी API() की मदद से भेजा जाता है. फ़िलहाल, यह 29 (I440d6, b/183129298) है
गड़बड़ियां ठीक की गईं
ProfileInstaller
को ठीक करता है, ताकि बेसलाइन प्रोफ़ाइल का इस्तेमाल करने वाले ऐप्लिकेशन के लिए,CompilationMode.BaselineProfile
का इस्तेमाल करके मैक्रोस्टैंड चलाना आसान हो गया हो. (I42657, b/196074999) ध्यान दें:androidx.profileinstaller:profileinstaller:1.1.0-alpha04
या उससे बाद के वर्शन पर भी अपडेट करना ज़रूरी है.StartupMode.COLD
+CompilationMode.None
बेंचमार्क अब पहले से ज़्यादा स्थिर हैं. (I770cd, b/196074999)
वर्शन 1.1.0-alpha06
18 अगस्त, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
रिलीज़ हो गया है. वर्शन 1.1.0-alpha06 में ये कमिट हैं.
एपीआई में किए गए बदलाव
- स्थानीय तौर पर जांच या प्रोफ़ाइल बनाते समय, इटरेशन की गिनती में मैन्युअल तौर पर बदलाव करने की अनुमति देने के लिए,
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
के ज़रिए लॉन्च शुरू करने के लिए, startActivityAndAND को स्विच किया गया. यह बटन, उपयोगकर्ताओं की संख्या को कम कर देता है किसी भी मेज़रमेंट की प्रोसेस के समय में करीब 5 सेकंड का समय लगेगा. हालांकि, यह समय काम करना बंद कर देगा इंटेंट पार्सल. (I5a6f5, b/192009149
गड़बड़ियां ठीक की गईं
- थर्मल थ्रॉटल का पता लगाने की क्षमता कम करें और अगर थ्रॉटल का बार-बार पता चलता है, तो बेसलाइन का फिर से पता लगाएं. (I7327b)
- Android S बीटा (Ib60cc, b/193260119) पर काम करने के लिए, FrameTimingMetric को ठीक करता है
- टारगेट किए गए ऐप्लिकेशन को बंद स्थिति से बाहर लाने के लिए,
EmptyActivity
का इस्तेमाल करें. इससेCompilationMode.BaselineProfile
को बेहतर तरीके से सपोर्ट किया जा सकता है. (Id7cac, b/192084204) - प्लैटफ़ॉर्म स्टैंडर्ड से मिलान करने के लिए, ट्रेस फ़ाइल एक्सटेंशन को
.perfetto-trace
में बदला गया. (I4c236, b/174663039) - StartupTimeMetrics अब "fullDrawnMs" जनरेट करता है मेट्रिक ताकि आपके ऐप्लिकेशन की रेंडरिंग पूरी होने में लगने वाला समय मापा जा सके. यहां की यात्रा पर हूं अपने ऐप्लिकेशन के लिए यह मेट्रिक तय करें, तो Activity.reportFullyDrawn को तब कॉल करें जब आपका शुरुआती कॉन्टेंट तैयार है. जैसे, जब आपके शुरुआती आइटम की सूची तैयार हो DB या नेटवर्क से लोड किए जाते हों. (reportFullyDrawn तरीका उपलब्ध है कंपोनेंट ऐक्टिविटी पर बिल्ड वर्शन की जांच किए बिना). ध्यान दें कि मेट्रिक को कैप्चर करने के लिए आपका टेस्ट काफ़ी समय तक चलना चाहिए (startActivityAndAndroid, reportFullyDrawn का इंतज़ार नहीं करता). (If1141, b/179176560)
- 50+ मि॰से॰ से ज़्यादा ट्रेस में Ui मेटाडेटा जोड़ने की लागत कम करें (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, मानदंड - मैक्रोबेंचमार्क के लिए एक बड़ा कॉम्पोनेंट लेकर आता है. बेंचमार्क की मदद से आप सीपीयू लूप को माप सकते हैं. इसके अलावा, मैक्रोबेंचमार्क की मदद से आप स्टार्टअप और स्क्रोलिंग जैसे पूरे ऐप्लिकेशन के इंटरैक्शन माप सकते हैं और ट्रेस कैप्चर कर सकते हैं. ज़्यादा जानकारी के लिए, लाइब्रेरी से जुड़े दस्तावेज़ देखें.
androidx.benchmark:benchmark-*:1.1.0-alpha02
रिलीज़ हो गया है. वर्शन 1.1.0-alpha02 में ये कमियां हैं.
नई सुविधाएं
मैक्रोबेंचमार्क आर्टफ़ैक्ट जोड़े गए (androidx.benchmark:benchmark-macro-junit4
और androidx.benchmark:benchmark-macro
)
- अपने ऐप्लिकेशन से स्टार्टअप, स्क्रोलिंग/ऐनिमेशन की परफ़ॉर्मेंस मेट्रिक को स्थानीय तौर पर या सीआई में कैप्चर करें
- Android Studio में ट्रेस कैप्चर करें और उनकी जांच करें
गड़बड़ियां ठीक की गईं
- Android 12 पर आउटपुट डायरेक्ट्री के साथ वर्कअराउंड शेल की अनुमतियों की समस्या (ध्यान दें - जिन डिवाइसों पर असर हुआ है उन पर आउटपुट फ़ाइलों को कैप्चर करना जारी रखने के लिए, Android Gradle प्लग इन को 7.0.0 कैनरी और Android Studio को Arctic Fox (2020.3.1) में अपडेट करना पड़ सकता है. (Icb039)
- बेंचमार्कप्लग इन (6be1c1, b/159804788) में कॉन्फ़िगरेशन को कैश मेमोरी में सेव करने की सुविधा का इस्तेमाल नहीं किया जा सकता
- आसान फ़ाइल आउटपुट - यह ऐसी डायरेक्ट्री में डिफ़ॉल्ट रूप से चालू रहती है जिसे
requestLegacyExternalStorage=true
(8b5a4d, b/172376362) की ज़रूरत नहीं होती - यह नीति, लाइब्रेरी प्रिंटिंग के लिए लॉगकैट फ़ाइल न मिलने पर मिलने वाली चेतावनियों को ठीक करती है उन प्लैटफ़ॉर्म वर्शन पर JIT थ्रेड जहां यह मौजूद नहीं है. (I9cc63, b/161847393)
- डिवाइस की ज़्यादा से ज़्यादा फ़्रीक्वेंसी को पढ़ने के लिए ठीक किया गया. (I55c7a)
वर्शन 1.1.0-alpha01
10 जून, 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01
, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
, और androidx.benchmark:benchmark-junit4:1.1.0-alpha01
रिलीज़ हुए हैं. वर्शन 1.1.0-alpha01 में ये कमियां हैं.
1.1 की नई सुविधाएं
- आवंटन मेट्रिक - मानदंड अब वॉर्मअप और समय के बाद, ऐलोकेशन की गिनती को कैप्चर करते हुए एक और चरण चलाते हैं. आवंटन की वजह से प्लैटफ़ॉर्म के पुराने वर्शन पर परफ़ॉर्मेंस पर असर पड़ सकता है. O में 140 लोगों की संख्या M में 8ns हो गई है - इसका आकलन Nexus5X पर किया जाता है, जिसमें घड़ियां लॉक होती हैं. यह मेट्रिक, Android Studio कंसोल आउटपुट के साथ-साथ,
- प्रोफ़ाइल में बदलाव करना - अब बेंचमार्क रन के लिए प्रोफ़ाइलिंग डेटा कैप्चर किया जा सकता है, ताकि यह पता लगाया जा सके कि आपका कोड धीमा क्यों चल रहा है. बेंचमार्क की सुविधा, ART से ट्रेस करने के तरीके या तरीके सैंपलिंग को कैप्चर करने में मदद करती है. फ़ाइल > खोलें.
- बेंचमार्क Gradle प्लग इन अब आसान सेटअप के लिए डिफ़ॉल्ट उपलब्ध कराता है:
testBuildType
को डिफ़ॉल्ट रूप से रिलीज़ करने के लिए सेट किया गया है, ताकि पहले से मौजूद कोड कवरेज वाली डिपेंडेंसी का इस्तेमाल न किया जा सके. रिलीज़ BuildType को डिफ़ॉल्ट बिल्डटाइप के तौर पर भी कॉन्फ़िगर किया जाता है. इससे पहली बार प्रोजेक्ट खोलते समय Android Studio, बिल्ड का सही वैरिएंट अपने-आप चुन सकता है. (b/138808399)signingConfig.debug
का इस्तेमाल, डिफ़ॉल्ट साइनिंग कॉन्फ़िगरेशन (b/153583269) के तौर पर किया जाता है
** गड़बड़ियां ठीक की गईं **
- वॉर्मअप ट्रांज़िशन के ऊपर के समय को काफ़ी कम किया गया, क्योंकि हर बेंचमार्क के लिए पहला मेज़रमेंट, दूसरे की तुलना में आर्टिफ़िशियल तरीके से ज़्यादा था. यह समस्या बहुत छोटे मानदंडों (1 माइक्रोसेकंड या इससे कम) में ज़्यादा सामने आई. (b/142058671)
- कमांड लाइन से चलते समय, हर बेंचमार्क के लिए, प्रिंट की गई
InstrumentationResultParser
गड़बड़ी को ठीक किया गया. (I64988, b/154248456)
आम समस्याएं
- कमांड लाइन, बेंचमार्क के ग्रेडल इस्तेमाल से नतीजे सीधे तौर पर प्रिंट नहीं होते. इसमें काम करने के लिए, Studio का इस्तेमाल करें या नतीजों के लिए JSON आउटपुट फ़ाइल को पार्स करें.
- बेंचमार्क रिपोर्टिंग उन डिवाइस से रिपोर्ट नहीं निकाल सकती जिनमें “android” या “download” (केस-इनसेंसिटिव) पर खत्म होने वाला appId वाला ऐप्लिकेशन है. इस समस्या पर कार्रवाई करने वाले उपयोगकर्ताओं को 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 में या लगातार इंटिग्रेशन में मानदंड चलाएं.
मुख्य सुविधाएं:
- क्लॉक स्टेबलाइज़ेशन
- थ्रेड की अपने-आप प्राथमिकता तय होने की सुविधा
- यूज़र इंटरफ़ेस (यूआई) की परफ़ॉर्मेंस की जांच के लिए सहायता, जैसे कि 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
इंस्ट्रुमेंटेशन आर्ग्युमेंट के इस्तेमाल का सही तरीके से पता लगाता है, ताकि यह पता लगाया जा सके कि AGP, डेटा कॉपी को कब हैंडल करेगा. -1
(b/141945670) को सही तरीके से प्रिंट करने के लिए, JSON में दिखने वाली घड़ी की फ़्रीक्वेंसी को ठीक किया गया है.
वर्शन 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
अब सही तरीके से सार्वजनिक है. प्रयोग के तौर पर इस्तेमाल किए जा रहे StandardState#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 के बिना बेंचमार्क लाइब्रेरी का इस्तेमाल कैसे किया जा सकता है. साथ ही, अलग-अलग बिल्ड सिस्टम (जैसे Basel या Buck) के साथ इस्तेमाल करने और सीआई (CI) में चलने के दौरान, दोनों का इस्तेमाल कैसे किया जा सकता है. ज़्यादा जानकारी के लिए, 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
में बाकी लॉजिक शामिल होता है, जिसमें बेंचमार्कस्टेट एपीआई भी शामिल है- इससे, आने वाले समय में लाइब्रेरी को JUnit4 API के बिना, मानदंड के साथ काम करने की अनुमति मिलेगी
- कॉन्फ़िगरेशन से जुड़ी चेतावनियों को अब गड़बड़ियों के तौर पर गिना जाता है और इससे टेस्ट क्रैश हो जाएगा (b/137653596)
- ऐसा खास तौर पर CI में, सटीक मेज़रमेंट को बढ़ावा देने के लिए किया जाता है
- इन गड़बड़ियों को इंस्ट्रुमेंटेशन तर्क की मदद से चेतावनियों में वापस लाया जा सकता है. उदाहरण के लिए:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
गड़बड़ियां ठीक की गईं
- Q डिवाइसों पर बाहरी स्टोरेज में कॉन्टेंट लिखते समय दिखने वाली गड़बड़ियां
- मानदंड के दौरान, स्क्रीन अपने-आप चालू हो जाती हैं. हालांकि, स्क्रीन बंद होने पर यह सुविधा चालू नहीं होती
बाहरी योगदान
- JSON के आउटपुट को बेहतर बनाने में योगदान देने और स्क्रीन बंद होने से जुड़ी समस्याओं को हल करने के लिए, सर्गेई ज़खारोव को धन्यवाद!
वर्शन 1.0.0-alpha03
2 जुलाई, 2019
androidx.benchmark:benchmark:1.0.0-alpha03
और androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03
रिलीज़ हुई हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
- JSON की पूरी रिपोर्ट में, हर मानदंड के हिसाब से थर्मल थ्रॉटलिंग की वजह से नींद की अवधि के बारे में जानकारी दें
गड़बड़ियां ठीक की गईं
- अब Android प्लगिन और Android ब्लॉक के बाद, Gradle प्लग इन लागू करने की ज़रूरत नहीं होनी चाहिए
- इससे, स्कोप वाले स्टोरेज का इस्तेमाल करके, Android 10 वाले डिवाइसों के लिए मानदंड रिपोर्ट की सुविधा जोड़ी जाती है
वर्शन 1.0.0-alpha02
6 जून, 2019
androidx.benchmark:1.0.0-alpha02
और
androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02
रिलीज़ हो गई हैं. कॉन्टेंट बनाने
इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
ध्यान दें कि हम JSON स्कीमा को एपीआई मान रहे हैं. हमारी योजना है कि हम भी अन्य एपीआई की तरह स्थिरता से जुड़ी पाबंदियां: एक बार में स्थिर (बहुत कम अपवादों के साथ) बीटा वर्शन के साथ-साथ, इसे फ़ाइनल रिलीज़ के तौर पर भी ठीक किया गया है. इसे सिर्फ़ मामूली रिलीज़ में जोड़ा गया है और मुख्य रिलीज़ में बदलाव/हटाना.
एपीआई में किए गए बदलाव
अपडेट किया गया JSON स्कीमा. JSON स्कीमा में और बदलाव ये हो सकते हैं इसमें इन्हें शामिल नहीं किया जा सकता:
- अतिरिक्त मेट्रिक ग्रुप के साथ काम करने के लिए, नतीजे ऑब्जेक्ट के स्ट्रक्चर को फिर से व्यवस्थित किया गया है आने वाले समय में (b/132713021)
- टेस्ट रन कॉन्टेक्स्ट से जुड़ी जानकारी जोड़ी गई. जैसे, डिवाइस और बिल्ड की जानकारी और चाहे घड़ियां टॉप-लेवल के ऑब्जेक्ट पर लॉक हों (b/132711920)
- टाइम मेट्रिक के नामों में अब 'ns' लिखा है (b/132714527)
- रिपोर्ट की गई हर मेट्रिक (ज़्यादा से ज़्यादा, मीडियन, कम से कम) और सरल बनाया गया 'नैनो' हटाया गया सारांश आंकड़े (b/132713851)
एक्सएमएल आउटपुट हटाया गया (b/132714414)
BenchmarkState.reportData
एपीआई से थर्मल थ्रॉटल की पहचान करने वाली सुविधा हटाई गई (b/132887006)
गड़बड़ियां ठीक की गईं
- हाल ही के कुछ ओएस डिवाइसों पर
./gradlew lockClocks
का चिप नहीं रहने की समस्या ठीक की गई (b/133424037) - एम्युलेटर के लिए थ्रॉटलिंग की पहचान बंद है (b/132880807)
वर्शन 1.0.0-alpha01
7 मई, 2019
androidx.benchmark:benchmark:1.0.0-alpha01
रिलीज़ हो गया है. प्लान में ये शामिल हैं
इस वर्शन में उपलब्ध हैं
यहां पढ़ें.