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

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

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

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

Groovy

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

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

  • androidx.benchmark.profiling.sampleFrequency

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

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

कोई नहीं

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