नीचे दिए गए इंस्ट्रूमेंटेशन आर्ग्युमेंट की मदद से, माइक्रोबेंचमार्क के व्यवहार को कॉन्फ़िगर करें. इन्हें Gradle कॉन्फ़िगरेशन में जोड़ा जा सकता है. इसके अलावा, कमांड लाइन से इंस्ट्रुमेंटेशन चलाते समय इन्हें सीधे तौर पर लागू किया जा सकता है. Android Studio और कमांड लाइन टेस्ट रन, दोनों के लिए इन
आर्ग्युमेंट को सेट करने के लिए, उन्हें testInstrumentationRunnerArguments
में जोड़ें:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
Android Studio से बेंचमार्क चलाते समय, इंस्ट्रुमेंटेशन के तर्क भी सेट अप किए जा सकते हैं. तर्क बदलने के लिए, यह तरीका अपनाएं:
- बदलाव करें पर क्लिक करके, रन कॉन्फ़िगरेशन में बदलाव करें. इसके बाद, वह कॉन्फ़िगरेशन चुनें जिसमें आपको बदलाव करना है.
पहली इमेज. रन कॉन्फ़िगरेशन में बदलाव करें. - इंस्ट्रुमेंटेशन के आर्ग्युमेंट फ़ील्ड के बगल में मौजूद
दूसरी इमेज. इंस्ट्रूमेंटेशन के तर्क में बदलाव करें.
पर क्लिक करके, इंस्ट्रुमेंटेशन के आर्ग्युमेंट में बदलाव करें.
तीसरी इमेज. इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ें.
पर क्लिक करें और ज़रूरी इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ें.
अगर आपको कमांड लाइन से बेंचमार्क चलाना है, तो -P
android.testInstrumentationRunnerArguments.[name of the argument]
का इस्तेमाल करें:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling
अगर आपको सीधे तौर पर किसी इंस्ट्रुमेंट कमांड को चालू करना है (ऐसा CI टेस्टिंग एनवायरमेंट में हो सकता है), तो -e
के साथ am instrument
को आर्ग्युमेंट पास करें:
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
सीआई में बेंचमार्क कॉन्फ़िगर करने के बारे में ज़्यादा जानकारी के लिए, सीआई में बेंचमार्किंग लेख पढ़ें
androidx.benchmark.cpuEventCounter.enable (experimental)
androidx.benchmark.cupEventCounter.events
में बताए गए सीपीयू इवेंट की संख्या गिनता है.
इसके लिए, रूट ऐक्सेस की ज़रूरत होती है.
- आर्ग्युमेंट का टाइप: बूलियन
- डिफ़ॉल्ट रूप से: false पर सेट होती है
androidx.benchmark.cpuEventCounter.events (experimental)
इससे यह तय होता है कि किस तरह के सीपीयू इवेंट की गिनती करनी है. इस आर्ग्युमेंट का इस्तेमाल करने के लिए, androidx.benchmark.cpuEventCounter.enable
को true
पर सेट करना होगा.
- आर्ग्युमेंट का टाइप: कॉमा लगाकर अलग की गई स्ट्रिंग की सूची
- उपलब्ध विकल्प:
Instructions
CPUCycles
L1DReferences
L1DMisses
BranchInstructions
BranchMisses
L1IReferences
L1IMisses
- डिफ़ॉल्ट रूप से:
Instructions
,CpuCycles
,BranchMisses
androidx.benchmark.dryRunMode.enable
इसकी मदद से, एक लूप में बेंचमार्क चलाए जा सकते हैं. इससे यह पुष्टि की जा सकती है कि वे ठीक से काम कर रहे हैं या नहीं.
इसका मतलब है कि:
- कॉन्फ़िगरेशन से जुड़ी गड़बड़ियों को लागू नहीं किया जाता. उदाहरण के लिए, एम्युलेटर पर नियमित रूप से सही होने की जांच को आसान बनाने के लिए
- बेंचमार्क सिर्फ़ एक लूप चलाता है. इसमें वार्मअप नहीं होता
- रनटाइम को कम करने के लिए, मेज़रमेंट और ट्रेस कैप्चर नहीं किए जाते
यह टेस्ट थ्रूपुट को ऑप्टिमाइज़ करता है. साथ ही, यह बिल्ड और मेज़रमेंट की सटीकता के बजाय, बेंचमार्क लॉजिक की पुष्टि करता है.
- आर्ग्युमेंट का टाइप: बूलियन
- डिफ़ॉल्ट रूप से यह इस पर सेट होता है:
false
androidx.benchmark.killExistingPerfettoRecordings
Benchmark, डिफ़ॉल्ट रूप से किसी भी मौजूदा Perfetto (सिस्टम ट्रेस) रिकॉर्डिंग को बंद कर देता है. ऐसा इसलिए किया जाता है, ताकि नई ट्रेसिंग शुरू करते समय कोई रुकावट न आए. इस सुविधा को बंद करने के लिए, false
पास करें.
- आर्ग्युमेंट का टाइप: बूलियन
- डिफ़ॉल्ट रूप से यह इस पर सेट होता है:
true
androidx.benchmark.output.enable
इससे बाहरी स्टोरेज में, नतीजे की JSON फ़ाइल लिखने की सुविधा चालू होती है.
- आर्ग्युमेंट का टाइप: बूलियन
- डिफ़ॉल्ट रूप से यह इस पर सेट होता है:
true
androidx.benchmark.profiling.mode
इस कुकी की मदद से, बेंचमार्क चलाते समय ट्रेस फ़ाइलें कैप्चर की जा सकती हैं. उपलब्ध विकल्पों के लिए, माइक्रोबेंचमार्क की प्रोफ़ाइल बनाना देखें.
ध्यान दें कि Android OS के कुछ वर्शन में, बाद के मेज़रमेंट पर असर डाले बिना, मेथड ट्रेसिंग की सुविधा काम नहीं करती. माइक्रोबेंचमार्क, इस समस्या को रोकने के लिए एक अपवाद दिखाता है. इसलिए, डिफ़ॉल्ट आर्ग्युमेंट का इस्तेमाल करके, सिर्फ़ तब मेथड ट्रेस कैप्चर करें, जब ऐसा करना सुरक्षित हो. समस्या #316174880 देखें.
- आर्ग्युमेंट का टाइप: स्ट्रिंग
- उपलब्ध विकल्प:
MethodTracing
StackSampling
None
- डिफ़ॉल्ट रूप से यह सेट होता है:
MethodTracing
का सुरक्षित वर्शन. यह सिर्फ़ तब मेथड ट्रेस कैप्चर करता है, जब डिवाइस मेज़रमेंट पर असर डाले बिना ऐसा कर सकता है.
androidx.benchmark.suppressErrors
यह कॉमा लगाकर अलग की गई गड़बड़ियों की ऐसी सूची स्वीकार करता है जिन्हें चेतावनियों में बदला जा सकता है.
- ऑर्ग्युमेंट का टाइप: स्ट्रिंग की सूची
- उपलब्ध विकल्प:
DEBUGGABLE
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- डिफ़ॉल्ट रूप से: खाली सूची
additionalTestOutputDir
यह कुकी कॉन्फ़िगर करती है कि डिवाइस पर, JSON फ़ॉर्मैट में बेंचमार्क रिपोर्ट और प्रोफ़ाइलिंग के नतीजे कहां सेव किए जाएं.
- आर्ग्युमेंट का टाइप: फ़ाइल पाथ स्ट्रिंग
- डिफ़ॉल्ट रूप से: टेस्ट APK की बाहरी डायरेक्ट्री
लिसनर
अगर बेंचमार्क के चलने के दौरान, बैकग्राउंड में कोई ऐसा काम होता है जो बेंचमार्क से जुड़ा नहीं है, तो आपको बेंचमार्क के नतीजे अलग-अलग मिल सकते हैं.
बेंचमार्किंग के दौरान बैकग्राउंड में होने वाले काम को बंद करने के लिए, listener
इंस्ट्रूमेंटेशन के तर्क के टाइप को androidx.benchmark.junit4.SideEffectRunListener
पर सेट करें.
- आर्ग्युमेंट का टाइप: स्ट्रिंग
- उपलब्ध विकल्प:
androidx.benchmark.junit4.SideEffectRunListener
- डिफ़ॉल्ट रूप से: तय नहीं किया गया
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- मैक्रोबेंचमार्क इंस्ट्रूमेंटेशन के तर्क
- माइक्रोबेंचमार्क की प्रोफ़ाइल बनाना
- बेसलाइन प्रोफ़ाइलें बनाना {:#creating-profile-rules}