डिफ़ॉल्ट रूप से, माइक्रोबेंचमार्क से आपको कोड के एक्ज़ीक्यूट होने के समय और उसके लिए मेमोरी के बंटवारे के बारे में जानकारी मिलती है. अगर आपको यह जानना है कि मेज़र किया गया कोड धीरे-धीरे क्यों चल रहा है, तो मेथड ट्रेस की जांच करें. यह ओएस के साथ काम करने वाले वर्शन पर डिफ़ॉल्ट रूप से कैप्चर होता है. इसके अलावा, अन्य प्रोफ़ाइलिंग कॉन्फ़िगरेशन भी चुने जा सकते हैं.
प्रोफ़ाइलर कॉन्फ़िगरेशन चुनने के लिए, इंस्ट्रुमेंटेशन रनर आर्ग्युमेंट androidx.benchmark.profiling.mode जोड़ें. इसके साथ, MethodTracing (डिफ़ॉल्ट), StackSampling या None आर्ग्युमेंट में से कोई एक जोड़ें. यह तरीका, यहां दिए गए स्निपेट में दिखाया गया है.
विकल्पों के बारे में ज़्यादा जानने के लिए, Java/Kotlin के तरीके रिकॉर्ड करना लेख पढ़ें.
MethodTracing, ट्रेसिंग के बराबर है. साथ ही, StackSampling उस दस्तावेज़ में बताई गई सैंपलिंग के बराबर है.
शानदार
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
किसी बेंचमार्क की प्रोफ़ाइल बनाते समय, आउटपुट .trace फ़ाइल को होस्ट में कॉपी किया जाता है. यह फ़ाइल, JSON फ़ॉर्मैट में मिले नतीजों के साथ डायरेक्ट्री में मौजूद होती है. Android Studio में प्रोफ़ाइलिंग के नतीजों की जांच करने के लिए, माइक्रोबेंचमार्क के नतीजों में मौजूद Method Trace या Stack Sampling Trace लिंक को चुनें.
MethodTracing
मेथड ट्रेसिंग तब काम आती है, जब आपको अपने कोड को ऑप्टिमाइज़ करना हो. ऐसा इसलिए, क्योंकि इससे आपको उन तरीकों की पहचान करने में मदद मिल सकती है जिन्हें पूरा होने में दूसरों की तुलना में ज़्यादा समय लगता है. इसके बाद, उन तरीकों को ऑप्टिमाइज़ करने पर फ़ोकस किया जा सकता है जिनका परफ़ॉर्मेंस पर सबसे ज़्यादा असर पड़ता है.
कोड मेज़रमेंट के बाद, प्रोफ़ाइलिंग क्रम से होती है. इसलिए, आपके टेस्ट से समय और प्रोफ़ाइलिंग, दोनों के सटीक नतीजे मिलते हैं.
मेथड ट्रेसिंग की सुविधा डिफ़ॉल्ट रूप से चालू रहती है.
StackSampling
सैंपल ट्रेसिंग से, परफ़ॉर्मेंस पर असर डाले बिना महंगे तरीकों की पहचान करने में भी मदद मिल सकती है. हालांकि, अगर आपका ऐप्लिकेशन कॉल स्टैक कैप्चर होने के बाद किसी तरीके में शामिल होता है और अगले कैप्चर से पहले उस तरीके से बाहर निकल जाता है, तो उस तरीके के कॉल को लॉग नहीं किया जाता. कम समय तक चलने वाले तरीकों को सही तरीके से ट्रैक करने के लिए, सैंपल ट्रेसिंग के बजाय मेथड ट्रेसिंग का इस्तेमाल करें.
स्टैक सैंपलिंग की मदद से, वार्मअप की प्रोसेस पूरी होने के बाद, बेंचमार्क सैंपल कॉल स्टैक करता है. इंस्ट्रुमेंटेशन आर्ग्युमेंट का इस्तेमाल करके, सैंपलिंग के व्यवहार को कंट्रोल किया जा सकता है. जैसे, सैंपल फ़्रीक्वेंसी और सैंपलिंग की अवधि.
Android 10 (एपीआई 29) और इसके बाद के वर्शन पर, स्टैक सैंपलिंग के लिए Simpleperf का इस्तेमाल किया जाता है. इससे ऐप्लिकेशन के कॉलस्टैक को सैंपल किया जाता है. इसमें C++ कोड भी शामिल है. Android 9 (एपीआई 28) और इससे पहले के वर्शन पर, यह स्टैक सैंपल कैप्चर करने के लिए Debug.startMethodTracingSampling का इस्तेमाल करता है.
इस प्रोफ़ाइलिंग मोड को कॉन्फ़िगर करने के लिए, इंस्ट्रुमेंटेशन के अन्य आर्ग्युमेंट जोड़ें:
androidx.benchmark.profiling.sampleFrequency- हर सेकंड कैप्चर किए जाने वाले स्टैक सैंपल की संख्या.
- आर्ग्युमेंट का टाइप: पूर्णांक
- डिफ़ॉल्ट रूप से, हर सेकंड 1,000 सैंपल लिए जाते हैं.
androidx.benchmark.profiling.sampleDurationSeconds- बेंचमार्क के चलने की अवधि.
- आर्ग्युमेंट का टाइप: पूर्णांक
- डिफ़ॉल्ट रूप से, यह पांच सेकंड पर सेट होता है.
androidx.benchmark.profiling.skipWhenDurationRisksAnr- जब एएनआर की समस्या होने की संभावना होती है, तब यह मेथड ट्रेसिंग को स्किप कर देता है. आपको सीआई रन के लिए इसे चालू रखना चाहिए, क्योंकि लंबे सीआई रन के दौरान एएनआर की वजह से समस्याएं आ सकती हैं.
- आर्ग्युमेंट का टाइप: बूलियन
- डिफ़ॉल्ट रूप से
trueपर सेट होता है
कोई नहीं
इस आर्ग्युमेंट में, प्रोफ़ाइलिंग फ़ाइल कैप्चर नहीं की जाती. समय और बंटवारे के बारे में जानकारी अब भी मेज़र की जाती है.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक का टेक्स्ट दिखता है
- माइक्रोबेंचमार्क इंस्ट्रूमेंटेशन आर्ग्युमेंट
- लगातार इंटिग्रेशन में बेंचमार्क चलाना