मानदंड
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
30 अक्टूबर, 2024 | 1.3.3 | - | - | 1.4.0-alpha04 |
डिपेंडेंसी का एलान करना
Benchmark पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की मेवन रिपॉज़िटरी पढ़ें.
मैक्रोबेंचमार्क
अपने प्रोजेक्ट में 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") }
माइक्रो-बेंचमार्क
अपने प्रोजेक्ट में माइक्रोबेंचमार्क का इस्तेमाल करने के लिए, अपने माइक्रोबेंचमार्क मॉड्यूल के लिए 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-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
के व्यवहार पर भी असर पड़ता है. अब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 टेस्ट लैब (एफ़टीएल) का इस्तेमाल, बेसलाइन प्रोफ़ाइल या मैक्रोबेंचमार्क के नतीजे की फ़ाइलों को बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन से हासिल करने में नहीं किया जा सकता. (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)
- जिट को बंद करने (रूट / रनटाइम को रीस्टार्ट करने की ज़रूरत होती है) और डिवाइस की परफ़/टेस्ट स्थिति को रीसेट करने के लिए, प्रयोग के तौर पर स्क्रिप्ट जोड़ें. फ़िलहाल, इन्हें 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…
का इस्तेमाल करने के लिए, बेसलाइन प्रोफ़ाइल Gradle प्लग इन तय किया गया. (Ia8934, b/361370179) - एम्युलेटर पर
automaticGenerationDuringBuild
चालू होने पर,java.lang.AssertionError: ERRORS (not suppressed): EMULATOR
गड़बड़ी को ठीक किया गया. इसके बजाय, जांच को छोड़ने के लिए नए आर्ग्युमेंट का इस्तेमाल किया जाता है. (If3f51, b/355515798) - माइक्रोबेंचमार्क मिनिफ़िकेशन - मानदंड लाइब्रेरी प्रोगार्ड में
org.junit.runner.notification.RunListener
की सब-क्लास को रखें (Ic8ed5, b/354264743) TraceSectionMetric
को ठीक करके, खत्म न होने वाली स्लाइस को अनदेखा करें. पहले, इनकी अवधि -1 मानी जाती थी. जैसे, कुल अवधि या कम से कम अवधि का पता लगाने के दौरान. (If74b7)FrameTimingGfxInfoMetric
में एक समस्या को ठीक किया गया है. इसमें, अगर प्रोसेस पहले से नहीं चल रही थी, तो मेट्रिक शुरू करने पर क्रैश हो जाता था. (I6e412)
वर्शन 1.3.0
21 अगस्त, 2024
androidx.benchmark:benchmark-*:1.3.0
रिलीज़ हो गया है. वर्शन 1.3.0 में ये बातें शामिल हैं.
1.2.0 के बाद माइक्रोबेंचमार्क में हुए बदलाव
- ज़्यादातर डिवाइसों पर माइक्रोबेंचमार्क चलाने पर, मेथड ट्रैकिंग डिफ़ॉल्ट रूप से चालू रहती है
- मेज़रमेंट के बाद, मेथड ट्रेसिंग एक अलग फ़ेज़ के रूप में चलती है. इससे एक ही मानदंड से चलाए जाने वाले नतीजे के तौर पर, सटीक मेज़रमेंट और मेथड ट्रेस, दोनों का पता चलता है
- कुछ Android OS और 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
के लॉन्च में किया गया शेडिंग भी शामिल है. खास तौर पर, ऐसा तब होगा, जब स्टैंडर्ड ऐप्लिकेशन, प्रोफ़ाइलइंस्टॉलर 1.3 का इस्तेमाल न करते होंandroidx.benchmark.dropShaders.throwOnFailure=true/false
: शेडर को छोड़ने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है, उदाहरण के लिए जब प्रोफ़ाइलइंस्टॉलर 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)
- पावर -
1.2.0 के बाद से, बेसलाइन प्रोफ़ाइल कैप्चर करने / Gradle प्लग इन में हुए बदलाव
- 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
- Art मेनलाइन मॉड्यूल का इंटिजर वर्शन (अगर डिवाइस पर मौजूद हो, तो-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)
गड़बड़ियां ठीक की गईं
- 9.0.0-alpha01 वाला सुझाया गया अधिकतम agp वर्शन. (I5bbb0)
- बेंचमार्क कॉन्टेक्स्ट में कंपाइलेशन मोड जोड़ा गया (If5612, b/325512900)
- डिफ़ॉल्ट रूप से AIDL ट्रेस करने की सुविधा चालू करें (एपीआई 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)
- परफ़ेटो ट्रेस प्रोसेसर के लिए, डिफ़ॉल्ट स्टार्ट टाइम आउट बढ़ाएं. (I87e8c, b/329145808)
वर्शन 1.3.0-alpha05
14 मई, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
रिलीज़ हो गया है. वर्शन 1.3.0-alpha05 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब मैक्रोबेंच मेट्रिक सभी दोहरावों के लिए शून्य वैल्यू दिखाती है, तो साफ़ तौर पर अपवाद दिखाएं (Iab58f, b/314931695)
- माइक्रोबेंच प्रोगार्ड के नियमों में, समस्या हल करने के लिए अतिरिक्त नियम जोड़े गए हैं. इनमें, लिसनर नियमों और अन्य चेतावनियों / गड़बड़ियों के लिए सहायता शामिल है. (I14d8f, b/329126308, b/339085669)
- मेथड ट्रैकिंग, मेज़रमेंट पर अब कोई असर नहीं डालती. यह मेज़रमेंट के दौरान, एक अलग फ़ेज़ के तौर पर चलती है. (If9a50, b/285912360, b/336588271)
- शेडर ब्रॉडकास्ट में गड़बड़ी का मैसेज हटाने के लिए, डीबग करने के अतिरिक्त सुझाव जोड़े गए. (I5efa6, b/325502725)
वर्शन 1.3.0-alpha04
1 मई, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
रिलीज़ हो गया है. वर्शन 1.3.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध
MacrobenchmarkRule#measureRepeated
वैरिएंट जोड़ा गया. इसे पूरी तरह से पसंद के मुताबिक बनाया गया परफ़ेटो ट्रेस रिकॉर्ड करने के लिए, पसंद के मुताबिक बनाए गएPerfettoConfig
का इस्तेमाल किया गया. ध्यान दें कि गलत तरीके से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन की वजह से, पहले से मौजूद मीट्रिक क्लास काम नहीं कर सकतीं. (Idfd3d, b/309841164, b/304038384) - साफ़ तौर पर जानकारी देने के लिए,
PowerMetric.deviceSupportsPowerEnergy
का नाम बदलकरPowerMetric.deviceSupportsHighPrecisionTracking
करें (I5b82f) - डिवाइस की पावर मेज़रमेंट क्षमता के आधार पर, बेंचमार्क बदलने या स्किप करने की सुविधा चालू करने के लिए,
PowerMetric.deviceBatteryHasMinimumCharge()
औरPowerMetric.deviceSupportsPowerEnergy()
जोड़े गए. (I6a591, b/322121218)
गड़बड़ियां ठीक की गईं
- पिछली बेसलाइन प्रोफ़ाइल (I824c8, b/269484510) के साथ तुलना करने की सुविधा जोड़ी गई
- चेतावनियों को बंद करने के लिए डीएसएल जोड़ा गया (Ic4deb, b/331237001)
- मानक वैरिएंट के बंद होने पर, जानकारी के लॉग में अपवाद को बदला गया (I8a517, b/332772491)
- मेथड ट्रेस को कैप्चर करना आसान बनाएं, ताकि किसी मैक्रोबेंचमार्क के लिए,
measureBlock()
की कुल अवधि के हिसाब से उसका दायरा तय किया जा सके. पहले, यह टारगेट प्रोसेस लॉन्च पर शुरू हुआ था और यह सिर्फ़ कोल्ड स्टार्ट के साथ काम करता था (Iee85a, b/300651094) - जब 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 होने की संभावना होने पर, मेथड ट्रेस को स्किप न किया जाए. हमारा सुझाव है कि सीआई रन में इसका इस्तेमाल न करें. - एक्सपेरिमेंट के तौर पर शुरुआती तर्क
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)nonMinified
या बेंचमार्क वाले बिल्ड टाइप को पसंद के मुताबिक बनाते समय, बेसलाइन प्रोफ़ाइल जनरेशन और बेंचमार्किंग की सुविधा चालू करने के लिए,BaselineProfile
gradle प्लग इन प्रॉपर्टी के बदलावों को ठीक करें. (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)
frameCount
मेज़रमेंट कोFrameTimingMetric
में जोड़ा गया, ताकि उन स्थितियों का पता लगाया जा सके जहां मेज़रमेंट में बदलाव होने की वजह से, रेंडर होने वाले फ़्रेम की संख्या बदल गई है (नए ऐनिमेशन जोड़े गए, अमान्य होने से जुड़ी समस्याएं ठीक की गईं). (I1e5aa)- यह बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर,
frameOverrunMs
ट्रैकिंग के लिए सबसे सही मेट्रिक है. साथ ही, इसकी वजह भी बताई गई है. (I18749, b/329478323)
वर्शन 1.3.0-alpha02
20 मार्च, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये कमिट शामिल हैं.
नई सुविधाएं
एम्बेड किए गए ProGuard नियमों की मदद से, माइक्रो-बेंच में R8 का प्रयोगात्मक वर्शन. ध्यान दें कि यह सुविधा अभी एक्सपेरिमेंट के तौर पर उपलब्ध है. लाइब्रेरी मॉड्यूल की जांच को छोटा करने के लिए, AGP 8.3 की ज़रूरत होती है. अपने बेंचमार्क मॉड्यूल के
build.gradle
में R8 को छोटा करने/ऑप्टिमाइज़ करने की सुविधा चालू करने के लिए, यहां दिए गए निर्देशों का पालन करें. इससे, वर्कलोड के हिसाब से परफ़ॉर्मेंस में काफ़ी बढ़ोतरी हो सकती है. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
गड़बड़ियां ठीक की गईं
- माइक्रो-बेंच आउटपुट से अलग लाइन में, मेथड ट्रैकिंग की चेतावनी को ठीक करता है. (I0455c, b/328308833)
वर्शन 1.3.0-alpha01
21 फ़रवरी, 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
रिलीज़ हो गया है. 1.3.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में बदलाव
MicrobenchmarkConfig
बूलियन पैरामीटर का नाम बदला गया, ताकि '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)
गड़बड़ियां ठीक की गईं
- मैनेज किया जा रहा डिवाइस मौजूद न होने पर, बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन में गड़बड़ी के मैसेज को बेहतर बनाया गया (आइडिया2b, b/313803289)
- AGP 8.3.0-alpha15 से पहले, AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइलों को शामिल करने से जुड़ी समस्या को ठीक किया गया (I1d2af, b/313992099)
- जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल के आउटपुट यूआरएल को ठीक किया गया (I802e5, b/313976958)
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
को ठीक करने के लिए, डेटा सोर्स के टाइम आउट में बदलाव किया गया (I8dc7d, b/323601788)ProfileInstaller
1.3 के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय क्रैश से बचने के लिए, शेडर ड्रॉपिंग के व्यवहार को बदलने के लिए दो इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ें:androidx.benchmark.dropShaders.enable=true/false
: इसका इस्तेमाल, शेडर ड्रॉप करने की प्रोसेस को स्किप करने के लिए किया जा सकता है. इसमें,StartupMode.Cold
के लॉन्च में किया गया शेडिंग भी शामिल है. खास तौर पर, ऐसा तब होगा, जब स्टैंडर्ड ऐप्लिकेशन, प्रोफ़ाइलइंस्टॉलर 1.3 का इस्तेमाल न करते होंandroidx.benchmark.dropShaders.throwOnFailure=true/false
: इसका इस्तेमाल, शेडर को ड्रॉप करने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है. उदाहरण के लिए, 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
का इस्तेमाल करें. इससे,StartupMode.COLD
के उन मानदंडों को ठीक किया जाता है जो "कोल्ड स्टार्ट से पहले, पैकेज $package नहीं चलना चाहिए!" की वजह से क्रैश हो जाते हैं. ऐसा इसलिए होता है, क्योंकि प्रोसेस को पूरी तरह से बंद नहीं किया जा पाता. (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)
- AS टेस्ट रन इंटिग्रेशन के साथ काम करने वाली प्रॉपर्टी (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
के साथ इस्तेमाल करने पर, टाइमिंग पर काफ़ी असर पड़ेगा. इसकी वजह यह है कि ऐप्लिकेशन के शुरू होने के दौरान, ट्रैकिंग लाइब्रेरी लोड और चालू होती है.
- पुष्टि करने के लिए,
ज़रूरी शर्तें
- मैक्रोबेंचमार्क को टारगेट ऐप्लिकेशन में
ProfileInstaller
1.3.0 या इसके बाद के वर्शन की ज़रूरत होती है. इससे प्रोफ़ाइल कैप्चर / रीसेट करने और शेडर कैश मेमोरी को मिटाने की सुविधा चालू हो जाती है.
- मैक्रोबेंचमार्क को टारगेट ऐप्लिकेशन में
एक्सपेरिमेंट के तौर पर उपलब्ध नए मेट्रिक एपीआई
- एक्सपेरिमेंट के तौर पर
TraceSectionMetric
जोड़ा गया है. इसकी मदद से, अपने ऐप्लिकेशन मेंtrace("") {}
ब्लॉक या PerfettoTraceProcessor
की क्वेरी की पूरी क्षमता का फ़ायदा पाने के लिए, TraceMetric से आसानी से टाइमिंग निकाली जा सकती है. - पावर खर्च की जानकारी कैप्चर करने के लिए, एक्सपेरिमेंटल
PowerMetric
जोड़ा गया - पेज में गड़बड़ियों की गिनती करने के लिए, प्रयोग के तौर पर
MemoryCountersMetric
जोड़ा गया - एक्सपेरिमेंट के तौर पर उपलब्ध
PerfettoTraceProcessor
एपीआई जोड़ा गया. इसे अंदरूनी तौर पर इस्तेमाल करके, सिस्टम ट्रेस यानी Perfetto ट्रेस से मेट्रिक निकाली जाती हैं
- एक्सपेरिमेंट के तौर पर
समाधान
- एक से ज़्यादा APK (जैसे, ऐप्लिकेशन बंडल) से इंस्टॉल किए गए ऐप्लिकेशन से प्रोफ़ाइलें इंस्टॉल या निकालते समय क्रैश होने की समस्या को ठीक किया गया.
FrameTimingMetric
को ठीक किया गया, जो अलग-अलग फ़्रेम आईडी वाले फ़्रेम को अनदेखा करता है. आम तौर पर, एपीआई 31 और उसके बाद के वर्शन पर रिपल के दौरान फ़्रेम (I747d2, b/279088460)- 64 एमबी से ज़्यादा के ट्रैस को पार्स करने से जुड़ी गड़बड़ियां ठीक की गईं (Ief831, b/269949822)
- जब डिवाइस (खास तौर पर एम्युलेटर) वाली ओएस इमेज को ट्रेस करने या कंपाइल करने के लिए, सही तरीके से कॉन्फ़िगर नहीं किया गया हो, तो गड़बड़ियों के बारे में साफ़ तौर पर जानकारी देना
- बैटरी के बिना काम करने वाले डिवाइसों (माइक्रो और मैक्रो) के लिए, बैटरी लेवल की जांच को छोड़ना
- अमान्य आउटपुट डायरेक्ट्री के लिए ज़्यादा साफ़ तौर पर गड़बड़ियों की जानकारी देने के साथ-साथ, फ़ाइल आउटपुट को बेहतर बनाया गया है. साथ ही, डिफ़ॉल्ट तौर पर सुरक्षित सेटिंग भी जोड़ी गई हैं
- शेडर कैश मेमोरी को लगातार छोड़कर,
StartupMode.COLD
की स्थिरता को बेहतर किया गया है (MacrobenchmarkScope.dropShaderCache
के ज़रिए भी एक्सपोज़ किया गया है) startActivityAndWait
के लिए, लीनबैक फ़ॉलबैक को ठीक किया गया.
माइक्रोबेंचमार्क
- सुविधाएं
- अन्य मेट्रिक के बाद, प्रोफ़ाइलिंग को एक अलग चरण में ले जाया गया था. इसलिए, एक टेस्ट रन से, प्रोफ़ाइलिंग के नतीजों और सटीक समय, दोनों को दिखाया जा सकता है.
- प्रयोग के लिए एपीआई
- कस्टम मेट्रिक तय करने के साथ-साथ, ट्रेसिंग और प्रोफ़ाइलिंग कॉन्फ़िगर करने के लिए, एक्सपेरिमेंटल
MicrobenchmarkConfig
एपीआई जोड़ा गया. इसका इस्तेमाल, मेथड ट्रेस या ट्रेसपॉइंट कैप्चर करने के लिए किया जा सकता है. हालांकि, ट्रेसिंग के ओवरहेड से सावधान रहें. BenchmarkState
कोBenchmarkRule
से अलग, JUnit के बिना, को कंट्रोल करने के लिए एक्सपेरिमेंटल एपीआई जोड़े गए- 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+ पर मैक्रोबेंचमार्क NOT-PROFILEABLE गड़बड़ी को हटाया गया. साथ ही, eng/userdebug से रूट किए गए डिवाइसों पर, प्रोफ़ाइल की जांच को स्किप करें. (I2abac, b/291722507)
- Dex लेआउट ऑप्टिमाइज़ेशन का इस्तेमाल करते समय, स्टार्टअप प्रोफ़ाइल के नियमों को अब बेसलाइन प्रोफ़ाइल के नियमों के तौर पर भी माना जाता है. (aosp/2684246, b/293889189)
वर्शन 1.2.0-beta02
26 जुलाई, 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
रिलीज़ हो गया है. 1.2.0-beta02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- माइक्रो-बेंच की कस्टम मेट्रिक और कॉन्फ़िगरेशन (जैसे, प्रोफ़ाइलर और ट्रैकिंग) के लिए, एक्सपेरिमेंट के तौर पर एपीआई जोड़े गए. (I86101, b/291820856)
गड़बड़ियां ठीक की गईं
- जब ओएस को ट्रैकिंग के लिए गलत तरीके से कॉन्फ़िगर किया गया हो, तो 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 में ये कमियां हैं.
नई सुविधाएं
- नया बेसलाइन प्रोफ़ाइल ग्रडल प्लग इन, अल्फा वर्शन में रिलीज़ किया गया है. इससे बेसलाइन प्रोफ़ाइल जनरेट करना और डेवलपर वर्कफ़्लो को आसान बनाना आसान हो जाता है.
एपीआई में हुए बदलाव
- एपीआई 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 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सभी बेंचमार्क / बेसलाइन प्रोफ़ाइल जनरेशन को बंद करने के लिए,
androidx.benchmark.enabledRules
इंस्ट्रूमेंटेशन आर्ग्युमेंट मेंNone
पास करने की सुविधा चालू की गई. (I3d7fd, b/258671856) - ऐप्लिकेशन मॉड्यूल (जैसे, ऐसे APK जिनमें अपने-आप जांच करने की सुविधा नहीं है) में
PerfettoTrace
कैप्चर करने की समस्या को ठीक करना (I12cfc) - Studio के आउटपुट में, बेसलाइन प्रोफ़ाइल adb pull आर्ग्युमेंट का क्रम ठीक किया गया (I958d1, b/261781624)
- आर्म एम्युलेटर एपीआई 33 की अब सही तरह से पहचान हो गई है, जैसे कि मैक्रोबेंचमार्क चलाने की कोशिश करते समय और यह चेतावनी को सही तरीके से प्रिंट करेगा. (69133b,b/262209591)
- Macrobenchmark में, बैटरी के बिना काम करने वाले डिवाइसों पर बैटरी लेवल की जांच को छोड़ना (fe4114, b/232448937)
वर्शन 1.2.0-alpha08
7 दिसंबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
रिलीज़ हो गया है. 1.2.0-alpha08 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टेस्ट के हिस्से के तौर पर Perfetto ट्रेस (जिन्हें सिस्टम ट्रेस भी कहा जाता है) कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर नए एपीआई
PerfettoTrace.record {}
औरPerfettoTraceRule
जोड़े गए हैं. इससे, टेस्ट के काम करने के तरीके और परफ़ॉर्मेंस की जांच की जा सकती है. (I3ba16) BaselineProfileRule
अब पैकेज के प्रीफ़िक्स की सूची के बजाय, फ़िल्टर प्रेडिकेट स्वीकार करता है. इससे फ़िल्टर को जांच का पूरा कंट्रोल मिलता है. (I93240)- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई
BaselineProfileRule.collectStableBaselineProfile
जोड़ें. यह तब तक इंतज़ार करता है, जब तक कोई बेसलाइन प्रोफ़ाइल N बार दोहराए जाने तक स्थिर न हो जाए. (I923f3) BaselineProfileRule
का इस्तेमाल करके बेसलाइन प्रोफ़ाइल जनरेट करते समय, आउटपुट फ़ाइल के नाम का प्रीफ़िक्स तय करने की सुविधा जोड़ें. (I7b59f, b/260318655)
गड़बड़ियां ठीक की गईं
- आउटपुट राइटिंग को ज़्यादा सुरक्षित बनाएं. ऐसा करने से, आउटपुट फ़ाइलों को चुपचाप लिखे या जोड़े जाने से रोका जा सकता है. ऐसा खास तौर पर, एपीआई 21/22 के दौरान किया जा सकता है. (If8c44, b/227510293)
- फ़ाइल को सही तरीके से बनाने और उसे सही जगह पर रखने के लिए,
simpleperf
ट्रेस आउटपुट ठीक करें. इससे आम तौर पर उन समस्याओं को भी ठीक किया जा सकता है जहां किसी फ़ाइल को ग्रेडल से नहीं खींचा जा सका. (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 को सेल्फ़-इंस्ट्रुमेंटिंग के तौर पर सेट अप नहीं किया गया है, तो गड़बड़ी जोड़ें. इस गड़बड़ी की वजह से, टारगेट किए गए ऐप्लिकेशन की प्रोसेस में मैक्रोबेंचमार्किंग नहीं की जा सकती. प्रोसेस के दौरान, मैक्रोबेंच, ऐप्लिकेशन को कंपाइल/किल/कोल्ड नहीं कर पाएगा या अपनी अनुमतियों को कंट्रोल नहीं कर पाएगा (I4279b)
measureRepeated()
में उस समस्या को ठीक किया गया है जिसकी वजह सेsetupBlock
के बाद,StartupMode.COLD
टारगेट प्रोसेस को बंद नहीं करेगा. अबsetupBlock
के ऐप्लिकेशन के साथ इंटरैक्ट करने से, ऐप्लिकेशन की प्रोसेस नहीं रुकेगी और कोल्ड स्टार्ट का अमान्य मेज़रमेंट नहीं होगा. (I8ebb7)
वर्शन 1.2.0-alpha06
24 अक्टूबर, 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
रिलीज़ हो गया है. 1.2.0-alpha06 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
BaselineProfileRule
को अब Android 13 (एपीआई 33) पर रूट करने की ज़रूरत नहीं है. साथ ही, अब यह एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Ie0a7d, b/250083467, b/253094958)- इस बदलाव से, बिना रूट किए गए डिवाइसों पर, किसी ऐप्लिकेशन की प्रोफ़ाइलों को डिस्क पर फ़्लश करने का तरीका भी ठीक हो जाता है. हालांकि, इसके लिए टारगेट ऐप्लिकेशन के 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 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- मानदंड कैप्चर किए गए ट्रेस (I3f3ae, b/239677443) के लिए, Studio के सिस्टम ट्रेस व्यूअर में फ़्रेम के ब्रेकडाउन की समस्या ठीक करना
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 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- नया ट्रेसिंग-परफ़ेटो-कॉमन कॉम्पोनेंट, टूलिंग की मदद से इसे दिखाने वाले ऐप्लिकेशन में 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)
गड़बड़ियां ठीक की गईं
- बिना रूट किए गए बिल्ड पर, हर मैक्रोबेंचमार्क के बीच कंपाइल किए गए तरीके सही तरीके से रीसेट नहीं हो रहे थे. इस समस्या को ठीक कर दिया गया है. हमें खेद है कि इसके लिए हर बार एपीके को फिर से इंस्टॉल करना पड़ेगा, जिससे हर मैक्रोबेंचमार्क का ऐप्लिकेशन डेटा मिट जाएगा. (I31c74, b/230665435)
- एपीआई 21/22 पर, ट्रेस रिकॉर्डिंग क्रैश होने की समस्या को ठीक करना (If7fd6, b/227509388, b/227510293, b/227512788)
- स्टार्टअप मैक्रोबेंचमार्क में 'कोई भी मेट्रिक नहीं पढ़ी जा सकी' अपवाद को ठीक करने के लिए, गतिविधि लॉन्च होने की जानकारी का पता लगाने की सुविधा को बेहतर बनाया गया है. (Ia517c)
वर्शन 1.1.1
वर्शन 1.1.1
9 नवंबर, 2022
androidx.benchmark:benchmark-*:1.1.1
रिलीज़ हो गया है. 1.1.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
android.system.ErrnoException: open failed: EACCES
से जुड़ी समस्या को ठीक करता है, जो 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)सैंपल की प्रोफ़ाइल को
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
के बेसलाइन प्रोफ़ाइल आर्ग को enum पर स्विच किया गया. (Id67ea)
वर्शन 1.1.0-alpha13
15 दिसंबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
रिलीज़ हो गया है. 1.1.0-alpha13 वर्शन में ये बदलाव शामिल हैं.
एपीआई में बदलाव
- Android Q (एपीआई 29 और उसके बाद के वर्शन) पर, माइक्रो-बेंच के आउटपुट में कम ओवरहेड सिस्टम ट्रैकिंग जोड़ें. ध्यान दें कि फ़िलहाल, यह नतीजों पर असर डालने से बचने के लिए,
android.os.Trace
याandroidx.tracing
Jetpack API के ज़रिए कस्टम ट्रैकिंग कैप्चर नहीं करता. यह ट्रैकिंग, अस्थिरता का पता लगाने में मददगार हो सकती है. खास तौर पर, बेंचमार्क के बाहर के सोर्स से. (I298be, b/205636583, b/145598917) CompilationModes
को तीन क्लास में बांटें - पूरा, कोई नहीं, कुछ हिस्सा. पहले, कंपाइलेशन आर्ग्युमेंट (जिन्हें अब हम लागू करने की जानकारी के तौर पर देखते हैं) और सुविधाओं के हिसाब से, इनका नाम अलग-अलग रखा जाता था. इससे, प्लैटफ़ॉर्म के सभी वर्शन में, बदलावों के असर, संभावित कॉम्बिनेशन, और व्यवहार के बारे में ज़्यादा साफ़ तौर पर पता चलता है. (I3d7bf, b/207132597)- सेटअप और मेज़रमेंट, अब हमेशा एक साथ और क्रम में होते हैं. अब पैकेज के नाम और इंटेशन के बारे में क्वेरी की जा सकती है. हालांकि, कुछ मामलों में वॉर्मअप के दौरान इंटेशन
null
हो सकता है. (Id3b68, b/208357448, b/208369635)
गड़बड़ियां ठीक की गईं
CompilationMode.Speed
कोNone
के तौर पर गलत तरीके से इस्तेमाल करने की समस्या को ठीक किया गया (I01137)
वर्शन 1.1.0-alpha12
17 नवंबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
रिलीज़ हो गया है. 1.1.0-alpha12 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- कस्टम ट्रैक पर आधारित समय मेज़रमेंट के लिए, एक्सपेरिमेंटल TraceSectionMetric जोड़ें. (I99db1, b/204572664)
गड़बड़ियां ठीक की गईं
- हर बार डिवाइस को चालू करें, ताकि यह पक्का किया जा सके कि यूज़र इंटरफ़ेस की जांच की जा सके - इसके लिए, लॉकस्क्रीन की सुविधा बंद होनी चाहिए. (Ibfa28, b/180963442)
- एम्युलेटर और रूट न किए गए डिवाइसों (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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एपीआई 23 पर वापस काम करने के लिए, Backport StartupTiming Metrics. इस नए तरीके से, reportFullyDrawn() को बेहतर तरीके से मैनेज किया जाता है, ताकि संबंधित कॉन्टेंट रेंडर होने तक इंतज़ार किया जा सके. (If3ac9, b/183129298)
- Java कॉलर के लिए, कई MacrobenchmarkScope के तरीकों में JvmOverloads जोड़े गए. (I644fe, b/184546459)
- MacrobenchmarkRule.measureRepeated फ़ंक्शन का विकल्प दें, जो Java भाषा में, आइडिओमैटिक इस्तेमाल के लिए
Consumer<MacrobenchmarkScope>
का इस्तेमाल करता है. (If74ab, b/184546459)
गड़बड़ियां ठीक की गईं
- ट्रेस जल्दी शुरू न होने और मेट्रिक डेटा मौजूद न होने की समस्या को ठीक करना. इससे "बेंचमार्क के दौरान किसी भी मेट्रिक को पढ़ने में असमर्थ" अपवाद को ठीक करने की उम्मीद की जाती है. ये अपवाद, लाइब्रेरी की वजह से होते हैं. (I6dfcb, b/193827052, b/200302931)
- फ़्रेम नेगेटिव के बारे में बताने के लिए, इसका नाम बदलकर FrameOverRun कर दिया गया है. इससे यह पता चलता है कि फ़्रेम अपने तय बजट में कितना खर्च हुआ. (I6c2aa, b/203008701)
वर्शन 1.1.0-alpha09
13 अक्टूबर, 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
रिलीज़ हो गया है. 1.1.0-alpha09 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एपीआई 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
के ज़रिए लॉन्च शुरू करने के लिए, startActivityAnd पाते पर स्विच किया गया. इससे, हर बार मेज़रमेंट की प्रोसेस का समय करीब पांच सेकंड कम हो गया. इसके अलावा, इंटेंट पार्सल की सुविधा बंद हो गई. (I5a6f5, b/192009149
गड़बड़ियां ठीक की गईं
- थर्मल थ्रॉटल का पता लगाने की क्षमता को कम करें और अगर थ्रॉटल का बार-बार पता चलता है, तो बेसलाइन का फिर से पता लगाएं. (I7327b)
- Android S बीटा वर्शन पर काम करने के लिए, FrameTimingMetric को ठीक किया गया (Ib60cc, b/193260119)
- टारगेट किए गए ऐप्लिकेशन को बंद स्थिति से बाहर लाने के लिए,
EmptyActivity
का इस्तेमाल करें. इससेCompilationMode.BaselineProfile
को बेहतर तरीके से सपोर्ट किया जा सकता है. (Id7cac, b/192084204) - प्लैटफ़ॉर्म स्टैंडर्ड से मिलान करने के लिए, ट्रेस फ़ाइल एक्सटेंशन को
.perfetto-trace
में बदला गया. (I4c236, b/174663039) - StartupTimingMetric, आपके ऐप्लिकेशन की रेंडरिंग पूरी होने में लगने वाले समय को मापने के लिए "fulldranMs" मेट्रिक का आउटपुट देती है. अपने ऐप्लिकेशन के लिए इस मेट्रिक को तय करने के लिए, जब आपका शुरुआती कॉन्टेंट तैयार हो, तब 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 कैनरी और 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 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- मानदंड में सिसट्रेस ट्रेसिंग जोड़ी गई
गड़बड़ियां ठीक की गईं
- मेट्रिक में होने वाली अस्थिरता की समस्या को ठीक किया गया. इस समस्या की वजह से, प्राथमिकता हटाने की वजह से, 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
अब सही तरीके से सार्वजनिक है. प्रयोग के तौर पर इस्तेमाल किए जा रहे BudgetState#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
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट, यहां उपलब्ध हैं.