मानदंड
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
11 दिसंबर, 2024 | 1.3.3 | - | - | 1.4.0-alpha06 |
डिपेंडेंसी का एलान करना
Benchmark पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की मेवन रिपॉज़िटरी पढ़ें.
Macrobenchmark
अपने प्रोजेक्ट में Macrobenchmark का इस्तेमाल करने के लिए, Macrobenchmark मॉड्यूल के लिए, अपनी build.gradle
फ़ाइल में ये डिपेंडेंसी जोड़ें:
ग्रूवी
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
माइक्रो-बेंचमार्क
अपने प्रोजेक्ट में Microbenchmark का इस्तेमाल करने के लिए, microbenchmark मॉड्यूल के लिए, अपनी 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.4
वर्शन 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
,-Xtype-enhancement-improvements-strict-mode
(I46810, b/326456246) - क्लास लोड (न कि शुरू) की रिपोर्ट करने के लिए
ArtMetric
को ठीक किया गया. साथ ही, रनटाइम के व्यवहार को साफ़ तौर पर बताने के लिए दस्तावेज़ों को बेहतर बनाया गया. (I9915c) - Android के मल्टी-यूज़र मोड में, सिर्फ़ रूट किए गए डिवाइसों पर रूट के तौर पर निर्देशों को लागू करें. (I88b44)
वर्शन 1.4.0-alpha05
13 नवंबर, 2024
androidx.benchmark:benchmark-*:1.4.0-alpha05
रिलीज़ हो गया है. वर्शन 1.4.0-alpha05 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- एपीआई 34 और उसके बाद के वर्शन में एक समस्या को ठीक किया गया है. इस समस्या की वजह से,
CompilationMode.None()
की परफ़ॉर्मेंस में उतार-चढ़ाव होता था. यह शुरुआती और सबसे खराब परफ़ॉर्मेंस के हिसाब से नहीं होती थी. यह सुविधा, प्लैटफ़ॉर्म में हुए बदलाव के आधार पर काम करती है. इस बदलाव की वजह से, ART की कंपाइलेशन स्टेटस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
को अब हमेशा बेंचमार्क बिल्ड में बदल दिया जाता है. साथ ही,isDebuggable
को अब हमेशा बेंचमार्क औरnonMinified
(बेसलाइन प्रोफ़ाइल कैप्चर) बिल्ड, दोनों में बदल दिया जाता है. (I487fa, b/369213505)- एपीआई 28 से पहले के कुछ फ़िज़िकल डिवाइसों पर, कंपाइलेशन का पता लगाने की सुविधा को ठीक करता है - इससे json
context.compilationMode
पर असर पड़ता है. साथ ही,androidx.benchmark.requireAot=true
के व्यवहार पर भी असर पड़ता है (जो अब गलत तरीके से नहीं दिखता) (Ic3e08, b/374362482) CpuEventCounter
मेट्रिक में, अमान्य मेज़रमेंट (उदाहरण के लिए, निर्देश/सीपीयू साइकल==0) दिखने पर, गड़बड़ी का मैसेज दिखाएं (I8c503)
वर्शन 1.4.0-alpha03
16 अक्टूबर, 2024
androidx.benchmark:benchmark-*:1.4.0-alpha03
रिलीज़ हो गया है. वर्शन 1.4.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Macrobenchmark:
ArtMetric
जोड़ता है. इसका इस्तेमाल, प्रोफ़ाइल कवरेज या Android RunTime की सामान्य परफ़ॉर्मेंस की जांच करने के लिए किया जा सकता है. इसमें JIT, क्लास शुरू होने (जहां उपलब्ध हो) और क्लास की पुष्टि की संख्या और कुल अवधि कैप्चर की जाती है. इसके अलावा,CaptureInfo
में बदलाव करके, डिफ़ॉल्ट के साथ वैकल्पिक ART मेनलाइन वर्शन शामिल किया गया है. (I930f7) - किसी दिए गए बेंचमार्क रन में स्थिरता दिखाने के लिए, बेंचमार्क के JSON आउटपुट में
coefficientOfVariation
जोड़ें. (Ib14ea)
गड़बड़ियां ठीक की गईं
- AVD डिवाइस में स्पेस होने पर,
CollectBaselineProfileTask
को ठीक किया गया. (Ia0225, b/371642809) StartupMode.COLD
अपवादों से जुड़ी गड़बड़ियों को ठीक करने के लिए अनुमानित तरीका:Package <packagename> must not be running prior to cold start!
. अब,MacrobenchmarkScope.killProcess()
(इसमें हर बार दोहराए जाने से पहले चलने वाला वह फ़ंक्शन भी शामिल है जिसका इस्तेमालStartupMode.COLD
के व्यवहार को लागू करने के लिए किया जाता है) यह पुष्टि करने के लिए इंतज़ार करेगा कि ऐप्लिकेशन की सभी प्रोसेस बंद हो गई हैं या नहीं. (I60aa6, b/351582215)- रूट किए गए कुछ एमुलेटर पर UNLOCKED_ गड़बड़ी दिखने की समस्या को ठीक किया गया. (Ic5117)
- यह लाइब्रेरी अब JSpecify nullness एनोटेशन का इस्तेमाल करती है, जो टाइप-इस्तेमाल के लिए हैं. Kotlin डेवलपर को सही तरीके से इस्तेमाल करने के लिए, कंपाइलर के इन आर्ग्युमेंट का इस्तेमाल करना चाहिए:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(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 प्लग इन से बेसलाइन प्रोफ़ाइल या मैक्रोबेंचमार्क की नतीजों वाली फ़ाइलें नहीं मिल पा रही थीं. इस समस्या को ठीक कर दिया गया है. (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.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.3
16 अक्टूबर, 2024
androidx.benchmark:benchmark-*:1.3.3
रिलीज़ हो गया है. वर्शन 1.3.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
CollectBaselineProfileTask
को ठीक किया गया, जब AVD डिवाइस में स्पेस हों (Ia0225, b/371642809)
वर्शन 1.3.2
2 अक्टूबर, 2024
androidx.benchmark:benchmark-*:1.3.2
रिलीज़ हो गया है. वर्शन 1.3.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Firebase Test Lab (FTL) को Baseline Profile Gradle प्लग इन से Baseline Profile या 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) - अगर ऐप्लिकेशन ने पहले से मौजूद
nonMinified…
औरbenchmark…
का इस्तेमाल किया है, तो रैपर बनाने के बजाय, पहले से मौजूदnonMinified…
औरbenchmark…
का इस्तेमाल करने के लिए, Baseline Profile Gradle प्लग इन को ठीक किया गया. (Ia8934, b/361370179) - एम्युलेटर पर
automaticGenerationDuringBuild
चालू होने पर,java.lang.AssertionError: ERRORS (not suppressed): EMULATOR
से जुड़ी समस्या को ठीक किया गया. टेस्ट को स्किप करने के लिए, नए आर्ग्युमेंट का इस्तेमाल किया जाता है. (If3f51, b/355515798) - माइक्रो-बेंचमार्क को छोटा करना - बेंचमार्क लाइब्रेरी proguard (Ic8ed5, b/354264743) में
org.junit.runner.notification.RunListener
के सबक्लास रखें TraceSectionMetric
को ठीक करके, खत्म न होने वाली स्लाइस को अनदेखा करें. पहले, इनकी अवधि -1 मानी जाती थी. जैसे, कुल अवधि या कम से कम अवधि का पता लगाने के दौरान. (If74b7)FrameTimingGfxInfoMetric
में एक समस्या को ठीक किया गया है. इसमें, अगर प्रोसेस पहले से नहीं चल रही थी, तो मेट्रिक शुरू करने पर क्रैश हो जाता था. (I6e412)
वर्शन 1.3.0
21 अगस्त, 2024
androidx.benchmark:benchmark-*:1.3.0
रिलीज़ हो गया है. वर्शन 1.3.0 में ये कमिट शामिल हैं.
1.2.0 के बाद, माइक्रोबेंचमार्क में हुए बदलाव
- ज़्यादातर डिवाइसों पर माइक्रोबेंचमार्क चलाने पर, मेथड ट्रैकिंग डिफ़ॉल्ट रूप से चालू रहती है
- मेथड ट्रैकिंग, मेज़रमेंट के बाद एक अलग फ़ेज़ के तौर पर चलती है - इससे एक ही बेंचमार्क रन से सटीक मेज़रमेंट और मेथड ट्रैक, दोनों का आउटपुट मिलता है
- कुछ Android OS और ART वर्शन पर मेथड ट्रैकिंग की सुविधा से, मेज़रमेंट के बाद के चरणों पर असर पड़ेगा. इन वर्शन पर, मेथड ट्रैकिंग की सुविधा डिफ़ॉल्ट रूप से बंद रहती है और Studio के आउटपुट में चेतावनी प्रिंट होती है
- मुख्य थ्रेड के मानदंड और ANRs
- यूज़र इंटरफ़ेस (यूआई) थ्रेड के मानदंडों के लिए
measureRepeatedOnMainThread
जोड़ा गया है.जैसे, वे जो Compose/View यूआई के साथ इंटरैक्ट करते हैं. इससे, कई सेकंड तक चलने पर ANR से बचा जा सकता है. - अगर ANR से बचने की समयसीमा खत्म होने की संभावना है, तो तरीकों के ट्रैक छोड़ दिए जाते हैं. इस सुविधा को बंद करने के लिए,
androidx.benchmark.profiling.skipWhenDurationRisksAnr
को 'गलत है' पर सेट करें. हालांकि, सीआई रन के लिए इसका सुझाव नहीं दिया जाता, क्योंकि लंबे समय तक चलने वाले सीआई रन में एएनआर की वजह से समस्याएं आ सकती हैं.
- यूज़र इंटरफ़ेस (यूआई) थ्रेड के मानदंडों के लिए
- छोटा करना
- छोटा करने की सुविधा चालू होने पर, माइक्रोबेंचमार्किंग को बेहतर बनाने के लिए, ProGuard के नियमों को जोड़ा गया
- लाइब्रेरी मॉड्यूल में छोटा करने/R8 की सुविधा के लिए, AGP 8.3 की ज़रूरत होती है. इसे
build.gradle
मेंandroid.buildTypes.release.androidTest.enableMinification
की मदद से चालू किया जा सकता है - डेड कोड को हटाने से रोकने के लिए, एक्सपेरिमेंट के तौर पर
BlackHole.consume()
एपीआई जोड़ा गया (If6812, b/286091643)
- मेट्रिक
- सीपीयू इवेंट काउंटर की एक्सपेरिमेंटल सुविधा (
perf_event_open
से मिली मेट्रिक, जिसके लिए प्लैटफ़ॉर्म के ज़्यादातर वर्शन पर रूट की ज़रूरत होती है). इसेInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(true
पर सेट किया जा सकता है) से ऐक्सेस किया जा सकता है. साथ ही,androidx.benchmark.cpuEventCounter.events
को उदाहरण के लिए (Instructions,CpuCycles
) पर सेट किया जा सकता है. यह सुविधा, कुछ userdebug एमुलेटर पर काम करनी चाहिए. हालांकि, सभी उपलब्ध एमुलेटर पर इसकी जांच नहीं की गई है
- सीपीयू इवेंट काउंटर की एक्सपेरिमेंटल सुविधा (
MACRObenchmark में 1.2.0 के बाद किए गए बदलाव
- मैक्रोबेंचमार्क के लिए, मेथड ट्रैकिंग में काफ़ी बदलाव किए गए हैं.
- अब मेथड ट्रेस,
measureBlock
की अवधि तक के होते हैं. साथ ही, अगर प्रोसेस कई बार शुरू होती है, तो कई सेशन कैप्चर किए जा सकते हैं. - पहले, मेथड ट्रैकिंग सिर्फ़
StartupMode.COLD
मानदंडों के लिए काम करती थी. साथ ही,measureBlocks
के लिए कुछ भी कैप्चर नहीं करती थी, जो टारगेट प्रोसेस को फिर से शुरू नहीं करती थी - मैक्रोबेंचमार्क में, मेथड ट्रेस फ़्लश को ठीक किया गया, ताकि मेथड ट्रेस पूरी तरह से कैप्चर किए जा सकें और वे धीमे डिवाइसों पर भी मान्य हों. (I6349a, b/329904950)
- अब मेथड ट्रेस,
- प्रोसेस बंद होने पर, हर
warmUp
बार दोहराए जाने पर ART प्रोफ़ाइल को सही तरीके से डंप करें, ताकिCompilationMode.Partial(warmup=N)
मेज़रमेंट ज़्यादा सटीक हों. (I17923) - ड्रॉप शेडर ब्रॉडकास्ट करने में हुई गड़बड़ी का मैसेज
- शेडर ब्रॉडकास्ट में गड़बड़ी होने का मैसेज हटाने के लिए, डीबग करने के सुझाव जोड़े गए
ProfileInstaller
1.3 के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय क्रैश से बचने के लिए, शेडर ड्रॉपिंग के व्यवहार को बदलने के लिए दो इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ें:androidx.benchmark.dropShaders.enable=true/false
: इसका इस्तेमाल, सभी शेडर ड्रॉपिंग को स्किप करने के लिए किया जा सकता है. इसमेंStartupMode.Cold
लॉन्च में होने वाली शेडर ड्रॉपिंग भी शामिल है. खास तौर पर, उन ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय जिनमें अब तक profileinstaller 1.3 का इस्तेमाल नहीं किया गया हैandroidx.benchmark.dropShaders.throwOnFailure=true/false
: इसका इस्तेमाल, शेडर को ड्रॉप करने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है. उदाहरण के लिए, profileinstaller 1.3 (I4f573) के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय
- एक्सपेरिमेंट के तौर पर
MacrobenchmarkRule#measureRepeated
वैरिएंट जोड़ा गया है. यह वैरिएंट, Perfetto ट्रैक रिकॉर्डिंग को पूरी तरह से पसंद के मुताबिक बनाने के लिए, कस्टमPerfettoConfig
लेता है. ध्यान दें कि गलत तरीके से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन की वजह से, पहले से मौजूद मीट्रिक क्लास काम नहीं कर सकतीं. (Idfd3d, b/309841164, b/304038384) - रुकावट को कम करने के लिए, मैक्रोबेंचमार्क चलाने से पहले, बैकग्राउंड में dexopt करने की प्रोसेस रद्द करें. (I989ed)
- अब मैक्रोबेंचमार्क, टारगेट किए गए ऐप्लिकेशन के लिए एक सेकंड तक इंतज़ार करता है, ताकि वह ART प्रोफ़ाइल को फ़्लश कर सके. पहले, यह 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) FrameTimingMetric
मेंframeCount
मेज़रमेंट जोड़ा गया है. इससे उन स्थितियों का पता लगाने में मदद मिलेगी जहां मेज़रमेंट में बदलाव होता है, क्योंकि जनरेट किए गए फ़्रेम की संख्या में बदलाव होता है. इसके लिए, नए ऐनिमेशन जोड़े गए हैं और अमान्य होने की समस्याएं ठीक की गई हैं. (I1e5aa)- यह बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर,
frameOverrunMs
ट्रैकिंग के लिए सबसे सही मेट्रिक है. साथ ही, इसकी वजह भी बताई गई है. (I18749, b/329478323) - इस समस्या को ठीक किया गया है, जिसमें ट्रेस की शुरुआत और आखिर में मौजूद ऐसे फ़्रेम को एक साथ जोड़ा जा सकता था जिन्हें खत्म नहीं किया गया था. इससे, गलत तरीके से एक बहुत लंबे फ़्रेम के तौर पर रिपोर्ट की जा सकती थी. (I39353, b/322232828)
- फ़्रेम न बनने पर
FrameTimingMetric
गड़बड़ी को बेहतर बनाएं. साथ ही, समस्या का पता लगाने में मदद करने के लिए, मेट्रिक पार्स न होने पर हमेशा ट्रैक करने के लिए लिंक आउटपुट करें. (I956b9) FrameTimingMetric
में फ़्रेम आईडी को पार्स न कर पाने की वजह से क्रैश होने की समस्या को ठीक किया गया है. यह समस्या खास तौर पर कुछ OEM डिवाइसों पर आती है. (Ia24bc, b/303823815, b/306235276)FrameMetrics
में जांच की सख्ती को कम किया गया है. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई है. (Iadede)
- पावर -
बेसलाइन प्रोफ़ाइल कैप्चर करने / Gradle प्लग इन में 1.2.0 के बाद हुए बदलाव
- AGP के लिए सुझाए गए वर्शन को 9.0.0-alpha01 पर सेट किया गया है.
- पक्का करें कि
mergeArtProfile
औरmergeStartupProfile
टास्क, बेसलाइन प्रोफ़ाइल जनरेट होने का इंतज़ार हमेशा करते हों. (I623d6, b/343086054) - बेसलाइन प्रोफ़ाइल जनरेट करने पर, बदलावों की खास जानकारी दिखेगी (I824c8, b/269484510)
- चेतावनियों को बंद करने के लिए डीएसएल जोड़ा गया (Ic4deb, b/331237001)
automaticGenerationDuringBuild
बंद होने पर, यह पक्का करने के लिए सुधार किया गया है कि बेंचमार्क, जनरेट की गई बेसलाइन प्रोफ़ाइलों का इस्तेमाल करें (Ic144f, b/333024280)BaselineProfile
या बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाते समय, बेसलाइन प्रोफ़ाइल जनरेशन और बेंचमार्किंग की सुविधा चालू करने के लिए,BaselineProfile
gradle प्लग इन प्रॉपर्टी बदलावों को ठीक करें.nonMinified
(Ib8f05, b/324837887)- AGP 8.3.0-alpha15 से पहले के AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइलों को शामिल करने से जुड़ी समस्या को ठीक किया गया. (I1d2af, b/313992099)
- जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल के आउटपुट यूआरएल को ठीक किया गया. (I802e5, b/313976958)
1.2.0 के बाद किए गए अन्य अहम बदलाव
- ट्रैक कैप्चर करना
- गड़बड़ी से लेकर लॉग की गई चेतावनी तक, perfetto को शुरू करते समय EXITCODE 2 की गड़बड़ी को कम किया गया
- बेंचमार्क में डिफ़ॉल्ट रूप से AIDL ट्रैकिंग चालू करें. इसके लिए, एपीआई 28 की ज़रूरत होती है (Ia0af2, b/341852305)
- बेंचमार्क में, डिफ़ॉल्ट रूप से पोर्टर टैग ट्रैकिंग की सुविधा चालू करें. उदाहरण के लिए, यह वेकलॉक ट्रेसपॉइंट कैप्चर करता है. (Icfe44, b/286551983)
- धीमे डिवाइसों पर ट्रैकिंग शुरू करते समय क्रैश होने से बचने के लिए, ट्रैक कैप्चर शुरू करने का टाइम आउट बढ़ाया गया (I98841, b/329145808)
- JSON, textproto, और प्रोटो बाइनरी (डिकोड नहीं किए गए) वैरिएंट के साथ, सार्वजनिक एपीआई
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, मेथड ट्रेस) के लिए टूल को आसानी से इस्तेमाल करने के लिए, जेएसओएन आउटपुट में
profilerOutput
सूची जोड़ी गई है (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
इंस्ट्रूमेंटेशन आर्ग्युमेंट की मदद से सीपीयू परफ़ॉर्मेंस काउंटर का इस्तेमाल किया जा रहा है, तो रोकने/फिर से शुरू करने पर, timeNs काफ़ी कम नहीं होता. (I39c2e, b/286306579, b/307445225) - स्टैक सैंपलिंग कन्वर्ज़न को मुख्य थ्रेड से हटाकर,
measureRepeatedOnMainThread
को मुख्य थ्रेड के हार्ड टाइम आउट से बचाने के लिए, स्टैक सैंपलिंग की संभावना कम हो गई. (I487a8, b/342237318) - नए प्लैटफ़ॉर्म एपीआई के ऐक्सेस की मैन्युअल रूप से जानकारी देने की सुविधा हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि AGP 7.3 या इसके बाद के वर्शन (उदाहरण के लिए, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग की मदद से यह अपने-आप होता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (उदाहरण के लिए, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह अपने-आप होता है. जिन क्लाइंट ने AGP का इस्तेमाल नहीं किया है उन्हें D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (I9496c, b/345472586)
- पैकेज के नाम को instr arg के तौर पर भेजने के लिए, agp वर्शन की जांच करने की सुविधा जोड़ी गई. AGP 8.4.0 से पहले, इंस्ट्रुमेंटेशन ऐप्लिकेशन के आर्ग्युमेंट की मदद से, टारगेट ऐप्लिकेशन के पैकेज का नाम इंस्ट्रुमेंटेशन ऐप्लिकेशन को नहीं भेजा जा सकता. (0c72a3f)
वर्शन 1.3.0-beta02
10 जुलाई, 2024
androidx.benchmark:benchmark-*:1.3.0-beta02
रिलीज़ हो गया है. वर्शन 1.3.0-beta02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- चेतावनी को लॉग करने के लिए Perfetto शुरू करते समय, EXITCODE
2
को आसानी से मैनेज करें, लेकिन आगे बढ़ें.
वर्शन 1.3.0-beta01
12 जून, 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
रिलीज़ हो गया है. वर्शन 1.3.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- एक जैसा नाम रखने के लिए,
MethodTracing.affectsMeasurementOnThisDevice
का नाम बदलकरAFFECTS_MEASUREMENT_ON_THIS_DEVICE
किया गया. (I1bdfa) - माइक्रोबेंचमार्क में डेड कोड को हटाने से रोकने के लिए, एक्सपेरिमेंट के तौर पर
BlackHole.consume()
एपीआई जोड़ा गया. (If6812, b/286091643) - मेथड ट्रैकिंग को मेज़रमेंट में रुकावट डालने से रोकने के लिए, माइक्रोबेंचमार्क अब सही तरीके से काम करेगा. यह कुछ डिवाइसों पर तब होता है, जब मेथड ट्रैकिंग को इंस्ट्रुमेंटेशन आर्ग्युमेंट या
MicrobenchmarkConfig
के ज़रिए ज़बरदस्ती चालू किया जाता है. साथ ही, मेथड ट्रैक के बाद मेज़रमेंट की कोशिश की जाती है. जिन डिवाइसों पर इस रुकावट का असर पड़ा है उन पर API 26-30 या ART के कुछ मुख्य मॉड्यूल वर्शन काम कर रहे हैं. इनका पताProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
की मदद से, रनटाइम के दौरान लगाया जा सकता है. (Iafb92, b/303660864)
गड़बड़ियां ठीक की गईं
- ज़्यादा से ज़्यादा agp वर्शन को 9.0.0-alpha01 पर बंप करने का सुझाव दिया गया है. (I5bbb0)
- बेंचमार्क कॉन्टेक्स्ट में कंपाइलेशन मोड जोड़ा गया (If5612, b/325512900)
- डिफ़ॉल्ट रूप से एआईडीएल ट्रैकिंग की सुविधा चालू करें. इसके लिए, एपीआई 28 की ज़रूरत होती है (Ia0af2, b/341852305)
- JSON आउटपुट में, बेंचमार्क के संदर्भ में ज़्यादा जानकारी जोड़ी गई:
context.artMainlineVersion
- Art मेनलाइन मॉड्यूल का इंटिजर वर्शन (अगर डिवाइस पर मौजूद है, तो -1)context.build.id
-android.os.Build.ID
के बराबर हैcontext.build.version.codename
-android.os.Build.VERSION.CODENAME
के बराबर हैcontext.build.version.abbreviatedCodename
- रिलीज़ से पहले के कोडनेम के पहले अक्षर से मेल खाता है (रिलीज़ बिल्ड पर भी) (Ie5020)
androidx.benchmark.profiling.sampleDurationSeconds
का पालन करने के लिएStackSampling
को ठीक करता है (Ib1d53)- macro->common dependency को
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) के साथ काम करता था - जब perfetto ट्रैक प्रोसेसर शुरू होने में ज़्यादा समय लेता है, तो क्रैश होने से बचना (I98841, b/329145808)
वर्शन 1.3.0-alpha03
17 अप्रैल, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
रिलीज़ हो गया है. वर्शन 1.3.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
- JSON, textproto, और प्रोटो बाइनरी (डिकोड नहीं किए गए) वैरिएंट के साथ, सार्वजनिक एपीआई
PerfettoTraceProcessor.Session.queryMetrics
एपीआई जोड़ता है. इनकी मदद से, TraceProcessor में बनी मेट्रिक (I54d7f, b/304038382) के बारे में क्वेरी की जा सकती है - प्रोफ़ाइलिंग ट्रेस (जैसे, perfetto, मेथड ट्रेस) के लिए टूल को आसान बनाने के लिए, जेएसओएन आउटपुट में
profilerOutput
जोड़ा गया. (I05ddd, b/332604449) - Perfetto कॉन्फ़िगरेशन के बेंचमार्क में पावर टैग जोड़ा गया. उदाहरण के लिए, यह वेकलॉक ट्रेसपॉइंट कैप्चर करता है. (Icfe44, b/286551983)
- inst आर्ग्युमेंट
androidx.benchmark.profiling.skipWhenDurationRisksAnr
जोड़ा गया है. इसे false पर सेट किया जा सकता है, ताकि अनुमानित अवधि के दौरान ANR होने की संभावना होने पर, मेथड ट्रेस को स्किप न किया जाए. हमारा सुझाव है कि सीआई रन में इसका इस्तेमाल न करें. - एक्सपेरिमेंट के तौर पर 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)BaselineProfile
या बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाते समय, बेसलाइन प्रोफ़ाइल जनरेशन और बेंचमार्किंग की सुविधा चालू करने के लिए,BaselineProfile
gradle प्लग इन प्रॉपर्टी बदलावों को ठीक करें.nonMinified
(Ib8f05, b/324837887)- मैक्रोबेंचमार्क में, मेथड ट्रेस फ़्लश को ठीक किया गया, ताकि मेथड ट्रेस पूरी तरह से कैप्चर किए जा सकें और वे धीमे डिवाइसों पर भी मान्य हों. (I6349a, b/329904950)
- Perfetto ट्रेस रिकॉर्ड पर ब्लॉकिंग शुरू करने की सुविधा चालू करें, ताकि ट्रेस की शुरुआत में डेटा छूटने का जोखिम कम हो. यह सुविधा सिर्फ़ एपीआई 33 और उसके बाद के वर्शन पर काम करती है. (Ie6e41, b/310760059)
- Android Test Orchestrator का इस्तेमाल, बेंचमार्क मॉड्यूल में करने पर चेतावनी जोड़ी गई है. ऐसा इसलिए किया गया है, क्योंकि इससे हर मॉड्यूल के आउटपुट JSON फ़ाइलों को बार-बार ओवरराइट किया जाएगा. (Ia1af6, b/286899049)
- Studio के आउटपुट में एक जैसी जानकारी देने के लिए, हज़ारों के बीच ',' (कॉमा) का इस्तेमाल करें. साथ ही, डिवाइस की स्थानीय भाषा को अनदेखा करें (I3e921, b/313496656)
TraceSectionMetric
में अबTrace.{begin|end}AsyncSection
का इस्तेमाल करके बनाए गए स्लाइस काम करते हैं. (I91b32, b/300434906)- स्टार्टअप की पहचान करने में हुई सभी गड़बड़ियों के लिए, log.w / अपवाद लेबल जोड़े गए हैं. इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. इसलिए, कुछ गड़बड़ियां दिखती हैं और कुछ चुपचाप स्टार्टअप का पता नहीं लगा पाती हैं. हालांकि, इससे गड़बड़ियों को समझना ज़्यादा आसान हो जाता है. आम तौर पर, जिन ऐप्लिकेशन में
Log.w()
और स्टार्टअप मेट्रिक की रिपोर्टिंग नहीं होती उनमें नॉन-फ़्रेम इवेंट मौजूद नहीं होते. स्टार्टअप का पता चलने पर, फ़्रेम के टाइमिंग की जानकारी (यूज़र इंटरफ़ेस/आरटी स्लाइस से) को छोड़कर, अपवाद दिखाए जाते हैं. (Id240f, b/329145809) - रुकावट को कम करने के लिए, मैक्रोबेंचमार्क चलाने से पहले, बैकग्राउंड में dexopt करने की प्रोसेस रद्द करें. (I989ed)
FrameTimingMetric
मेंframeCount
मेज़रमेंट जोड़ा गया है. इससे उन स्थितियों का पता लगाने में मदद मिलेगी जहां मेज़रमेंट में बदलाव होता है, क्योंकि जनरेट किए गए फ़्रेम की संख्या में बदलाव होता है. इसके लिए, नए ऐनिमेशन जोड़े गए हैं और अमान्य होने की समस्याएं ठीक की गई हैं. (I1e5aa)- यह बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर,
frameOverrunMs
ट्रैकिंग के लिए सबसे सही मेट्रिक है. साथ ही, इसकी वजह भी बताई गई है. (I18749, b/329478323)
वर्शन 1.3.0-alpha02
20 मार्च, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये कमिट शामिल हैं.
नई सुविधाएं
एम्बेड किए गए ProGuard नियमों की मदद से, माइक्रो-बेंच में R8 का प्रयोग किया जा सकता है. ध्यान दें कि यह सुविधा अभी एक्सपेरिमेंट के तौर पर उपलब्ध है. लाइब्रेरी मॉड्यूल की जांचों को छोटा करने के लिए, AGP 8.3 की ज़रूरत होती है. अपने बेंचमार्क मॉड्यूल के
build.gradle
में R8 को छोटा करने/ऑप्टिमाइज़ करने की सुविधा चालू करने के लिए, यहां दिए गए निर्देशों का पालन करें. इससे, वर्कलोड के हिसाब से परफ़ॉर्मेंस में काफ़ी बढ़ोतरी हो सकती है. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
गड़बड़ियां ठीक की गईं
- माइक्रो-बेंच आउटपुट से अलग लाइन में, मेथड ट्रैकिंग की चेतावनी को ठीक करता है. (I0455c, b/328308833)
वर्शन 1.3.0-alpha01
21 फ़रवरी, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
रिलीज़ हो गया है. 1.3.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MicrobenchmarkConfig
बूलियन पैरामीटर का नाम बदला गया, ताकि 'should' जैसे ग़ैर-ज़रूरी शब्दों से बचा जा सके (Ia8f00, b/303387299)BenchmarkRule.measureRepeatedOnMainThread
जोड़ा गया है, ताकि मुख्य थ्रेड के मानदंड (जैसे, व्यू या Compose यूआई को छूने वाले) ANR को ट्रिगर करने से बच सकें. खास तौर पर, सीआई में बड़े सूट के दौरान. (I5c86d)FrameTimingGfxInfoMetric
जोड़ा गया, जो Perfetto ट्रेस से निकाले जाने के बजाय, सीधे प्लैटफ़ॉर्म से मिलने वाले मेज़रमेंट के साथFrameTimingMetric
का एक एक्सपेरिमेंटल वैकल्पिक तरीका है. (I457cb, b/322232828)- अलग-अलग
warmUp
रन के दौरान, ART प्रोफ़ाइल को डंप करने की सुविधा जोड़ें. (I17923) TraceSectionMetric
एपीआई में कई बदलाव किए गए हैं:Mode.Min
,Mode.Max
जोड़ें- सेक्शन के नाम को मेट्रिक लेबल के तौर पर बदलने के लिए, लेबल आर्ग्युमेंट जोड़ना
- मेट्रिक के मतलब को साफ़ तौर पर बताने के लिए, आउटपुट में मोड का नाम जोड़ा गया
- डिफ़ॉल्ट वैल्यू को 'योग' में बदल दिया गया है, क्योंकि इस मेट्रिक का ज़्यादातर इस्तेमाल बार-बार होने वाले इवेंट के लिए किया जाता है. सीआई के इस्तेमाल में हुए इस बदलाव से सावधान रहें, क्योंकि इससे डेटा में रुकावट आ सकती है या पार्सिंग में रुकावट आ सकती है. (Ic1e82, b/301892382, b/301955938)
गड़बड़ियां ठीक की गईं
- अगर मैनेज किया जा रहा कोई डिवाइस मौजूद नहीं है, तो बेसलाइन प्रोफ़ाइल के Gradle प्लग इन में गड़बड़ी का बेहतर मैसेज दिखाया गया है (Idea2b, b/313803289)
- AGP 8.3.0-alpha15 (I1d2af, b/313992099) से पहले, AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइलें शामिल करने से जुड़ी समस्या को ठीक करना
- जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल के आउटपुट यूआरएल को ठीक किया गया (I802e5, b/313976958)
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d, b/323601788) को ठीक करने के लिए, डेटा सोर्स के टाइम आउट में बदलाव किया गयाProfileInstaller
1.3 के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय क्रैश से बचने के लिए, शेडर ड्रॉपिंग के व्यवहार को बदलने के लिए दो इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ें:androidx.benchmark.dropShaders.enable=true/false
: इसका इस्तेमाल, सभी शेडर ड्रॉपिंग को स्किप करने के लिए किया जा सकता है. इसमेंStartupMode.Cold
लॉन्च में होने वाली शेडर ड्रॉपिंग भी शामिल है. खास तौर पर, उन ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय जिनमें अब तक profileinstaller 1.3 का इस्तेमाल नहीं किया गया हैandroidx.benchmark.dropShaders.throwOnFailure=true/false
: इसका इस्तेमाल, शेडर को ड्रॉप करने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है. उदाहरण के लिए, profileinstaller 1.3 (I4f573) के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय
- अगर कुछ सेकंड से ज़्यादा समय लगने की उम्मीद है, तो यूज़र इंटरफ़ेस (यूआई) थ्रेड पर, मेथड ट्रैकिंग को छोड़ें. साथ ही, थ्रेड में कोई गड़बड़ी होने पर, मेथड ट्रैकिंग को क्लीनअप करें. (I6e768)
- फ़ाइल के नाम 200 से ज़्यादा वर्णों के होने पर, यह गड़बड़ी दिखती है. ऐसा फ़ाइलें लिखते समय या प्रोसेस करने के बाद होने वाली गड़बड़ियों से बचने के लिए किया जाता है. (I4a5ab)
- इस समस्या को ठीक किया गया है, जिसमें ट्रेस की शुरुआत और आखिर में मौजूद ऐसे फ़्रेम को एक साथ जोड़ा जा सकता था जिन्हें खत्म नहीं किया गया था. इससे, गलत तरीके से एक बहुत लंबे फ़्रेम के तौर पर रिपोर्ट की जा सकती थी. (I39353, b/322232828)
- उपयोगकर्ता के बिल्ड पर ART प्रोफ़ाइलों को मिटाने के लिए, एपीआई 30-33 पर पैकेज को फिर से इंस्टॉल करते समय, एपीआई 30+ पर
--skip verification
का इस्तेमाल करें. इससे, Play Protect की ऐसी चेतावनियां बायपास करने में मदद मिलती है जिनकी वजह से कुछ डिवाइसों पर ऐप्लिकेशन इंस्टॉल नहीं हो पाते. (Ic9e36) - सिस्टम यूज़र इंटरफ़ेस (यूआई) या लॉन्चर जैसे सिस्टम ऐप्लिकेशन के अलावा, किसी अन्य ऐप्लिकेशन को बंद करने के लिए
am force-stop
का इस्तेमाल करें. (I5e028) - मैक्रोबेंचमार्क अब टारगेट ऐप्लिकेशन के लिए
1 second
का इंतज़ार करता है, ताकि वह ART प्रोफ़ाइल को फ़्लश कर सके. पहले, यह500 ms
का इंतज़ार करता था. (I85a50, b/316082056) - फ़्रेम न बनने पर
FrameTimingMetric
गड़बड़ी को बेहतर बनाएं. साथ ही, समस्या का पता लगाने में मदद करने के लिए, मेट्रिक पार्स न होने पर हमेशा ट्रैक करने के लिए लिंक आउटपुट करें. (I956b9) FrameTimingMetric
में फ़्रेम आईडी को पार्स न कर पाने की वजह से क्रैश होने की समस्या को ठीक किया गया. खास तौर पर, कुछ OEM डिवाइसों पर यह समस्या आ रही थी. (Ia24bc, b/303823815, b/306235276)FrameMetrics
में जांच की सख्ती को कम किया गया है. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई है. (Iadede)
वर्शन 1.2
वर्शन 1.2.4
17 अप्रैल, 2024
androidx.benchmark:benchmark-*:1.2.4
रिलीज़ हो गया है. वर्शन 1.2.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- बेंचमार्क वैरिएंट में, बेसलाइन प्रोफ़ाइल का srcset सेट अप न होने की समस्या को ठीक करता है. यह लाइब्रेरी में
automaticGenerationDuringBuild
को भी ठीक करता है, जिसकी वजह से सर्कुलर डिपेंडेंसी होती है. (I28ab7, b/333024280) - सिस्टम यूज़र इंटरफ़ेस (यूआई) या लॉन्चर जैसे सिस्टम ऐप्लिकेशन के अलावा, किसी अन्य ऐप्लिकेशन को बंद करने के लिए
am force-stop
का इस्तेमाल करें. इससे, "कोल्ड स्टार्ट से पहले पैकेज $package नहीं चलना चाहिए!" की वजह से क्रैश होने वालेStartupMode.COLD
मानदंड ठीक हो जाते हैं. ऐसा इसलिए होता है, क्योंकि प्रोसेस को पूरी तरह से बंद नहीं किया जा सकता. (I5e028)
वर्शन 1.2.3
24 जनवरी, 2024
androidx.benchmark:benchmark-*:1.2.3
रिलीज़ हो गया है. 1.2.3 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- AGP का वर्शन 8.3.0 या इसके बाद का होने पर, बेसलाइन प्रोफ़ाइल Gradle प्लग इन से अपवाद हटा दिया गया.
- AGP 8.3.0-alpha15 से पहले के AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइलों को शामिल करने से जुड़ी समस्या को ठीक किया गया.
वर्शन 1.2.2
1 दिसंबर, 2023
androidx.benchmark:benchmark-*:1.2.2
रिलीज़ हो गया है. 1.2.2 वर्शन में ये बदलाव शामिल हैं.
बेसलाइन प्रोफ़ाइलें
- प्रोसेस करने के लॉग में, बेसलाइन प्रोफ़ाइल के आउटपुट फ़ाइल पाथ को लोकल फ़ाइल यूआरआई (aosp/2843918, aosp/2853665, b/313976958) के तौर पर दिखाया जाएगा
वर्शन 1.2.1
15 नवंबर, 2023
androidx.benchmark:benchmark-*:1.2.1
रिलीज़ हो गया है. 1.2.1 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- जब उपयोगकर्ता टेस्ट वैरिएंट बंद करता है, तो गड़बड़ी का बेहतर मैसेज दिखाना (b/307478189)
- एएस टेस्ट रन इंटिग्रेशन (b/309805233), (b/309116324) के साथ काम करने के लिए प्रॉपर्टी जोड़ी गईं
वर्शन 1.2.0
18 अक्टूबर, 2023
androidx.benchmark:benchmark-*:1.2.0
रिलीज़ हो गया है. 1.2.0 वर्शन में ये बदलाव शामिल हैं.
1.1.0 के बाद किए गए अहम बदलाव
बेसलाइन प्रोफ़ाइलें
- नया बेसलाइन प्रोफ़ाइल Gradle प्लग इन, आपके टेस्ट और बिल्ड वर्कफ़्लो में बेसलाइन प्रोफ़ाइलों को अपने-आप कैप्चर और शामिल करता है.
BaselineProfileRule.collect
अब यह स्टेबल है. यह एक्सपेरिमेंट के तौर पर उपलब्धBaselineProfileRule.collectBaselineProfile
एपीआई के पिछले वर्शन का बेहतर और आसान वर्शन है- बस
packageName
डालें और अपने ऐप्लिकेशन को आगे बढ़ाएं
- बस
- बेसलाइन प्रोफ़ाइल जनरेट करने वाली लाइब्रेरी के लिए, अब कोड (
BaselineProfileRule.collect
आर्ग्युमेंट) या gradle प्लग इन में जनरेट किए गए नियमों को फ़िल्टर किया जा सकता है - ठीक किए गए गड़बड़ियां
- Android U+ पर बेसलाइन प्रोफ़ाइल कलेक्शन की समस्या को ठीक किया गया (Id1392, b/277645214)
Macrobenchmark
- कंपाइलेशन
- Macrobenchmark अब हर कंपाइल के लिए, कंपाइलेशन की स्थिति को सही तरीके से पूरी तरह से रीसेट करता है. इसके लिए, Android 14 से पहले APK को फिर से इंस्टॉल करना ज़रूरी है. इसलिए, अगर आपको मेज़र की जा रही चीज़ों में स्थिति (जैसे, उपयोगकर्ता लॉगिन) को बनाए रखना है, तो Android 14 और उसके बाद के वर्शन पर बेंचमार्किंग करने का सुझाव दिया जाता है.
- ऐप्लिकेशन को अलग से कंपाइल करके और
CompilationMode.Ignore()
या इंस्ट्रूमेंटेशन आर्ग्युमेंट की मदद से कंपाइलेशन को छोड़कर, इस समस्या को हल किया जा सकता है
इंस्ट्रूमेंटेशन आर्ग्युमेंट
- पुष्टि करने के लिए,
androidx.benchmark.dryRunMode.enable
इंस्ट्रूमेंटेशन आर्ग्युमेंट की सुविधा. यह सुविधा पहले से ही माइक्रो-बेंचमार्क में उपलब्ध है. इससे, पुष्टि करने की प्रोसेस तेज़ी से पूरी की जा सकती है. जैसे, बेंचमार्क बनाते समय या सबमिट करने से पहले androidx.benchmark.profiling.mode=StackSampling
औरMethodTracing
के लिए सहायता.- रनटाइम फ़िल्टरिंग बेसलाइन प्रोफ़ाइल बनाम मैक्रोबेंचमार्क नियम के टेस्ट की अनुमति देने के लिए,
androidx.benchmark.enabledRules
जोड़ा गया - tracing-perfetto की मदद से ट्रैकिंग चालू करने के लिए,
androidx.benchmark.perfettoSdkTracing.enable
आर्ग्युमेंट जोड़ा गया. जैसे, Compose recomposition tracing. ध्यान दें किStartupMode.COLD
के साथ इस्तेमाल करने पर, टाइमिंग पर काफ़ी असर पड़ेगा. इसकी वजह यह है कि ऐप्लिकेशन के शुरू होने के दौरान, ट्रैकिंग लाइब्रेरी लोड और चालू होती है.
- पुष्टि करने के लिए,
ज़रूरी शर्तें
- प्रोफ़ाइल कैप्चर / रीसेट करने और शेडर कैश मिटाने की सुविधा चालू करने के लिए, अब टारगेट किए गए ऐप्लिकेशन में Macrobenchmark के
ProfileInstaller
1.3.0 या इसके बाद के वर्शन की ज़रूरत है.
- प्रोफ़ाइल कैप्चर / रीसेट करने और शेडर कैश मिटाने की सुविधा चालू करने के लिए, अब टारगेट किए गए ऐप्लिकेशन में Macrobenchmark के
एक्सपेरिमेंट के तौर पर उपलब्ध नए मेट्रिक एपीआई
- एक्सपेरिमेंट के तौर पर
TraceSectionMetric
जोड़ा गया है. इसकी मदद से, अपने ऐप्लिकेशन मेंtrace("") {}
ब्लॉक या PerfettoTraceProcessor
की क्वेरी की पूरी क्षमता का फ़ायदा पाने के लिए, TraceMetric से आसानी से टाइमिंग निकाली जा सकती है. - पावर खर्च की जानकारी कैप्चर करने के लिए, एक्सपेरिमेंटल
PowerMetric
जोड़ा गया - पेज फ़ॉल्ट की गिनती करने के लिए, एक्सपेरिमेंट के तौर पर
MemoryCountersMetric
जोड़ा गया - एक्सपेरिमेंट के तौर पर
PerfettoTraceProcessor
एपीआई जोड़ा गया है. इसका इस्तेमाल, सिस्टम ट्रेस (जिसे Perfetto ट्रेस भी कहा जाता है) से मेट्रिक निकालने के लिए किया जाता है
- एक्सपेरिमेंट के तौर पर
समाधान
- एक से ज़्यादा APK (जैसे, ऐप्लिकेशन बंडल) से इंस्टॉल किए गए ऐप्लिकेशन से प्रोफ़ाइलें इंस्टॉल या निकालते समय क्रैश होने की समस्या को ठीक किया गया.
FrameTimingMetric
को ठीक किया गया, जो अलग-अलग फ़्रेम आईडी वाले फ़्रेम को अनदेखा करता है. आम तौर पर, एपीआई 31 और उसके बाद के वर्शन पर रिपल के दौरान फ़्रेम (I747d2, b/279088460)- 64 एमबी से ज़्यादा के ट्रैस को पार्स करने से जुड़ी गड़बड़ियां ठीक की गईं (Ief831, b/269949822)
- डिवाइस (खास तौर पर एमुलेटर) के ओएस इमेज को ट्रैकिंग या कंपाइलेशन के लिए सही तरीके से कॉन्फ़िगर न करने पर, गड़बड़ियों के बारे में साफ़ तौर पर जानकारी
- बैटरी के बिना काम करने वाले डिवाइसों (माइक्रो और मैक्रो) के लिए, बैटरी लेवल की जांच को छोड़ना
- अमान्य आउटपुट डायरेक्ट्री के लिए ज़्यादा साफ़ तौर पर गड़बड़ियों की जानकारी देने के साथ-साथ, फ़ाइल का बेहतर आउटपुट और सुरक्षित डिफ़ॉल्ट सेटिंग
- शेडर कैश को लगातार छोड़कर,
StartupMode.COLD
की स्थिरता को बेहतर बनाया गया. इसेMacrobenchmarkScope.dropShaderCache
के ज़रिए भी एक्सपोज़ किया गया है startActivityAndWait
के लिए, लीनबैक फ़ॉलबैक को ठीक किया गया.
माइक्रोबेंचमार्क
- सुविधाएं
- अन्य मेट्रिक के बाद, प्रोफ़ाइलिंग को एक अलग चरण में ले जाया गया था. इसलिए, एक टेस्ट रन से, प्रोफ़ाइलिंग के नतीजों और सटीक समय, दोनों को दिखाया जा सकता है.
- प्रयोग के लिए एपीआई
- कस्टम मेट्रिक तय करने और ट्रैकिंग और प्रोफ़ाइलिंग को कॉन्फ़िगर करने के लिए, एक्सपेरिमेंट के तौर पर
MicrobenchmarkConfig
API जोड़ा गया. इसका इस्तेमाल, मेथड ट्रेस या ट्रेसपॉइंट कैप्चर करने के लिए किया जा सकता है. हालांकि, ट्रेसिंग के ओवरहेड से सावधान रहें. BenchmarkState
कोBenchmarkRule
से अलग से कंट्रोल करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई जोड़े गए. इनमें JUnit का इस्तेमाल नहीं किया गया है- Perfetto ट्रेस को कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर
PerfettoTrace
रिकॉर्ड जोड़ा गया है. यह रिकॉर्ड, पसंद के मुताबिक कॉन्फ़िगरेशन के साथ, बेंचमार्क एपीआई से अलग होता है.
- कस्टम मेट्रिक तय करने और ट्रैकिंग और प्रोफ़ाइलिंग को कॉन्फ़िगर करने के लिए, एक्सपेरिमेंट के तौर पर
- ठीक किए गए गड़बड़ियां
- 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) - टारगेट ऐप्लिकेशन में macrobenchmark मॉड्यूल से इंजेक्शन करते समय,
tracing-perfetto
लोड करने से जुड़ी गड़बड़ी के मैसेज के बारे में साफ़ तौर पर बताया गया.
वर्शन 1.2.0-rc01
20 सितंबर, 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
रिलीज़ हो गया है. 1.2.0-rc01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब Perfetto SDK टूल की ट्रैकिंग, बेंचमार्क में शुरू नहीं हो पाती, तो अब एक अपवाद (समस्या को ठीक करने के निर्देशों के साथ) दिखता है. (I6c878, b/286228781)
- ART मेथड ट्रेस को perfetto फ़ॉर्मैट में बदलते समय, OOM क्रैश की समस्या को ठीक किया गया. (I106bd, b/296905344)
- (Macrobenchmark) 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 और उसके बाद के वर्शन पर, मैक्रोबेंचमार्क के लिए 'प्रोफ़ाइल नहीं की जा सकती' गड़बड़ी को हटा दिया गया है. साथ ही, रूट किए गए 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)
गड़बड़ियां ठीक की गईं
- जब ओएस को ट्रैकिंग के लिए गलत तरीके से कॉन्फ़िगर किया गया हो, तो macrobench में गड़बड़ी की रिपोर्ट करें. हाल ही में, एपीआई 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)- माइक्रोबेंचमार्क प्रोफ़ाइलिंग को एक अलग चरण में ले जाया गया है, ताकि यह मेज़रमेंट की जगह लेने के बजाय, उसके बाद क्रम में हो. अगर मौजूद हैं, तो कैप्चर किए गए Perfetto ट्रेस में
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
API को हटा दिया गया है और इसके बजाय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
को ऐसे फ़्रेम को अनदेखा करने से रोकना जिनके फ़्रेम आईडी अलग-अलग हैं. इस वजह से, हाल ही के प्लैटफ़ॉर्म वर्शन (एपीआई 31 और उसके बाद के वर्शन) पर,RenderThread
ऐनिमेट होने के दौरान (जैसे, रिपल के दौरान) कुछ ऐनिमेशन कई फ़्रेम को अनदेखा कर देंगे. (I747d2, b/279088460)- 64 एमबी से ज़्यादा के ट्रैक के लिए, ट्रैक प्रोसेसर की पार्सिंग को ठीक किया गया. (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)
- 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 ट्रैकिंग की सुविधा हटा दी गई है. इसमें माइक्रोबेंचमार्क और प्रयोग के तौर पर उपलब्ध
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) - ऐप्लिकेशन मॉड्यूल (जैसे, ऐसे APK जिनमें अपने-आप जांच करने की सुविधा नहीं है) में
PerfettoTrace
कैप्चर करने की समस्या को ठीक करना (I12cfc) - Studio के आउटपुट में, बेसलाइन प्रोफ़ाइल adb pull आर्ग्युमेंट का क्रम ठीक किया गया (I958d1, b/261781624)
- मैक्रोबेंचमार्क चलाने के दौरान, Arm एमुलेटर api 33 को अब सही तरीके से पहचाना जाता है. साथ ही, यह चेतावनी को सही तरीके से प्रिंट करेगा. (69133b,b/262209591)
- Macrobenchmark में, बैटरी के बिना काम करने वाले डिवाइसों पर बैटरी लेवल की जांच को छोड़ना (fe4114, b/232448937)
वर्शन 1.2.0-alpha08
7 दिसंबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
रिलीज़ हो गया है. 1.2.0-alpha08 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेस्ट के हिस्से के तौर पर 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 बहुत पुराना होने पर, प्रिंट किए गए profileinstaller गड़बड़ी के मैसेज को बेहतर बनाएं. अब यह आपको बताता है कि एपीआई 31 से 33 पर बेसलाइन प्रोफ़ाइलों को मेज़र करने के लिए, profileinstaller का वर्शन (1.2.1) अपडेट करें. इससे, आपको यह नहीं दिखेगा कि यह सुविधा काम नहीं करती. (Ia517f, b/253519888)
- onerror मैसेज में, शेल कमांड के काम न करने की कई समस्याओं को ठीक करें. इसके लिए, ज़रूरी एपीआई <=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()
क्रैश हो सकता है. यह रजिस्ट्री अब तक रिलीज़ नहीं हुई है. (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 की ज़रूरी शर्त को भी हटा दिया गया है, क्योंकि टारगेट किए गए ऐप्लिकेशन मेंforceEnableAppTracing
का इस्तेमाल करके,TraceSectionMetric
,androidx.tracing.Trace
के साथ मिलकर काम करता है. यह काम, एपीआई लेवल के पुराने वर्शन पर भी करता है. (Id7b68, b/231455742)
गड़बड़ियां ठीक की गईं
- सभी आउटपुट/गड़बड़ियों की पुष्टि करके, सभी इंटरनल शेल कमांड की सुरक्षा को बेहतर बनाया गया है. (I5984d, b/255402908, b/253094958)
- बेसलाइन प्रोफ़ाइल
adb pull
कमांड में डिवाइस की जानकारी दें, ताकि एक से ज़्यादा डिवाइस (एक एम्युलेटर तक) कनेक्ट होने पर, पुल कमांड को आसानी से कॉपी किया जा सके (I6ac6c, b/223359380) - अगर मैक्रोबेंचमार्क टेस्ट apk को सेल्फ़-इंस्ट्रुमेंटिंग के तौर पर सेट अप नहीं किया गया है, तो गड़बड़ी जोड़ें. इस गड़बड़ी की वजह से, टारगेट किए गए ऐप्लिकेशन की प्रोसेस में मैक्रोबेंचमार्किंग नहीं की जा सकती. प्रोसेस के दौरान, macrobench ऐप्लिकेशन को कंपाइल/बंद/कोल्ड स्टार्ट नहीं कर पाएगा. इसके अलावा, वह अपनी अनुमतियों को कंट्रोल भी नहीं कर पाएगा (I4279b)
measureRepeated()
में एक समस्या को ठीक किया गया है. इसमेंStartupMode.COLD
,setupBlock
के बाद टारगेट प्रोसेस को बंद नहीं कर पाता था. अबsetupBlock
के ऐप्लिकेशन के साथ इंटरैक्ट करने से, ऐप्लिकेशन की प्रोसेस नहीं रुकेगी और कोल्ड स्टार्ट का अमान्य मेज़रमेंट नहीं होगा. (I8ebb7)
वर्शन 1.2.0-alpha06
24 अक्टूबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
रिलीज़ हो गया है. 1.2.0-alpha06 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Android 13 (एपीआई लेवल 33) पर,
BaselineProfileRule
को अब रूट करने की ज़रूरत नहीं है. साथ ही, यह अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Ie0a7d, b/250083467, b/253094958)- इस बदलाव से, बिना रूट किए गए डिवाइसों पर किसी ऐप्लिकेशन की प्रोफ़ाइलों को डिस्क पर फ़्लश करने का तरीका भी ठीक हो जाता है. हालांकि, इसके लिए टारगेट ऐप्लिकेशन के profileinstaller डिपेंडेंसी को अपडेट करना ज़रूरी है.
- बिना रूट किए गए डिवाइस पर
BaselineProfileRule
याCompilationMode.Partial(warmupIterations)
का इस्तेमाल करने के लिए, आपको टारगेट किए गए ऐप्लिकेशन को भीandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
का इस्तेमाल करने के लिए अपडेट करना होगा. इससे प्रोफ़ाइल को डिस्क पर सही तरीके से फ़्लश किया जा सकता है, ताकि उसे कंपाइल/एक्सट्रैक्ट किया जा सके.
गड़बड़ियां ठीक की गईं
- एपीआई 33 और उसके बाद के वर्शन पर,
SampledProfiling
के क्रैश होने की समस्या को ठीक करता है. (I40743, b/236109374)
वर्शन 1.2.0-alpha05
5 अक्टूबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
रिलीज़ हो गया है. 1.2.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कैप्चर किए गए बेंचमार्क ट्रेस के लिए, Studio के सिस्टम ट्रेस व्यूअर में फ़्रेम ब्रेकडाउन की समस्या को ठीक करना (I3f3ae, b/239677443)
FrameTimingMetric
कोFrameOverrun
की सूची में ठीक करें, ताकि 29 के बजाय एपीआई 31 की ज़रूरत हो (I716dd, b/220702554)BaselineProfileRule
में दोहराव सेट करें और अगर टारगेट पैकेज इंस्टॉल नहीं है, तो साफ़ तौर पर बताएं (MacrobenchmarkRule के लिए पहले से ही किया गया था). (Ic09a3, b/227991471)
वर्शन 1.2.0-alpha04
21 सितंबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
रिलीज़ हो गया है. 1.2.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
dryRunMode.enable
इंस्ट्रूमेंटेशन आर्ग्युमेंट को मैक्रोबेंचमार्क में जोड़ें (यह माइक्रो में पहले से उपलब्ध है). इससे, स्थानीय डेवलपमेंट तेज़ी से होगा और ऐप्लिकेशन ऑटोमेशन की पुष्टि की जा सकेगी. जैसे, सबमिट करने से पहले की जाने वाली पुष्टि. इससे, दोहराव की संख्या 1 पर बदल जाती है, कंपाइलेशन को स्किप कर दिया जाता है, सभी कॉन्फ़िगरेशन गड़बड़ियां दबा दी जाती हैं, और मेज़रमेंट .json फ़ाइल का आउटपुट बंद कर दिया जाता है. (Ib51b4, b/175149857)Gradle कमांड लाइन पर:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
build.gradle में:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
गड़बड़ियां ठीक की गईं
StartupTimingMetric
को ठीक किया गया, ताकि अबMacrobenchmarkScope.startActivityAndWait()
के ज़रिए मेज़र की गई गतिविधियों को लॉन्च करने की ज़रूरत न पड़े. इसका मतलब है कि मेट्रिक, सूचनाओं,Context.startActivity()
, इन-ऐप्लिकेशन गतिविधि के आधार पर नेविगेशन या शेल कमांड से लॉन्च को शामिल कर सकती है. (Ia2de6, b/245414235)- फ़्रेम का पता लगाने की सटीक जानकारी को कम करके,
startActivityAndWait
को एमुलेटर पर लॉन्च पूरा होने का इंतज़ार करते समय टाइम आउट होने की समस्या को ठीक किया गया. (Ibe2c6, b/244594339, b/228946895)
वर्शन 1.2.0-alpha03
7 सितंबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
रिलीज़ हो गया है. 1.2.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
BenchmarkState
कोBenchmarkRule
/JUnit4
से अलग करके इस्तेमाल करने के लिए, एक्सपेरिमेंट के तौर पर एपीआई जोड़े गए हैं. (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)
- बिना रूट किए गए डिवाइसों पर, ODPM की पावर मेट्रिक की जांच करने की सुविधा. (a38c78, b/229623230)
वर्शन 1.2.0-alpha01
27 जुलाई, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
रिलीज़ हो गया है. 1.2.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- tracing-perfetto-common का नया कॉम्पोनेंट, जो टूल को ऐसे ऐप्लिकेशन में Perfetto SDK टूल की ट्रैकिंग की सुविधा चालू करने की अनुमति देता है जो इसे एक्सपोज़ करता है (I2cc7f)
androidx.benchmark.enabledRules
इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ा गया है, ताकि सिर्फ़ बेंचमार्क या सिर्फ़ बेसलाइन प्रोफ़ाइल जनरेशन के लिए, मैक्रोबेंचमार्क चलाने को फ़िल्टर किया जा सके. सिर्फ़ एक तरह का टेस्ट चलाने के लिए, 'Macrobenchmark' या '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) - पैकेज के नाम (If7338, b/220146561) के हिसाब से आउटपुट फ़ाइल को फ़िल्टर करने के लिए,
BaselineProfileRule#collectBaselineProfile
में एक नया पैरामीटर जोड़ा गया - इससे डेवलपर, डिवाइस की बैटरी खर्च होने की दर को मेज़र कर सकता है. (I6a6cb)
MacrobenchmarkScope
में शेडर कैश मिटाने की सुविधा जोड़ी गई. (I32122)- इससे डेवलपर, मेट्रिक टाइप के डिसप्ले को कॉन्फ़िगर कर सकता है. साथ ही, अपनी पसंद के सबसिस्टम कैटगरी की जानकारी दे सकता है. (I810c9)
- पहले, अगर किसी ऐसे डिवाइस पर जांच की जाती थी जो काम नहीं करता, तो जांच के नतीजे के तौर पर
UnsupportedOperationException
दिखता था. अब यूओई सिर्फ़ तब होता है, जब मेट्रिक का इस्तेमाल ऐसे डिवाइस पर किया जाता है जिस पर यह काम नहीं करती. जैसे:PowerMetric.configure
. (I5cf20, b/227229375) - मैक्रोबेंचमार्क में हर सिस्टम कैटगरी में कुल पावर और ऊर्जा को मेज़र करने के लिए,
TotalPowerMetric
औरTotalEnergyMetric
जोड़े गए हैं. (I3b26b, b/224557371)
गड़बड़ियां ठीक की गईं
- बिना रूट किए गए बिल्ड पर, हर मैक्रोबेंचमार्क के बीच कंपाइल किए गए तरीके सही तरीके से रीसेट नहीं हो रहे थे. इस समस्या को ठीक कर दिया गया है. माइक्रोबेंचमार्क के लिए, हर बार APK को फिर से इंस्टॉल करना पड़ता है. इससे हर माइक्रोबेंचमार्क के लिए, ऐप्लिकेशन का डेटा मिट जाता है. (I31c74, b/230665435)
- API 21/22 पर, ट्रेस रिकॉर्डिंग क्रैश होने की समस्या को ठीक किया गया (If7fd6, b/227509388, b/227510293, b/227512788)
- स्टार्टअप मैक्रोबेंचमार्क में 'कोई भी मेट्रिक नहीं पढ़ी जा सकी' अपवाद को ठीक करने के लिए, गतिविधि लॉन्च होने की जानकारी का पता लगाने की सुविधा को बेहतर बनाया गया है. (Ia517c)
वर्शन 1.1.1
वर्शन 1.1.1
9 नवंबर, 2022
androidx.benchmark:benchmark-*:1.1.1
रिलीज़ हो गया है. 1.1.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
android.system.ErrnoException: open failed: EACCES
से जुड़ी समस्या को ठीक करता है, जो Android11 (एपीआई 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 के मैक्रो-बेंचमार्क की सुविधा, आपको स्टार्टअप और स्क्रोल करने जैसे पूरे ऐप्लिकेशन के इंटरैक्शन को मेज़र करने की सुविधा देती है. साथ ही, ट्रेसे कैप्चर करने और ट्रेसे सेक्शन को मेज़र करने की सुविधा भी देती है.
बेसलाइन प्रोफ़ाइलों के लिए सहायता
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>
की मदद से टारगेट को पूरी तरह से कंपाइल किया जा सकता है. इसके बाद, macrobenchmark के कंपाइलेशन चरण को बायपास किया जा सकता है.उदाहरण के लिए, आपके मैक्रोबेंचमार्क की build.gradle में:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
इसके अलावा, Gradle कमांड लाइन से भी ऐसा किया जा सकता है:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
androidx.benchmark.enabledRules
इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़कर, मैक्रोबेंचमार्क और बेसलाइन प्रोफ़ाइल जनरेट करने वाले टेस्ट के बीच मॉड्यूल शेयर करने की सुविधा जोड़ी गई. सिर्फ़ एक तरह का टेस्ट चलाने के लिए, 'Macrobenchmark' या 'BaselineProfile' पास करें. उदाहरण के लिए, किसी एमुलेटर परBaselineProfiles
जनरेट करते समय. (I756b7, b/230371561)उदाहरण के लिए, आपके मैक्रोबेंचमार्क की build.gradle में:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
इसके अलावा, Gradle कमांड लाइन से भी ऐसा किया जा सकता है:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
वर्शन 1.1.0-rc01
20 अप्रैल, 2022
androidx.benchmark:benchmark-*:1.1.0-rc01
रिलीज़ हो गया है. 1.1.0-rc01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android Studio में, बेसलाइन प्रोफ़ाइल के आउटपुट लिंक अब फ़ाइल के यूनीक नाम का इस्तेमाल करते हैं. इस तरह, आउटपुट में हमेशा
BaselineProfileRule
का इस्तेमाल करने से मिले नए नतीजे दिखते हैं. ( aosp/2057008, b/228203086 )
वर्शन 1.1.0-beta06
6 अप्रैल, 2022
androidx.benchmark:benchmark-*:1.1.0-beta06
रिलीज़ हो गया है. 1.1.0-beta06 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एपीआई 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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध फ़्लैग के तहत, macrobenchmark लाइब्रेरी में
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)
- API 23 (Ice380) पर, कंपाइलेशन शेल कमांड को रोकना
FrameCpuTime
->FrameDurationCpu
,FrameUiTime
->FrameDurationUi
नाम बदला गया, ताकि यह साफ़ तौर पर बताया जा सके कि ये टाइमस्टैंप नहीं, बल्कि अवधि हैं. साथ ही, प्रीफ़िक्स से मैच करने के लिए भी ऐसा किया गया है. (I0eba3, b/216337830)
वर्शन 1.1.0-beta02
26 जनवरी, 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
रिलीज़ हो गया है. 1.1.0-beta02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- माइक्रोबेंचमार्क स्टैक सैंपलिंग / मेथड ट्रैसिंग प्रोफ़ाइल के नतीजे, अब Studio के आउटपुट में लिंक किए गए हैं. यह अन्य प्रोफ़ाइलिंग आउटपुट की तरह ही होता है. साथ ही, यह ऐलोकेशन मेट्रिक को दबा नहीं देता. (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule अब जनरेट की गई 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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Macrobenchmark में अब
23
काminSdkVersion
है. (If2655) - प्रयोग के तौर पर एक नया
BaselineProfileRule
जोड़ा गया है. यह ऐप्लिकेशन के उपयोगकर्ता के सफ़र के अहम पड़ावों के लिए, बेसलाइन प्रोफ़ाइलें जनरेट कर सकता है. ज़्यादा जानकारी के लिए, यहां दिया गया दस्तावेज़ देखें. (Ibbefa, b/203692160) - measureRepeated इंटरफ़ेस वैरिएंट को हटाता है. इसे java कॉलर के लिए जोड़ा गया था, क्योंकि इससे तरीका पूरा करने/समस्या हल करने में समस्या आती थी. Java कॉलर को फिर से measureRepeated से Unit.Instance दिखाना होगा. अगर आपको इससे कोई परेशानी हो रही है, तो कृपया गड़बड़ी की शिकायत करें. हम आने वाले वर्शन में इस पर फिर से विचार कर सकते हैं. (Ifb23e, b/204331495)
वर्शन 1.1.0-alpha10
27 अक्टूबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
रिलीज़ हो गया है. 1.1.0-alpha10 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- StartupTimingMetric को बैकपोर्ट करें, ताकि यह एपीआई 23 के साथ काम कर सके. इस नए तरीके से, reportFullyDrawn() को बेहतर तरीके से मैनेज किया जाता है, ताकि कॉन्टेंट रेंडर होने तक इंतज़ार किया जा सके. (If3ac9, b/183129298)
- Java कॉलर के लिए, MacrobenchmarkScope के कई तरीकों में JvmOverloads जोड़ा गया. (I644fe, b/184546459)
- MacrobenchmarkRule.measureRepeated फ़ंक्शन का विकल्प दें, जो Java भाषा में, आइडिओमैटिक इस्तेमाल के लिए
Consumer<MacrobenchmarkScope>
का इस्तेमाल करता है. (If74ab, b/184546459)
गड़बड़ियां ठीक की गईं
- ट्रेस जल्दी शुरू न होने और मेट्रिक डेटा मौजूद न होने की समस्या को ठीक करना. इससे, लाइब्रेरी की वजह से होने वाले "बेंचमार्क के दौरान कोई भी मेट्रिक नहीं पढ़ी जा सकी" अपवाद ठीक हो जाएंगे. (I6dfcb, b/193827052, b/200302931)
- FrameNegativeSlack का नाम बदलकर FrameOverrun कर दिया गया है, ताकि इसका मतलब साफ़ तौर पर बताया जा सके - फ़्रेम अपने टाइम बजट से कितना ज़्यादा चला. (I6c2aa, b/203008701)
वर्शन 1.1.0-alpha09
13 अक्टूबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
रिलीज़ हो गया है. 1.1.0-alpha09 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एपीआई 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
का इस्तेमाल करके मैक्रो बेंचमार्क आसानी से चला सकें. (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
Benchmark के वर्शन 1.1.0-alpha02 में, बैंचमार्किंग के लिए एक बड़ा कॉम्पोनेंट जोड़ा गया है - Macrobenchmark. बेंचमार्क की मदद से, सीपीयू लूप को मेज़र किया जा सकता है. इसके अलावा, मैक्रोबेंचमार्क की मदद से, ऐप्लिकेशन के शुरू होने और स्क्रोल करने जैसे पूरे ऐप्लिकेशन के इंटरैक्शन को मेज़र किया जा सकता है. साथ ही, ट्रेस कैप्चर किए जा सकते हैं. ज़्यादा जानकारी के लिए, लाइब्रेरी का दस्तावेज़ देखें.
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 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 वर्शन में 140ns की जगह M वर्शन में 8ns का समय लिया गया. यह समय, Nexus5X पर लॉक किए गए क्लॉक के साथ मेज़र किया गया था. यह मेट्रिक, Android Studio कंसोल के आउटपुट के साथ-साथ
- प्रोफ़ाइलिंग से जुड़ी सहायता - अब आपके पास बेंचमार्क रन के लिए प्रोफ़ाइलिंग डेटा कैप्चर करने का विकल्प है. इससे यह पता लगाया जा सकता है कि आपका कोड धीरे क्यों चल रहा है. बेंचमार्क, ART से मेथड ट्रैकिंग या मेथड सैंपलिंग में से किसी एक को कैप्चर करने की सुविधा देता है. इन फ़ाइलों की जांच, Android Studio में फ़ाइल > खोलें का इस्तेमाल करके, प्रोफ़ाइलर की मदद से की जा सकती है.
- बेंचमार्क Gradle प्लग इन अब आसान सेटअप के लिए डिफ़ॉल्ट सेटिंग उपलब्ध कराता है:
testBuildType
को डिफ़ॉल्ट रूप से रिलीज़ करने के लिए सेट किया गया है, ताकि पहले से मौजूद कोड कवरेज के साथ डिपेंडेंसी का इस्तेमाल न किया जा सके. रिलीज़ के लिए इस्तेमाल होने वाले buildType को डिफ़ॉल्ट buildType के तौर पर भी कॉन्फ़िगर किया जाता है. इससे Android Studio, पहली बार किसी प्रोजेक्ट को खोलने पर, सही बिल्ड वैरिएंट को अपने-आप चुन सकता है. (b/138808399)signingConfig.debug
का इस्तेमाल, डिफ़ॉल्ट साइनिंग कॉन्फ़िगरेशन (b/153583269) के तौर पर किया जाता है
** गड़बड़ियां ठीक की गईं **
- हमने वॉर्मअप ट्रांज़िशन के ओवरहेड को काफ़ी कम कर दिया है. इसमें हर मानदंड के लिए पहली मेज़रमेंट, दूसरे मानदंडों की तुलना में कृत्रिम रूप से ज़्यादा थी. यह समस्या बहुत छोटे मानदंडों (1 माइक्रोसेकंड या उससे कम) में ज़्यादा साफ़ तौर पर दिखी. (b/142058671)
- कमांड लाइन से चलाने पर, हर बेंचमार्क के लिए
InstrumentationResultParser
गड़बड़ी को ठीक किया गया. (I64988, b/154248456)
ऐसी समस्याएं जिनकी जानकारी पहले से है
- कमांड लाइन, बेंचमार्क के Gradle इनवोकेशन, नतीजों को सीधे तौर पर प्रिंट नहीं करते. इस समस्या को हल करने के लिए, Studio में जाकर या नतीजों के लिए JSON आउटपुट फ़ाइल को पार्स करके, इसे ठीक किया जा सकता है.
- बेंचमार्क रिपोर्टिंग, उन डिवाइसों से रिपोर्ट नहीं खींच पाती जिनमें “android” या “download” (बड़े और छोटे अक्षरों में अंतर नहीं किया जाता) पर खत्म होने वाला applicationId वाला ऐप्लिकेशन इंस्टॉल है. जिन उपयोगकर्ताओं को यह समस्या आ रही है उन्हें 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 वर्शन में ये कमिट शामिल हैं.
नई सुविधाएं
- बेंचमार्क में systrace ट्रैकिंग जोड़ी गई
गड़बड़ियां ठीक की गईं
- मेट्रिक में होने वाली अस्थिरता की समस्या को ठीक किया गया. इस समस्या की वजह से, प्राथमिकता हटाने की वजह से, JIT, वॉर्म अप से पहले पूरा नहीं होता था (b/140773023)
- Android Gradle प्लग इन 3.5 और 3.6 में एक जैसी JSON आउटपुट डायरेक्ट्री
वर्शन 1.0.0-beta01
9 अक्टूबर, 2019
androidx.benchmark:benchmark-common:1.0.0-beta01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
, और androidx.benchmark:benchmark-junit4:1.0.0-beta01
रिलीज़ हो गए हैं. 1.0.0-beta01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- हर वॉर्मअप से पहले, गै़रबेज कलेक्शन चलाएं, ताकि एक बेंचमार्क से दूसरे बेंचमार्क में मेमोरी का दबाव कम हो सके (b/140895105)
गड़बड़ियां ठीक की गईं
androidx.annotation:android-experimental-lint
डिपेंडेंसी जोड़ी गई है, ताकि एक्सपेरिमेंटल एपीआई का इस्तेमाल न करने पर, Java कोड सही तरीके से लिंट गड़बड़ियां दिखाए. यह ठीक वैसा ही है जैसा Kotlin कॉलर के लिए, Kotlin एक्सपेरिमेंटल एनोटेशन से मिलता है.- अब Android Gradle प्लग इन 3.6 में, आउटपुट के लिए
additionalTestOutputDir
इंस्ट्रूमेंटेशन आर्ग्युमेंट के इस्तेमाल का सही तरीके से पता चलता है. इससे यह पता चलता है कि AGP, डेटा कॉपी को कब हैंडल करेगा. -1
को सही तरीके से प्रिंट करने के लिए, JSON में क्लॉक फ़्रीक्वेंसी की गड़बड़ी को ठीक करें (b/141945670).
वर्शन 1.0.0-alpha06
18 सितंबर, 2019
androidx.benchmark:benchmark-common:1.0.0-alpha06
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06
, और androidx.benchmark:benchmark-junit4:1.0.0-alpha06
रिलीज़ हो गए हैं. 1.0.0-alpha06 वर्शन में ये कमिट शामिल हैं.
नई सुविधाएं
- टेस्ट रनर के लिए पुराने पैकेज का गलत तरीके से इस्तेमाल करने की जांच करने की सुविधा जोड़ी गई है. इससे, अब गड़बड़ी के बारे में ज़्यादा मददगार मैसेज मिलता है
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध एनोटेशन
ExperimentalAnnotationReport
को अब सार्वजनिक कर दिया गया है. एक्सपेरिमेंट के तौर पर उपलब्ध BenchmarkState#report एपीआई का इस्तेमाल करने के लिए, अब इस एनोटेशन की ज़रूरत होगी
वर्शन 1.0.0-alpha05
5 सितंबर, 2019
androidx.benchmark:benchmark-common:1.0.0-alpha05
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05
, और androidx.benchmark:benchmark-junit4:1.0.0-alpha05
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
BenchmarkState.reportData
एपीआई को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है
गड़बड़ियां ठीक की गईं
- घड़ी को लॉक करने वाली स्क्रिप्ट से जुड़ी समस्या को ठीक किया गया. यह समस्या उन डिवाइसों पर आती थी जिनमें
cut
याexpr
शेल की सुविधाएं मौजूद नहीं थीं. ./gradlew lockClocks
टास्क से जुड़ी एक समस्या को ठीक किया गया है. यह समस्या उन डिवाइसों पर आती थी जिन्हें su यूटिलिटी के पुराने वर्शन से रूट किया गया था. यह वर्शन,-c
फ़्लैग के साथ काम नहीं करता.
वर्शन 1.0.0-alpha04
7 अगस्त, 2019
androidx.benchmark:benchmark-common:1.0.0-alpha04
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04
, और androidx.benchmark:benchmark-junit4:1.0.0-alpha04
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
Gradle के बिना, बेंचमार्क लाइब्रेरी का इस्तेमाल करने का तरीका बताने वाला नया दस्तावेज़ भी जोड़ा गया है. यह तरीका, अलग-अलग बिल्ड सिस्टम (जैसे, Bazel या Buck) के साथ इस्तेमाल करने और सीआई में चलाने, दोनों के लिए है. ज़्यादा जानकारी के लिए, Gradle के बिना मानदंड बनाएं और कंटिन्यूअस इंटिग्रेशन में मानदंड चलाएं लेख पढ़ें.
नई सुविधाएं
- Gradle प्लग इन
- अब टेस्ट कवरेज अपने-आप बंद हो जाता है और
AndroidBenchmarkRunner
को डिफ़ॉल्ट रूप से सेट कर देता है (b/138374050) - बेंचमार्क चलाने और AGP 3.6 और उसके बाद के वर्शन का इस्तेमाल करने पर, AGP पर आधारित नई डेटा कॉपी के लिए सहायता जोड़ी गई
- अब टेस्ट कवरेज अपने-आप बंद हो जाता है और
- 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.reportData
एपीआई से थर्मल थ्रॉटल की पहचान करने की सुविधा हटाई गई है (b/132887006)
गड़बड़ियां ठीक की गईं
./gradlew lockClocks
को कुछ नए ओएस वाले डिवाइसों पर चिपकने से जुड़ी समस्या को ठीक किया गया (b/133424037)- एमुलेटर के लिए, थ्रॉटलिंग की पहचान करने की सुविधा बंद की गई (b/132880807)
वर्शन 1.0.0-alpha01
7 मई, 2019
androidx.benchmark:benchmark:1.0.0-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट, यहां उपलब्ध हैं.