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

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

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

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

ग्रूवी

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

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

कोई नहीं

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