माइक्रो-बेंचमार्क इंस्ट्रूमेंटेशन के आर्ग्युमेंट

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

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

Android Studio से बेंचमार्क चलाते समय, इंस्ट्रूमेंटेशन आर्ग्युमेंट भी सेट अप किए जा सकते हैं. आर्ग्युमेंट बदलने के लिए, यह तरीका अपनाएं:

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

अगर आपको कमांड लाइन से बेंचमार्क चलाना है, तो -P android.testInstrumentationRunnerArguments.[name of the argument] का इस्तेमाल करें:

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling

अगर सीधे तौर पर am instrument कमांड का इस्तेमाल किया जा रहा है (ऐसा सीआई के टेस्टिंग एनवायरमेंट में हो सकता है), तो -e के साथ am instrument को आर्ग्युमेंट पास करें:

adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

सीआई में मानदंडों को कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, सीआई में मानदंड तय करना देखें

additionalTestOutputDir

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

  • ऑर्ग्युमेंट का टाइप: फ़ाइल पाथ स्ट्रिंग
  • डिफ़ॉल्ट रूप से: टेस्ट APK की बाहरी डायरेक्ट्री

androidx.benchmark.dryRunMode.enable

इसकी मदद से, एक ही लूप में मानदंड चलाए जा सकते हैं, ताकि यह पुष्टि की जा सके कि वे सही तरीके से काम कर रहे हैं.

इसका मतलब है कि:

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

यह टेस्ट थ्रूपुट के लिए ऑप्टिमाइज़ करता है. साथ ही, बिल्ड और मेज़रमेंट के सटीक होने के बजाय, बेंचमार्क लॉजिक की पुष्टि करता है.

  • आर्ग्युमेंट का टाइप: बूलियन
  • डिफ़ॉल्ट रूप से: false

androidx.benchmark.iterations

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

  • आर्ग्युमेंट का टाइप: इंटेजर
  • डिफ़ॉल्ट रूप से: तय नहीं किया गया

androidx.benchmark.junit4.SideEffectRunListener

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

बेंचमार्किंग के दौरान बैकग्राउंड में होने वाले काम को बंद करने के लिए, listener इंस्ट्रूमेंटेशन आर्ग्युमेंट टाइप को androidx.benchmark.junit4.SideEffectRunListener पर सेट करें.

  • आर्ग्युमेंट का टाइप: स्ट्रिंग
  • उपलब्ध विकल्प:
    • androidx.benchmark.junit4.SideEffectRunListener
  • डिफ़ॉल्ट रूप से: तय नहीं किया गया

androidx.benchmark.output.enable

इससे नतीजे की JSON फ़ाइल को बाहरी स्टोरेज में सेव किया जा सकता है.

  • आर्ग्युमेंट का टाइप: बूलियन
  • डिफ़ॉल्ट रूप से: true

androidx.benchmark.profiling.mode

इससे, बेंचमार्क चलाते समय ट्रेस फ़ाइलें कैप्चर की जा सकती हैं. उपलब्ध विकल्पों के लिए, माइक्रोबेंचमार्क की प्रोफ़ाइल बनाएं देखें.

  • आर्ग्युमेंट का टाइप: स्ट्रिंग
  • उपलब्ध विकल्प:
    • MethodTracing
    • StackSampling
    • None
  • डिफ़ॉल्ट रूप से: None

androidx.benchmark.suppressErrors

गड़बड़ियों को चेतावनियों में बदलने के लिए, कॉमा लगाकर अलग की गई गड़बड़ियों की सूची स्वीकार करता है.

  • ऑर्ग्युमेंट का टाइप: स्ट्रिंग की सूची
  • उपलब्ध विकल्प:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • डिफ़ॉल्ट रूप से: खाली सूची

androidx.benchmark.startupMode.enable (अब काम नहीं करता)

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

  • आर्ग्युमेंट का टाइप: बूलियन
  • डिफ़ॉल्ट रूप से: false