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

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

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

मेथडट्रेसिंग

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

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

स्टैक सैंपलिंग

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

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

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

कोई दूसरा इंस्ट्रुमेंट जोड़कर, इस प्रोफ़ाइलिंग मोड को कॉन्फ़िगर किया जा सकता है तर्क:

  • androidx.benchmark.profiling.sampleFrequency

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

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

कोई नहीं

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