माइक्रोबैंचमार्क की पहचान करें

डिफ़ॉल्ट रूप से, माइक्रोबेंचमार्क आपको, चलाए गए कोड के समय और ऐलोकेशन के बारे में जानकारी देते हैं. अगर आपको यह पता लगाना है कि मेज़र किया गया कोड धीरे क्यों चल रहा है, तो अटैच किए गए सीपीयू प्रोफ़ाइलर के साथ मानदंड चलाए जा सकते हैं.

प्रोफ़ाइलर कॉन्फ़िगरेशन चुनने के लिए, इंस्ट्रुमेंटेशन रननर आर्ग्युमेंट androidx.benchmark.profiling.mode को MethodTracing, StackSampling या None आर्ग्युमेंट में से किसी एक के साथ जोड़ें, जैसा कि नीचे दिए गए स्निपेट में दिखाया गया है.

विकल्पों के बारे में ज़्यादा जानकारी के लिए, रिकॉर्डिंग कॉन्फ़िगरेशन चुनें पर जाएं. MethodTracing, "Java के तरीकों को ट्रैक करें" के बराबर है और StackSampling, उस दस्तावेज़ में बताए गए "Java के सैंपल तरीके" के बराबर है.

ग्रूवी

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 में सीपीयू प्रोफ़ाइलर में प्रोफ़ाइलिंग के नतीजों की जांच करने के लिए, फ़ाइल > खोलें को चुनें. ट्रेस को पढ़ने और समझने के बारे में ज़्यादा जानने के लिए, ट्रेस की जांच करना लेख पढ़ें.

MethodTracing

मेथड ट्रेसिंग तब काम आती है, जब आप अपने कोड को ऑप्टिमाइज़ करने की कोशिश करते हैं. इससे आपको उन तरीकों को पहचानने में मदद मिल सकती है जिन्हें दूसरे तरीकों के मुकाबले ज़्यादा समय लगता है. इसके बाद, उन तरीकों को ऑप्टिमाइज़ करने पर ध्यान दिया जा सकता है जो परफ़ॉर्मेंस पर सबसे ज़्यादा असर डालते हैं.

कोड मेज़रमेंट के बाद, प्रोफ़ाइलिंग क्रम से होती है. इसलिए, आपका टेस्ट सटीक समय और प्रोफ़ाइलिंग के नतीजे, दोनों दिखाता है.

StackSampling

सैंपल ट्रैकिंग से, महंगे तरीकों की पहचान करने में भी मदद मिल सकती है. इसके लिए, आपको तरीकों को ट्रैक करने की परफ़ॉर्मेंस से जुड़ी समस्याओं का सामना नहीं करना पड़ेगा. हालांकि, अगर आपका ऐप्लिकेशन कॉल स्टैक कैप्चर होने के बाद किसी मेथड में जाता है और अगले कैप्चर से पहले मेथड से बाहर निकल जाता है, तो मेथड कॉल को लॉग नहीं किया जाता. कम लाइफ़ साइकल वाले तरीकों को सही तरीके से ट्रैक करने के लिए, सैंपल ट्रैकिंग के बजाय, तरीका ट्रैकिंग का इस्तेमाल करें.

स्टैक सैंपलिंग की मदद से, वॉर्मअप पूरा होने के बाद, बेंचमार्क सैंपल स्टैक को कॉल करते हैं. इंस्ट्रुमेंटेशन आर्ग्युमेंट का इस्तेमाल करके, सैंपल फ़्रीक्वेंसी और सैंपलिंग की अवधि को कंट्रोल किया जा सकता है.

Android 10 (एपीआई 29) और उसके बाद के वर्शन पर, स्टैक सैंपलिंग में Simpleperf का इस्तेमाल करके, ऐप्लिकेशन कॉलस्टैक का सैंपल लिया जाता है. इसमें C++ कोड भी शामिल है. Android 9 (एपीआई 28) और इससे पहले के वर्शन पर, यह स्टैक सैंपल कैप्चर करने के लिए Debug.startMethodTracingSampling का इस्तेमाल करता है.

इस प्रोफ़ाइलिंग मोड को कॉन्फ़िगर करने के लिए, कोई अन्य इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ें:

  • androidx.benchmark.profiling.sampleFrequency

    • हर सेकंड कैप्चर किए जाने वाले स्टैक सैंपल की संख्या.
    • आर्ग्युमेंट का टाइप: इंटेजर
    • डिफ़ॉल्ट रूप से, यह वैल्यू हर सेकंड 1,000 सैंपल पर सेट होती है.
  • androidx.benchmark.profiling.sampleDurationSeconds

    • बेंचमार्क की अवधि.
    • आर्ग्युमेंट का टाइप: इंटेजर
    • डिफ़ॉल्ट रूप से, यह 5 सेकंड पर सेट होता है.

कोई नहीं

यह आर्ग्युमेंट, प्रोफ़ाइलिंग फ़ाइल को कैप्चर नहीं करता. हालांकि, समय और ऐलोकेशन की जानकारी अब भी मेज़र की जाती है.