मानदंड

Android Studio में अपने कोड की परफ़ॉर्मेंस को सही तरीके से मेज़र करें.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
30 अक्टूबर, 2024 1.3.3 - - 1.4.0-alpha04

डिपेंडेंसी का एलान करना

Benchmark पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की मेवन रिपॉज़िटरी पढ़ें.

Macrobenchmark

अपने प्रोजेक्ट में Macrobenchmark का इस्तेमाल करने के लिए, अपने macrobenchmark मॉड्यूल के लिए, build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:

ग्रूवी

dependencies {
  androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0"
}

Kotlin

dependencies {
  androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0")
}

माइक्रो-बेंचमार्क

अपने प्रोजेक्ट में माइक्रोबेंचमार्क का इस्तेमाल करने के लिए, अपने माइक्रोबेंचमार्क मॉड्यूल के लिए build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:

ग्रूवी

dependencies {
    androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0"
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Kotlin

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0")
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

माइक्रोबेंचमार्क लाइब्रेरी, आपके माइक्रोबेंचमार्क मॉड्यूल के साथ इस्तेमाल करने के लिए, एक Gradle प्लग इन भी उपलब्ध कराती है. यह प्लगिन मॉड्यूल के लिए बिल्ड कॉन्फ़िगरेशन डिफ़ॉल्ट सेट करता है, सेट अप करता है होस्ट के लिए बेंचमार्क आउटपुट कॉपी, और ./gradlew lockClocks टास्क.

प्लग इन का इस्तेमाल करने के लिए, अपने टॉप-लेवल में `प्लग इन` ब्लॉक में नीचे दी गई लाइन शामिल करें build.gradle फ़ाइल:

ग्रूवी

plugins {
  id 'androidx.benchmark' version '1.3.0' apply false
}

Kotlin

plugins {
  id("androidx.benchmark") version "1.3.0" apply false
}

इसके बाद, प्लगिन को अपने बेंचमार्क मॉड्यूल की build.gradle फ़ाइल पर लागू करें

ग्रूवी

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

सुझाव

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. कोई नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.

नई समस्या बनाना

ज़्यादा जानकारी के लिए, समस्या को ट्रैक करने वाले टूल से जुड़ा दस्तावेज़ देखें.

वर्शन 1.4

वर्शन 1.4.0-alpha04

30 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.4.0-alpha04 रिलीज़ हो गया है. वर्शन 1.4.0-alpha04 में ये कमिट शामिल हैं.

नई सुविधाएं

  • (प्रयोग के तौर पर) बेसलाइन प्रोफ़ाइल जनरेट करने की सुविधा चालू करें. साथ ही, दूसरे उपयोगकर्ता के लिए इंस्टॉल किए गए ऐप्लिकेशन पर बेंचमार्किंग की सुविधा चालू करें. उदाहरण के लिए, हेडलेस Android Auto डिवाइसों पर कोई भी ऐप्लिकेशन. इस सुविधा की जांच कुछ स्थितियों में की गई है. अगर यह आपके लिए काम नहीं करती है, तो हमें गड़बड़ी की जानकारी दें. (I9fcbe, b/356684617, b/373641155)

गड़बड़ियां ठीक की गईं

  • मानदंड बिल्ड में अब isProfileable को हमेशा बदल दिया जाता है. साथ ही, isDebuggable को भी अब मानदंड और nonMinified (बेसलाइन प्रोफ़ाइल कैप्चर) बिल्ड में हमेशा बदल दिया जाता है. (I487fa, b/369213505)
  • एपीआई 28 से पहले के कुछ फ़िज़िकल डिवाइसों पर, कंपाइलेशन का पता लगाने की सुविधा को ठीक किया गया है. इससे, json context.compilationMode के साथ-साथ androidx.benchmark.requireAot=true के व्यवहार पर भी असर पड़ता है. अब androidx.benchmark.requireAot=true गलत तरीके से नहीं दिखता (Ic3e08, b/374362482)
  • CpuEventCounter मेट्रिक में, अगर गलत मेज़रमेंट मिलते हैं, तो उसे फेंक दें (उदाहरण के लिए, निर्देश/cpucycles==0) (I8c503)

वर्शन 1.4.0-alpha03

16 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.4.0-alpha03 रिलीज़ हो गया है. वर्शन 1.4.0-alpha03 में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • Macrobenchmark: ArtMetric जोड़ता है. इसका इस्तेमाल, प्रोफ़ाइल कवरेज या Android RunTime की सामान्य परफ़ॉर्मेंस की जांच करने के लिए किया जा सकता है. इससे JIT, क्लास इनिट (जहां उपलब्ध हो), और क्लास की पुष्टि की संख्या और कुल समय की जानकारी मिलती है. इसके अलावा, CaptureInfo में बदलाव करके, डिफ़ॉल्ट के साथ वैकल्पिक ART मेनलाइन वर्शन शामिल किया गया है. (I930f7)
  • किसी दिए गए बेंचमार्क रन में स्थिरता दिखाने के लिए, बेंचमार्क JSON आउटपुट में coefficientOfVariation जोड़ें. (Ib14ea)

गड़बड़ियां ठीक की गईं

  • एवीडी डिवाइस में खाली जगह होने पर, CollectBaselineProfileTask गड़बड़ी को ठीक किया गया. (Ia0225, b/371642809)
  • StartupMode.COLD अपवादों में मौजूद गड़बड़ियों के लिए, अनुमान के हिसाब से सुधार: Package <packagename> must not be running prior to cold start!. अब, MacrobenchmarkScope.killProcess() (इसमें हर बार दोहराए जाने से पहले चलने वाला वह फ़ंक्शन भी शामिल है जिसका इस्तेमाल StartupMode.COLD के व्यवहार को लागू करने के लिए किया जाता है) यह पुष्टि करने के लिए इंतज़ार करेगा कि ऐप्लिकेशन की सभी प्रोसेस बंद हो गई हैं या नहीं. (I60aa6, b/351582215)
  • रूट किए गए कुछ एम्युलेटर पर UNLOCKED_ गड़बड़ी मिलने की समस्या को ठीक कर दिया गया है. (Ic5117)
  • यह लाइब्रेरी अब JSpecify nullness एनोटेशन का इस्तेमाल करती है, जो टाइप-इस्तेमाल के लिए हैं. सही इस्तेमाल लागू करने के लिए, Kotlin डेवलपर को इन कंपाइलर आर्ग्युमेंट का इस्तेमाल करना चाहिए: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I7104f, b/326456246)

वर्शन 1.4.0-alpha02

2 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.4.0-alpha02 रिलीज़ हो गया है. वर्शन 1.4.0-alpha02 में ये कमिट मौजूद हैं.

एपीआई में हुए बदलाव

  • Gradle टास्क lockClocks और unlockClocks को सबसे ऊपर के लेवल पर उपलब्ध होने के बजाय, बेंचमार्क प्रोजेक्ट पर ले जाया गया. यह बदलाव ज़रूरी था, क्योंकि प्रोजेक्ट को अलग-अलग रखने के बिना, इन्हें टॉप लेवल ऐक्शन के तौर पर रजिस्टर करने का कोई तरीका नहीं है. (I02b8f, b/363325823)

गड़बड़ियां ठीक की गईं

  • BaselineProfileRule अब प्रोफ़ाइलों को डंप करने के लिए, ब्लॉक के आखिर में हर प्रोसेस को सिग्नल भेजकर, एक से ज़्यादा प्रोसेस वाले ऐप्लिकेशन के लिए प्रोफ़ाइलें इकट्ठा करता है. अगर प्रोफ़ाइल के आधार पर बनाए गए कलेक्शन में, ब्रॉडकास्ट करने के लिए कोई प्रोसेस नहीं मिलती है, तो कलेक्शन पूरा नहीं होगा. ऐसा इसलिए, क्योंकि प्रोफ़ाइल में डेटा होना आम तौर पर नहीं होता. इसके अलावा, डंप के इंतज़ार में लगने वाले समय को कंट्रोल करने के लिए, एक इंस्ट्रुमेंटेशन आर्ग्युमेंट जोड़ा गया: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • बेंचमार्क 1.3.2 से: Firebase टेस्ट लैब (एफ़टीएल), Baseline Profile Gradle प्लग इन से Baseline Profile या Macrobenchmark की नतीजों वाली फ़ाइलें नहीं खींच पा रहा था. इस समस्या को ठीक कर दिया गया है. (I2f678, b/285187547)

FTL का इस्तेमाल करने के लिए, प्लग इन ब्लॉक में बेसलाइन प्रोफ़ाइल मॉड्यूल पर प्लग इन लागू करें. इसके लिए, इनका इस्तेमाल करें:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

और फिर Firebase टेस्ट लैब को इसके साथ कॉन्फ़िगर करें:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

साथ ही, बनाए गए FTL डिवाइस को बेसलाइन प्रोफ़ाइल एक्सटेंशन में जोड़ना होगा:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

वर्शन 1.4.0-alpha01

18 सितंबर, 2024

androidx.benchmark:benchmark-*:1.4.0-alpha01 रिलीज़ हो गया है. वर्शन 1.4.0-alpha01 में ये कमिट मौजूद हैं.

नई सुविधा - ऐप्लिकेशन शुरू करने के बारे में अहम जानकारी

  • ऐप्लिकेशन शुरू होने से जुड़ी अहम जानकारी के शुरुआती वर्शन को मैक्रोबेंचमार्क में चालू किया जा सकता है. (09fae38)

स्टार्टअप बेंचमार्क में चालू करने के लिए:

  @Test
  fun startup {
      macrobenchmarkRule.measureRepeated(
          …
          packageName = "com.example.my.application.id"
          metrics = listOf(StartupTimingMetric()),
          iterations = 5,
          startupMode = StartupMode.COLD,
          compilationMode = CompilationMode.None(),
          experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
          ) {
          scope.startActivityAndWait(...)
      }
  }

इसके बाद, स्टार्टअप बेंचमार्क चलाने पर, सामान्य समस्याओं का पता लगाने के लिए ट्रेस का विश्लेषण किया जाएगा.साथ ही, मेट्रिक के बाद उन्हें बेंचमार्क टैब में Studio टेस्ट आउटपुट में प्रिंट किया जाएगा. उदाहरण के लिए:

StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│   ├──   timeToFullDisplayMs                min  1,147.2,   median  1,208.8,   max  1,307.4
│   └──   timeToInitialDisplayMs             min  1,147.2,   median  1,208.8,   max  1,307.4
├── App Startup Insights
│   ├── App in debuggable mode (expected: false)
│   │   └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│   ├── Potential CPU contention with another process (expected: < 100000000ns)
│   │   └── seen in iterations: 4(105022546ns)
│   └── Main Thread - Binder transactions blocked (expected: false)
│       └── seen in iterations: 7(true)
└── Traces
    └── Iteration 0 1 2 3 4 5 6 7 8 9

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

नई सुविधाएं

  • प्रोफ़ाइल से जुड़ी सभी बेसलाइन चेतावनियां बंद करने के लिए, ग्रेडल प्रॉपर्टी androidx.baselineprofile.suppressWarnings जोड़ी गई है. (314153a)
  • माइक्रोबेंच मेट्रिक, अब Perfetto ट्रेस में काउंटर के तौर पर दिखती हैं. (3214854)
  • jit को बंद करने (इसके लिए रूट / रनटाइम रीस्टार्ट की ज़रूरत होती है) और डिवाइस की परफ़ॉर्मेंस/टेस्ट की स्थिति को रीसेट करने के लिए, एक्सपेरिमेंटल स्क्रिप्ट जोड़ें. फ़िलहाल, इन्हें Gradle टास्क के तौर पर पब्लिश नहीं किया जाता. (7c3732b)
  • एमुलेटर पर टेस्ट करते समय, उन्हें स्किप करने के लिए बेंचमार्क आर्ग्युमेंट जोड़ा गया. automaticGenerationDuring बिल्ड के चालू होने पर, मानदंड भी बेसलाइन प्रोफ़ाइल जनरेशन को ट्रिगर करेंगे. अगर एमुलेटर का इस्तेमाल किया जाता है, तो यह काम नहीं करेगा. नए आर्ग्युमेंट skipBenchmarksOnEmulator की मदद से, हम टेस्ट को स्किप कर सकते हैं. (0c2ddcd)
  • एपीआई 23 और उसके बाद के वर्शन पर चलने के लिए, परफ़ॉर्मेंस इवेंट चालू करने के लॉजिक में बदलाव करें (2550048)

एपीआई में हुए बदलाव

  • MacrobenchmarkRule.measureRepeated() के लिए मौजूदा एक्सपेरिमेंटल PerfettoConfig आर्ग्युमेंट को नए ExperimentalConfig ऑब्जेक्ट में ले जाया गया.

गड़बड़ियां ठीक की गईं

  • lockClocks.sh बार-बार कोशिश करने की संख्या बढ़ाएं (99e9dac)
  • अगर nonMinified और बेंचमार्क बिल्ड टाइप मौजूद हैं, तो उन्हें न बनाएं. एक गड़बड़ी की वजह से, nonMinified और बेंचमार्क के तौर पर इस्तेमाल होने वाले बिल्ड टाइप मौजूद होने के बावजूद, उन्हें फिर से बनाया जा रहा था. (e75f0a5)
  • TraceSectionMetric नतीजों में से, खत्म न होने वाली स्लाइस को अनदेखा करें. (a927d20)
  • sdk_ प्रीफ़िक्स को ध्यान में रखते हुए, बेहतर एमुलेटर जांच. (1587de8)
  • FrameTimingGfxInfoMetric में, चल नहीं रहे पैकेज को हटा दें. (35cc79c)
  • androidx.benchmark.cpuEventCounter को ठीक करें, जो निर्देश वाले इवेंट के लिए गलत वैल्यू दिखाता है. (06edd59)
  • मेट्रिक की प्राथमिकता के क्रम का पालन करने के लिए resumeTiming/runWithTimingDisabled को ठीक करें. साथ ही, प्राथमिकता में कम मेट्रिक के रोके जाने/फिर से शुरू किए जाने से, प्राथमिकता में ज़्यादा मेट्रिक के नतीजों पर पड़ने वाले असर को कम करें. उदाहरण के लिए, अगर cpuEventCounter.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट की मदद से सीपीयू परफ़ॉर्मेंस काउंटर का इस्तेमाल किया जा रहा है, तो रोकने/फिर से शुरू करने पर, timeNs काफ़ी कम नहीं होता. (5de0968)

वर्शन 1.3

वर्शन 1.3.3

16 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.3.3 रिलीज़ हो गया है. वर्शन 1.3.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • CollectBaselineProfileTask को ठीक किया गया, जब AVD डिवाइस में स्पेस हों (Ia0225, b/371642809)

वर्शन 1.3.2

2 अक्टूबर, 2024

androidx.benchmark:benchmark-*:1.3.2 रिलीज़ हो गया है. वर्शन 1.3.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • तय Firebase टेस्ट लैब (एफ़टीएल) में, बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन से बेसलाइन प्रोफ़ाइल या मैक्रोबेंचमार्क के नतीजे की फ़ाइलें शामिल नहीं हो पा रही हैं. (I2f678, b/285187547)

FTL का इस्तेमाल करने के लिए, प्लग इन ब्लॉक में बेसलाइन प्रोफ़ाइल मॉड्यूल पर प्लग इन लागू करें. इसके लिए, इनका इस्तेमाल करें:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

और फिर Firebase टेस्ट लैब को इसके साथ कॉन्फ़िगर करें:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

साथ ही, बनाए गए एफ़टीएल डिवाइस को बेसलाइन प्रोफ़ाइल एक्सटेंशन में जोड़ना होगा:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

वर्शन 1.3.1

18 सितंबर, 2024

androidx.benchmark:benchmark-*:1.3.1 रिलीज़ हो गया है. वर्शन 1.3.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • सभी बेसलाइन प्रोफ़ाइल की चेतावनियों को दबाने के लिए, Gradle प्रॉपर्टी androidx.baselineprofile.suppressWarnings जोड़ी गई (I7c36e, b/349646646)
  • अगर ऐप्लिकेशन ने पहले से मौजूद nonMinified… और benchmark… का इस्तेमाल किया है, तो रैपर बनाने के बजाय, पहले से मौजूद nonMinified… और benchmark… का इस्तेमाल करने के लिए, बेसलाइन प्रोफ़ाइल Gradle प्लग इन को ठीक किया गया. (Ia8934, b/361370179)
  • एम्युलेटर पर automaticGenerationDuringBuild चालू होने पर, java.lang.AssertionError: ERRORS (not suppressed): EMULATOR से जुड़ी समस्या को ठीक किया गया. इसके बजाय, जांच को छोड़ने के लिए नए आर्ग्युमेंट का इस्तेमाल किया जाता है. (If3f51, b/355515798)
  • माइक्रो-बेंचमार्क को छोटा करना - बेंचमार्क लाइब्रेरी proguard (Ic8ed5, b/354264743) में org.junit.runner.notification.RunListener के सबक्लास रखें
  • बंद न होने वाले स्लाइस को अनदेखा करने के लिए, TraceSectionMetric को ठीक करें. पहले, इनकी अवधि -1 मानी जाती थी. जैसे, कुल अवधि या कम से कम अवधि का पता लगाने के दौरान. (If74b7)
  • FrameTimingGfxInfoMetric में उस समस्या को ठीक किया गया है जिसकी वजह से प्रोसेस पहले से न चलने पर, मेट्रिक क्रैश हो जाती थी. (I6e412)

वर्शन 1.3.0

21 अगस्त, 2024

androidx.benchmark:benchmark-*:1.3.0 रिलीज़ हो गया है. वर्शन 1.3.0 में ये कमिट शामिल हैं.

1.2.0 के बाद माइक्रोबेंचमार्क में हुए बदलाव

  • ज़्यादातर डिवाइसों पर माइक्रोबेंचमार्क चलाने पर, मेथड ट्रैकिंग डिफ़ॉल्ट रूप से चालू रहती है
    • मेथड ट्रैकिंग, मेज़रमेंट के बाद एक अलग फ़ेज़ के तौर पर चलती है - इससे एक ही बेंचमार्क रन से सटीक मेज़रमेंट और मेथड ट्रैक, दोनों का आउटपुट मिलता है
    • कुछ Android OS और ART वर्शन पर मेथड ट्रैकिंग की सुविधा से, मेज़रमेंट के बाद के चरणों पर असर पड़ेगा. इन वर्शन पर, मेथड ट्रैकिंग की सुविधा डिफ़ॉल्ट रूप से बंद रहती है और Studio के आउटपुट में चेतावनी प्रिंट होती है
  • मुख्य थ्रेड के मानदंड और ANR
    • यूज़र इंटरफ़ेस (यूआई) थ्रेड के मानदंडों के लिए measureRepeatedOnMainThread जोड़ा गया है.जैसे, वे जो Compose/View यूआई के साथ इंटरैक्ट करते हैं. इससे, कई सेकंड तक चलने पर ANR से बचा जा सकता है.
    • अगर ANR से बचने की समयसीमा खत्म होने की संभावना है, तो तरीकों के ट्रैक छोड़ दिए जाते हैं. इस सुविधा को बंद करने के लिए, androidx.benchmark.profiling.skipWhenDurationRisksAnr को 'गलत है' पर सेट करें. हालांकि, सीआई रन के लिए इसका सुझाव नहीं दिया जाता, क्योंकि लंबे समय तक चलने वाले सीआई रन में एएनआर की वजह से समस्याएं आ सकती हैं.
  • छोटा करना
    • छोटा करने की सुविधा चालू होने पर, माइक्रोबेंचमार्किंग को बेहतर बनाने के लिए, ProGuard के नियमों को जोड़ा गया
    • लाइब्रेरी मॉड्यूल में छोटा करने/R8 का इस्तेमाल करने के लिए, AGP 8.3 होना ज़रूरी है. इसे अपने build.gradle में android.buildTypes.release.androidTest.enableMinification के ज़रिए चालू किया जा सकता है
    • प्रयोग के तौर पर BlackHole.consume() एपीआई जोड़ा गया, ताकि कोड को हटाया न जाए (If6812, b/286091643)
  • मेट्रिक
    • सीपीयू इवेंट काउंटर की एक्सपेरिमेंटल सुविधा (perf_event_open से मिली मेट्रिक, जिसके लिए प्लैटफ़ॉर्म के ज़्यादातर वर्शन पर रूट की ज़रूरत होती है). इसे InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (true पर सेट किया जा सकता है) से ऐक्सेस किया जा सकता है. साथ ही, androidx.benchmark.cpuEventCounter.events को उदाहरण के लिए (Instructions,CpuCycles) पर सेट किया जा सकता है. यह सुविधा, कुछ userdebug एमुलेटर पर काम करनी चाहिए. हालांकि, सभी उपलब्ध एमुलेटर पर इसकी जांच नहीं की गई है

MACRObenchmark में 1.2.0 के बाद किए गए बदलाव

  • मैक्रोबेंचमार्क के लिए, मेथड ट्रैकिंग में काफ़ी बदलाव किए गए हैं.
    • अब मेथड ट्रेस, measureBlock की अवधि तक के होते हैं. साथ ही, अगर प्रोसेस कई बार शुरू होती है, तो कई सेशन कैप्चर किए जा सकते हैं.
    • पहले, मेथड ट्रैकिंग सिर्फ़ StartupMode.COLD मानदंडों के लिए काम करती थी. साथ ही, measureBlocks के लिए कुछ भी कैप्चर नहीं करती थी, जो टारगेट प्रोसेस को फिर से शुरू नहीं करती थी
    • मैक्रोबेंचमार्क में, मेथड ट्रेस फ़्लश को ठीक किया गया, ताकि मेथड ट्रेस पूरी तरह से कैप्चर किए जा सकें और वे धीमे डिवाइसों पर भी मान्य हों. (I6349a, b/329904950)
  • प्रोसेस बंद होने पर, हर warmUp बार दोहराए जाने पर ART प्रोफ़ाइल को सही तरीके से डंप करें, ताकि CompilationMode.Partial(warmup=N) मेज़रमेंट ज़्यादा सटीक हों. (I17923)
  • ड्रॉप शेडर ब्रॉडकास्ट करने में हुई गड़बड़ी का मैसेज
    • शेडर ब्रॉडकास्ट में गड़बड़ी होने का मैसेज हटाने के लिए, डीबग करने के सुझाव जोड़े गए
    • ProfileInstaller 1.3 के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय क्रैश से बचने के लिए, शेडर ड्रॉपिंग के व्यवहार को बदलने के लिए दो इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ें:
      • androidx.benchmark.dropShaders.enable=true/false : इसका इस्तेमाल, सभी शेडर ड्रॉपिंग को स्किप करने के लिए किया जा सकता है. इसमें StartupMode.Cold लॉन्च में होने वाली शेडर ड्रॉपिंग भी शामिल है. खास तौर पर, उन ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय जिनमें अब तक profileinstaller 1.3 का इस्तेमाल नहीं किया गया है
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : शेडर को छोड़ने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है, उदाहरण के लिए जब प्रोफ़ाइलइंस्टॉलर 1.3 (I4f573) के बिना मानदंड वाले ऐप्लिकेशन
  • एक्सपेरिमेंट के तौर पर MacrobenchmarkRule#measureRepeated वैरिएंट जोड़ा गया है. यह वैरिएंट, Perfetto ट्रैक रिकॉर्डिंग को पूरी तरह से पसंद के मुताबिक बनाने के लिए, कस्टम PerfettoConfig लेता है. ध्यान दें कि गलत तरीके से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन की वजह से, हो सकता है कि बिल्ट-इन मेट्रिक क्लास की सुविधा काम न करे. (Idfd3d, b/309841164, b/304038384)
  • रुकावट को कम करने के लिए, मैक्रोबेंचमार्क चलाने से पहले, बैकग्राउंड में काम करने वाले डीक्सप्ट जॉब रद्द करें. (I989ed)
  • मैक्रोबेंचमार्क, अब टारगेट ऐप्लिकेशन को किसी ART प्रोफ़ाइल को फ़्लश करने के लिए 1 सेकंड तक इंतज़ार करता है (पहले इसे 500 मि॰से॰ के लिए इंतज़ार किया जाता था). (I85a50, b/316082056)
  • TraceSectionMetric में काफ़ी बदलाव किए गए हैं
    • ध्यान दें: TraceSectionMetric यहां बताए गए बदलावों से, सीआई के इस्तेमाल में आउटपुट पर असर पड़ सकता है. साथ ही, इनसे पार्सिंग में रुकावट आ सकती है या पार्सिंग पूरी नहीं हो सकती
    • अब 'योग' डिफ़ॉल्ट रूप से सेट है, क्योंकि इस मेट्रिक का ज़्यादातर इस्तेमाल बार-बार होने वाले इवेंट के लिए किया जाता है. साथ ही, इन मामलों में पहले डेटा को खारिज कर दिया जाएगा
    • इसे ज़्यादा पसंद के मुताबिक बनाने के लिए बदला गया है. साथ ही, इसमें ज़्यादा मोड उपलब्ध हैं
    • मोड के नाम अब मेट्रिक आउटपुट के नाम में एम्बेड किए गए हैं (Studio और JSON में)
    • अब Trace.{begin|end}AsyncSection का इस्तेमाल करके बनाए गए स्लाइस भी काम करते हैं.
  • मेट्रिक
    • पावर - PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge(), और PowerMetric.deviceSupportsPowerEnergy() को जोड़ा गया
    • रिटर्न टाइप से मैच करने के लिए, Metric.getResult का नाम बदलकर getMeasurements किया गया
    • स्टार्टअप की पहचान करने में हुई सभी गड़बड़ियों के लिए, log.w / अपवाद लेबल जोड़े गए हैं. इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. इसलिए, कुछ गड़बड़ियां दिखती हैं और कुछ चुपचाप स्टार्टअप का पता नहीं लगा पाती हैं. हालांकि, इससे गड़बड़ियों को समझना आसान हो जाता है. आम तौर पर, ऐसे इवेंट जो Log.w() करते हैं और स्टार्टअप मेट्रिक को रिपोर्ट नहीं कर पाते, वे हैं जिनमें बिना फ़्रेम वाले इवेंट मौजूद नहीं होते. हालांकि, स्टार्टअप का पता चलने पर अपवाद दिखाए जाते हैं. इनमें फ़्रेम टाइमिंग की जानकारी (यूआई/आरटी स्लाइस से) शामिल नहीं होती. (Id240f, b/329145809)
    • FrameTimingMetric में frameCount मेज़रमेंट जोड़ा गया है. इससे उन स्थितियों का पता लगाने में मदद मिलेगी जहां मेज़रमेंट में बदलाव होता है, क्योंकि जनरेट किए गए फ़्रेम की संख्या में बदलाव होता है. इसके लिए, नए ऐनिमेशन जोड़े गए हैं और अमान्य होने की समस्याएं ठीक की गई हैं. (I1e5aa)
    • यह बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर, frameOverrunMs ट्रैकिंग के लिए सबसे सही मेट्रिक है. साथ ही, इसकी वजह भी बताई गई है. (I18749, b/329478323)
    • उस समस्या को ठीक करता है जिससे ट्रेस की शुरुआत और आखिर में, खत्म नहीं होने वाले फ़्रेम को एक साथ जोड़ा जा सकता है. इससे गलती से बहुत लंबे फ़्रेम के तौर पर रिपोर्ट बन सकती है. (I39353, b/322232828)
    • फ़्रेम न बनने पर FrameTimingMetric गड़बड़ी को बेहतर बनाएं. साथ ही, समस्या का पता लगाने में मदद करने के लिए, मेट्रिक पार्स न होने पर हमेशा ट्रैक करने के लिए लिंक आउटपुट करें. (I956b9)
    • FrameTimingMetric में फ़्रेम आईडी को पार्स न कर पाने की वजह से क्रैश होने की समस्या को ठीक किया गया है. यह समस्या खास तौर पर कुछ OEM डिवाइसों पर आती है. (Ia24bc, b/303823815, b/306235276)
    • FrameMetrics में जांच की सख्ती को कम किया गया है. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई है. (इडेड)

1.2.0 के बाद से, बेसलाइन प्रोफ़ाइल कैप्चर करने / Gradle प्लग इन में हुए बदलाव

  • AGP के लिए सुझाए गए वर्शन को 9.0.0-alpha01 पर सेट किया गया है.
  • पक्का करें कि mergeArtProfile और mergeStartupProfile टास्क, बेसलाइन प्रोफ़ाइल जनरेट होने का इंतज़ार हमेशा करते हों. (I623d6, b/343086054)
  • बेसलाइन प्रोफ़ाइल जनरेट करने पर, बदलावों की खास जानकारी मिलेगी (I824c8, b/269484510)
  • चेतावनियां बंद करने के लिए डीएसएल जोड़ा गया (Ic4deb, b/331237001)
  • automaticGenerationDuringBuild बंद होने पर, यह पक्का करने के लिए सुधार किया गया है कि बेंचमार्क, जनरेट की गई बेसलाइन प्रोफ़ाइलों का इस्तेमाल करें (Ic144f, b/333024280)
  • BaselineProfile या बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाते समय, बेसलाइन प्रोफ़ाइल जनरेशन और बेंचमार्किंग की सुविधा चालू करने के लिए, BaselineProfile gradle प्लग इन प्रॉपर्टी बदलावों को ठीक करें.nonMinified (Ib8f05, b/324837887)
  • AGP 8.3.0-alpha15 से पहले के AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइलें शामिल करने से जुड़ी समस्या को ठीक किया गया. (I1d2af, b/313992099)
  • जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल के आउटपुट यूआरएल को ठीक किया गया. (I802e5, b/313976958)

1.2.0 के बाद से हुए अन्य अहम बदलाव

  • ट्रैक कैप्चर करना
    • परफ़ेटो शुरू करने से लेकर लॉग की गई चेतावनी में जाने पर, ExitCODE 2 गड़बड़ी कम हो गई
    • बेंचमार्क में डिफ़ॉल्ट रूप से AIDL ट्रैकिंग चालू करें. इसके लिए, एपीआई 28 की ज़रूरत होती है (Ia0af2, b/341852305)
    • बेंचमार्क में, डिफ़ॉल्ट रूप से पोर्टर टैग ट्रैकिंग की सुविधा चालू करें. उदाहरण के लिए, यह वेकलॉक ट्रेसपॉइंट कैप्चर करता है. (Icfe44, b/286551983)
    • धीमे डिवाइसों पर ट्रैकिंग शुरू करते समय क्रैश होने से बचने के लिए, ट्रैक कैप्चर शुरू करने का टाइम आउट बढ़ाया गया (I98841, b/329145808)
    • JSON, textproto, और प्रोटो बाइनरी (डिकोड नहीं किए गए) वैरिएंट के साथ, सार्वजनिक एपीआई PerfettoTraceProcessor.Session.queryMetrics एपीआई जोड़े गए. इनकी मदद से, TraceProcessor (I54d7f, b/304038382) में मौजूद मेट्रिक की क्वेरी की जा सकती है
    • Perfetto ट्रेस रिकॉर्ड पर ब्लॉकिंग शुरू करने की सुविधा चालू करें, ताकि ट्रेस की शुरुआत में डेटा छूटने का जोखिम कम हो. यह सुविधा सिर्फ़ एपीआई 33 और उसके बाद के वर्शन पर काम करती है. (Ie6e41, b/310760059)
  • JSON आउटपुट
    • JSON आउटपुट में, बेंचमार्क के संदर्भ में ज़्यादा जानकारी जोड़ी गई:
      • context.artMainlineVersion - Art मेनलाइन मॉड्यूल का इंटिजर वर्शन (अगर डिवाइस पर मौजूद हो, तो -1)
      • context.build.id - android.os.Build.ID से मेल खाता है
      • context.build.version.codename - android.os.Build.VERSION.CODENAME के बराबर है
      • context.build.version.abbreviatedCodename - रिलीज़ से पहले के कोडनेम के पहले अक्षर से मेल खाता है. इसमें रिलीज़ बिल्ड भी शामिल हैं (Ie5020)
    • प्रोफ़ाइलिंग ट्रेस (जैसे, Perfetto, मेथड ट्रेस) के लिए टूल को आसानी से इस्तेमाल करने के लिए, जेएसओएन आउटपुट में profilerOutput सूची जोड़ी गई है (I05ddd, b/332604449)
    • Android Test Orchestrator का इस्तेमाल, बेंचमार्क मॉड्यूल में करने पर चेतावनी जोड़ी गई है. ऐसा करने पर, हर मॉड्यूल के आउटपुट JSON फ़ाइलों को बार-बार ओवरराइट किया जाएगा. (Ia1af6, b/286899049)
    • फ़ाइल के नाम 200 से ज़्यादा वर्णों के होने पर, यह गड़बड़ी दिखती है. ऐसा फ़ाइलें लिखते समय या प्रोसेस करने के बाद होने वाली गड़बड़ियों से बचने के लिए किया जाता है. (I4a5ab)

वर्शन 1.3.0-rc01

7 अगस्त, 2024

androidx.benchmark:benchmark-*:1.3.0-rc01 रिलीज़ हो गया है. वर्शन 1.3.0-rc01 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • निर्देश न देने वाले इवेंट (I7386a, b/286306579) के लिए खराब वैल्यू जनरेट करने वाली androidx.benchmark.cpuEventCounter की गड़बड़ी ठीक करें
  • मेट्रिक की प्राथमिकता के क्रम का पालन करने के लिए, resumeTiming/runWithTimingDisabled को ठीक करें. साथ ही, प्राथमिकता में कम मेट्रिक के रोके जाने/फिर से शुरू किए जाने से, प्राथमिकता में ज़्यादा मेट्रिक के नतीजों पर पड़ने वाले असर को कम करें. उदाहरण के लिए, अगर cpuEventCounter.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट की मदद से सीपीयू परफ़ॉर्मेंस काउंटर का इस्तेमाल किया जा रहा है, तो रोकने/फिर से शुरू करने पर, timeNs काफ़ी कम नहीं होता. (I39c2e, b/286306579, b/307445225)
  • स्टैक सैंपलिंग कन्वर्ज़न को मुख्य थ्रेड से हटाकर, measureRepeatedOnMainThread को मुख्य थ्रेड के हार्ड टाइम आउट से बचाने के लिए, स्टैक सैंपलिंग की संभावना कम हो गई. (I487a8, b/342237318)
  • नए प्लैटफ़ॉर्म के एपीआई को मैन्युअल तरीके से ऐक्सेस करने की सुविधा हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि AGP 7.3 या इसके बाद के वर्शन (उदाहरण के लिए, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग की मदद से यह अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (उदाहरण के लिए, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह अपने-आप हो जाता है. जो क्लाइंट एजीपी का इस्तेमाल नहीं कर रहे हैं उन्हें D8 के 8.1 या इसके बाद के वर्शन पर अपडेट करने की सलाह दी जाती है. ज़्यादा जानकारी के लिए यह लेख देखें. (I9496c, b/345472586)
  • पैकेज के नाम को instr org के तौर पर भेजने के लिए, agp वर्शन की जांच की गई. AGP 8.4.0 से पहले के वर्शन में, टारगेट ऐप्लिकेशन पैकेज के नाम को इंस्ट्रुमेंटेशन ऐप्लिकेशन पर इंस्ट्रुमेंटेशन आर्ग्युमेंट के ज़रिए नहीं भेजा जा सकता. (0c72a3f)

वर्शन 1.3.0-beta02

10 जुलाई, 2024

androidx.benchmark:benchmark-*:1.3.0-beta02 रिलीज़ हो गया है. वर्शन 1.3.0-beta02 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • चेतावनी को लॉग करने के लिए Perfetto शुरू करते समय, EXITCODE 2 को आसानी से मैनेज करें, लेकिन आगे बढ़ें.

वर्शन 1.3.0-beta01

12 जून, 2024

androidx.benchmark:benchmark-*:1.3.0-beta01 रिलीज़ हो गया है. वर्शन 1.3.0-beta01 में ये प्रतिबद्धताएं शामिल हैं.

एपीआई में हुए बदलाव

  • एक जैसा नाम रखने के लिए, MethodTracing.affectsMeasurementOnThisDevice का नाम बदलकर AFFECTS_MEASUREMENT_ON_THIS_DEVICE किया गया. (I1bdfa)
  • माइक्रो-बेंचमार्क में डेड कोड को हटाने से रोकने के लिए, एक्सपेरिमेंट के तौर पर BlackHole.consume() एपीआई जोड़ा गया. (If6812, b/286091643)
  • तरीके से ट्रेस करने के तरीके में कोई रुकावट न आए, इसके लिए माइक्रोबेंचमार्क को सही तरीके से फेंका जाएगा. यह कुछ डिवाइसों पर तब होता है, जब मेथड ट्रैकिंग को इंस्ट्रुमेंटेशन आर्ग्युमेंट या MicrobenchmarkConfig के ज़रिए ज़बरदस्ती चालू किया जाता है. साथ ही, मेथड ट्रैक के बाद मेज़रमेंट की कोशिश की जाती है. जिन डिवाइसों पर इस रुकावट का असर हुआ है, उन पर एपीआई 26-30 या कुछ एआरटी मेनलाइन मॉड्यूल के वर्शन चल रहे हैं. इनका पता ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice के ज़रिए रनटाइम के दौरान लगाया जा सकता है. (Iafb92, b/303660864)

गड़बड़ियां ठीक की गईं

  • ज़्यादा से ज़्यादा agp वर्शन को 9.0.0-alpha01 पर बंप करने का सुझाव दिया गया है. (I5bbb0)
  • बेंचमार्क कॉन्टेक्स्ट में कंपाइलेशन मोड जोड़ा गया (If5612, b/325512900)
  • डिफ़ॉल्ट रूप से एआईडीएल ट्रैकिंग की सुविधा चालू करें. इसके लिए, एपीआई 28 की ज़रूरत होती है (Ia0af2, b/341852305)
  • JSON आउटपुट में, बेंचमार्क के संदर्भ में ज़्यादा जानकारी जोड़ी गई:
    • context.artMainlineVersion - आर्ट मेनलाइन मॉड्यूल का पूर्णांक वर्शन (अगर डिवाइस पर मौजूद है, तो -1, नहीं तो)
    • context.build.id - android.os.Build.ID के बराबर है
    • context.build.version.codename - android.os.Build.VERSION.CODENAME के बराबर है
    • context.build.version.abbreviatedCodename - रिलीज़ से पहले के कोडनेम के पहले अक्षर से मेल खाता है (रिलीज़ बिल्ड पर भी) (Ie5020)
  • androidx.benchmark.profiling.sampleDurationSeconds का पालन करने के लिए StackSampling को ठीक करता है (Ib1d53)
  • मैक्रो->सामान्य डिपेंडेंसी को बदलकर api() करें. इससे, इस्तेमाल करने में आसानी होती है, जैसे कि PerfettoTrace और PerfettoConfig. (Icdae3, b/341851833)
  • पक्का करें कि mergeArtProfile और mergeStartupProfile टास्क, बेसलाइन प्रोफ़ाइल जनरेट होने का इंतज़ार हमेशा करते हों. (I623d6, b/343086054)
  • वैरिएंट को चालू करने का फ़ैसला लेते समय, वैरिएंट की चालू होने की स्थिति को ध्यान में रखें. (I5d19e, b/343249144)
  • परफ़ेटो ट्रेस प्रोसेसर के लिए, डिफ़ॉल्ट स्टार्ट टाइम आउट बढ़ाएं. (I87e8c, b/329145808)

वर्शन 1.3.0-alpha05

14 मई, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha05 रिलीज़ हो गया है. वर्शन 1.3.0-alpha05 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • जब मैक्रोबेंच मेट्रिक सभी दोहरावों के लिए शून्य वैल्यू दिखाती है, तो साफ़ तौर पर अपवाद दिखाएं (Iab58f, b/314931695)
  • माइक्रोबेंच प्रोगार्ड के नियमों में, समस्या हल करने के लिए अतिरिक्त नियम जोड़े गए हैं. इनमें, लिसनर नियमों और अन्य चेतावनियों / गड़बड़ियों के लिए सहायता शामिल है. (I14d8f, b/329126308, b/339085669)
  • मैक्रोबेंचमार्क के दौरान, मेथड ट्रेसिंग एक अलग फ़ेज़ के रूप में चलती है और अब मेज़रमेंट पर इसका कोई असर नहीं पड़ता. (If9a50, b/285912360, b/336588271)
  • शेडर ब्रॉडकास्ट में गड़बड़ी का मैसेज हटाने के लिए, डीबग करने के अतिरिक्त सुझाव जोड़े गए. (I5efa6, b/325502725)

वर्शन 1.3.0-alpha04

1 मई, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha04 रिलीज़ हो गया है. वर्शन 1.3.0-alpha04 में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • एक्सपेरिमेंट के तौर पर MacrobenchmarkRule#measureRepeated वैरिएंट जोड़ा गया है. यह वैरिएंट, Perfetto ट्रैक रिकॉर्डिंग को पूरी तरह से पसंद के मुताबिक बनाने के लिए, कस्टम PerfettoConfig लेता है. ध्यान दें कि गलत तरीके से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन की वजह से, हो सकता है कि बिल्ट-इन मेट्रिक क्लास की सुविधा काम न करे. (Idfd3d, b/309841164, b/304038384)
  • साफ़ तौर पर समझाने के लिए, PowerMetric.deviceSupportsPowerEnergy का नाम बदलकर PowerMetric.deviceSupportsHighPrecisionTracking करें (I5b82f)
  • डिवाइस की पावर मेज़रमेंट क्षमता के आधार पर, बेंचमार्क बदलने या स्किप करने की सुविधा चालू करने के लिए, PowerMetric.deviceBatteryHasMinimumCharge() और PowerMetric.deviceSupportsPowerEnergy() जोड़े गए. (I6a591, b/322121218)

गड़बड़ियां ठीक की गईं

  • पिछली बेसलाइन प्रोफ़ाइल (I824c8, b/269484510) के साथ तुलना करने की सुविधा जोड़ी गई
  • चेतावनियों को बंद करने के लिए डीएसएल जोड़ा गया (Ic4deb, b/331237001)
  • बेंचमार्क वैरिएंट बंद होने पर, जानकारी वाले लॉग में अपवाद बदला गया (I8a517, b/332772491)
  • मेथड ट्रेस को कैप्चर करना आसान बनाएं, ताकि किसी मैक्रोबेंचमार्क के लिए, measureBlock() की कुल अवधि के हिसाब से उसका दायरा तय किया जा सके. पहले, यह टारगेट प्रोसेस लॉन्च होने पर शुरू होता था और सिर्फ़ कोल्ड स्टार्ट (Iee85a, b/300651094) के साथ काम करता था
  • जब perfetto ट्रैक प्रोसेसर शुरू होने में ज़्यादा समय लेता है, तो क्रैश होने से बचना (I98841, b/329145808)

वर्शन 1.3.0-alpha03

17 अप्रैल, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 रिलीज़ हो गया है. वर्शन 1.3.0-alpha03 में ये कमिट शामिल हैं.

नई सुविधाएं

  • JSON, textproto, और प्रोटो बाइनरी (डिकोड नहीं किए गए) वैरिएंट के साथ, सार्वजनिक एपीआई PerfettoTraceProcessor.Session.queryMetrics एपीआई जोड़ता है. इनकी मदद से, TraceProcessor में बनी मेट्रिक (I54d7f, b/304038382) के बारे में क्वेरी की जा सकती है
  • प्रोफ़ाइलिंग ट्रेस (जैसे, perfetto, मेथड ट्रेस) के लिए टूल को आसान बनाने के लिए, जेएसओएन आउटपुट में profilerOutput जोड़ा गया. (I05ddd, b/332604449)
  • Perfetto कॉन्फ़िगरेशन के बेंचमार्क में पावर टैग जोड़ा गया. उदाहरण के लिए, यह वेकलॉक ट्रेसपॉइंट को कैप्चर करता है. (Icfe44, b/286551983)
  • inst आर्ग्युमेंट androidx.benchmark.profiling.skipWhenDurationRisksAnr जोड़ा गया है. इसे false पर सेट किया जा सकता है, ताकि अनुमानित अवधि के दौरान ANR होने की संभावना होने पर, मेथड ट्रेस को स्किप न किया जाए. हमारा सुझाव है कि सीआई रन में इसका इस्तेमाल न करें.
  • एक्सपेरिमेंट के तौर पर शुरुआती तर्क androidx.benchmark.profiling.perfCompare.enable जोड़ा गया. मेज़रमेंट और प्रोफ़ाइलिंग के चरणों के बीच तुलना के समय की तुलना करने के लिए, इसे 'सही' पर सेट करें. उदाहरण के लिए, यह मेथड ट्रैकिंग के ओवरहेड का आकलन करने में मददगार है. (I61fb4, b/329146942)

एपीआई में बदलाव

  • आने वाले समय में एक्सपैंशन की सुविधा चालू करने के लिए, TraceSectionMetric.Mode को सील की गई क्लास में बदला गया. स्टेटमेंट में पूरी जानकारी शामिल न करें (I71f7b)
  • TraceSectionMetric.Mode.Average और .Count जोड़े गए. साथ ही, आर्ग्युमेंट का क्रम बदला गया, ताकि आर्ग्युमेंट की सूची में सबसे सामान्य आर्ग्युमेंट (मोड) पहले दिखे. इससे पैरामीटर के नामों की जानकारी देने की ज़रूरत कम हो गई. (Ibf0b0, b/315830077, b/322167531)
  • सामान लौटाने के तरीके से मैच करने के लिए, Metric.getResult का नाम बदलकर getMeasurements किया गया (I42595)

गड़बड़ियां ठीक की गईं

  • automaticGenerationDuringBuild बंद होने पर, यह पक्का करने के लिए सुधार किया गया है कि बेंचमार्क, जनरेट की गई बेसलाइन प्रोफ़ाइलों का इस्तेमाल करें (Ic144f, b/333024280)
  • BaselineProfile या बेंचमार्क बिल्ड टाइप को पसंद के मुताबिक बनाते समय, बेसलाइन प्रोफ़ाइल जनरेशन और बेंचमार्किंग की सुविधा चालू करने के लिए, BaselineProfile gradle प्लग इन प्रॉपर्टी बदलावों को ठीक करें.nonMinified (Ib8f05, b/324837887)
  • मैक्रोबेंचमार्क में, मेथड ट्रेस फ़्लश को ठीक किया गया, ताकि मेथड ट्रेस पूरी तरह से कैप्चर किए जा सकें और वे धीमे डिवाइसों पर भी मान्य हों. (I6349a, b/329904950)
  • Perfetto ट्रेस के रिकॉर्ड को ब्लॉक करने की सुविधा को चालू करें, ताकि ट्रेस की शुरुआत में ही डेटा गायब होने का जोखिम कम हो सके. यह सुविधा सिर्फ़ एपीआई 33 और उसके बाद के वर्शन पर काम करती है. (Ie6e41, b/310760059)
  • मानदंड मॉड्यूल में, Android Test Orchestrator का इस्तेमाल करने पर एक चेतावनी जोड़ी गई. इसकी वजह से, हर मॉड्यूल के आउटपुट JSON फ़ाइलों को बार-बार ओवरराइट करना पड़ सकता है. (Ia1af6, b/286899049)
  • Studio के आउटपुट में एक जैसी जानकारी देने के लिए, हज़ारों के बीच ',' (कॉमा) का इस्तेमाल करें. साथ ही, डिवाइस की स्थानीय भाषा को अनदेखा करें (I3e921, b/313496656)
  • TraceSectionMetric में अब Trace.{begin|end}AsyncSection का इस्तेमाल करके बनाए गए स्लाइस काम करते हैं. (I91b32, b/300434906)
  • स्टार्टअप की पहचान करने में हुई सभी गड़बड़ियों के लिए, log.w / अपवाद लेबल जोड़े गए हैं. इससे मौजूदा व्यवहार में कोई बदलाव नहीं होता. इसलिए, कुछ गड़बड़ियां दिखती हैं और कुछ चुपचाप स्टार्टअप का पता नहीं लगा पाती हैं. हालांकि, इससे गड़बड़ियों को समझना आसान हो जाता है. आम तौर पर, जिन सेशन में Log.w() और स्टार्टअप मेट्रिक की रिपोर्ट नहीं मिलती उनमें नॉन-फ़्रेम इवेंट मौजूद नहीं होते. स्टार्टअप का पता चलने पर, फ़्रेम के टाइमिंग की जानकारी (यूज़र इंटरफ़ेस/आरटी स्लाइस से) को छोड़कर, अपवाद दिखाए जाते हैं. (Id240f, b/329145809)
  • रुकावट को कम करने के लिए, मैक्रोबेंचमार्क चलाने से पहले, बैकग्राउंड में काम करने वाले डीक्सप्ट जॉब रद्द करें. (I989ed)
  • frameCount मेज़रमेंट को FrameTimingMetric में जोड़ा गया, ताकि उन स्थितियों का पता लगाया जा सके जहां मेज़रमेंट में बदलाव होने की वजह से, रेंडर होने वाले फ़्रेम की संख्या बदल गई है (नए ऐनिमेशन जोड़े गए, अमान्य होने से जुड़ी समस्याएं ठीक की गईं). (I1e5aa)
  • यह बताया गया है कि दस्तावेज़ों में उपलब्ध होने पर, frameOverrunMs ट्रैकिंग के लिए सबसे सही मेट्रिक है. साथ ही, इसकी वजह भी बताई गई है. (I18749, b/329478323)

वर्शन 1.3.0-alpha02

20 मार्च, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये कमिट मौजूद हैं.

नई सुविधाएं

  • एम्बेड किए गए ProGuard नियमों की मदद से, माइक्रो-बेंच में R8 का प्रयोगात्मक वर्शन. ध्यान दें कि यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. साथ ही, लाइब्रेरी मॉड्यूल की जांच को कम करने के लिए, AGP 8.3 की ज़रूरत है. अपने बेंचमार्क मॉड्यूल के build.gradle में R8 को छोटा करने/ऑप्टिमाइज़ करने की सुविधा चालू करने के लिए, यहां दिए गए निर्देशों का पालन करें. इससे, वर्कलोड के हिसाब से परफ़ॉर्मेंस में काफ़ी बढ़ोतरी हो सकती है. (I738a3, b/184378053)

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

गड़बड़ियां ठीक की गईं

  • माइक्रो-बेंच आउटपुट से अलग लाइन में, मेथड ट्रैकिंग की चेतावनी को ठीक करता है. (I0455c, b/328308833)

वर्शन 1.3.0-alpha01

21 फ़रवरी, 2024

androidx.benchmark:benchmark-*:1.3.0-alpha01 रिलीज़ हो गया है. 1.3.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • गै़र-ज़रूरी शब्द 'चाहिए' से बचने के लिए, MicrobenchmarkConfig बूलियन पैरामीटर का नाम बदला गया (Ia8f00, b/303387299)
  • BenchmarkRule.measureRepeatedOnMainThread जोड़ा गया है, ताकि मुख्य थ्रेड के मानदंड (जैसे, व्यू या Compose यूआई को छूने वाले) ANR को ट्रिगर करने से बच सकें. खास तौर पर, सीआई में बड़े सूट के दौरान. (I5c86d)
  • FrameTimingGfxInfoMetric जोड़ा गया, जो Perfetto ट्रेस से निकाले जाने के बजाय, सीधे प्लैटफ़ॉर्म से मिलने वाले मेज़रमेंट के साथ FrameTimingMetric का एक एक्सपेरिमेंटल वैकल्पिक तरीका है. (I457cb, b/322232828)
  • अलग-अलग warmUp बार-बार होने के दौरान, एआरटी प्रोफ़ाइल को डंप करने की सुविधा जोड़ें. (I17923)
  • TraceSectionMetric एपीआई में कई बदलाव किए गए हैं:
    • Mode.Min, Mode.Max जोड़ें
    • सेक्शन के नाम को मेट्रिक लेबल के तौर पर बदलने के लिए, लेबल आर्ग्युमेंट जोड़ना
    • मेट्रिक का मतलब साफ़ तौर पर समझाने के लिए, आउटपुट में मोड का नाम जोड़ा गया
    • डिफ़ॉल्ट को कुल योग में बदला गया, क्योंकि इस मेट्रिक का ज़्यादातर इस्तेमाल, दोहराए जाने वाले इवेंट के लिए किया जाता है. सीआई के इस्तेमाल में होने वाले इन बदलावों के बारे में ध्यान रखें, क्योंकि इससे गड़बड़ी हो सकती है या पार्स करने में रुकावट आ सकती है. (Ic1e82, b/301892382, b/301955938)

गड़बड़ियां ठीक की गईं

  • अगर मैनेज किया जा रहा कोई डिवाइस मौजूद नहीं है, तो बेसलाइन प्रोफ़ाइल के Gradle प्लग इन में गड़बड़ी का बेहतर मैसेज दिखाया गया है (Idea2b, b/313803289)
  • AGP 8.3.0-alpha15 से पहले, AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइलों को शामिल करने से जुड़ी समस्या को ठीक किया गया (I1d2af, b/313992099)
  • जनरेशन टास्क के आखिर में, बेसलाइन और स्टार्टअप प्रोफ़ाइल के आउटपुट यूआरएल को ठीक किया गया (I802e5, b/313976958)
  • java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788) को ठीक करने के लिए, डेटा सोर्स के टाइम आउट में बदलाव किया गया
  • ProfileInstaller 1.3 के बिना ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय क्रैश से बचने के लिए, शेडर ड्रॉपिंग के व्यवहार को बदलने के लिए दो इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ें:
    • androidx.benchmark.dropShaders.enable=true/false : इसका इस्तेमाल, सभी शेडर ड्रॉपिंग को स्किप करने के लिए किया जा सकता है. इसमें StartupMode.Cold लॉन्च में होने वाली शेडर ड्रॉपिंग भी शामिल है. खास तौर पर, उन ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करते समय जिनमें अब तक profileinstaller 1.3 का इस्तेमाल नहीं किया गया है
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : शेडर को छोड़ने के दौरान होने वाली गड़बड़ियों को बर्दाश्त करने के लिए किया जा सकता है, उदाहरण के लिए जब प्रोफ़ाइलइंस्टॉलर 1.3 (I4f573) के बिना मानदंड वाले ऐप्लिकेशन
  • अगर कुछ सेकंड से ज़्यादा समय लगने की उम्मीद है, तो यूज़र इंटरफ़ेस (यूआई) थ्रेड पर, मेथड ट्रैकिंग को छोड़ें. साथ ही, थ्रेड में कोई गड़बड़ी होने पर, मेथड ट्रैकिंग को क्लीनअप करें. (I6e768)
  • फ़ाइल के नाम 200 से ज़्यादा वर्णों के होने पर, यह गड़बड़ी दिखती है. ऐसा फ़ाइलें लिखते समय या प्रोसेस करने के बाद होने वाली गड़बड़ियों से बचने के लिए किया जाता है. (I4a5ab)
  • इस समस्या को ठीक किया गया है, जिसमें ट्रेस की शुरुआत और आखिर में मौजूद फ़्रेम को एक साथ जोड़ा जा सकता था. इससे, गलत तरीके से एक बहुत लंबे फ़्रेम के तौर पर रिपोर्ट की जा सकती थी. (I39353, b/322232828)
  • उपयोगकर्ता के बिल्ड पर ART प्रोफ़ाइलों को मिटाने के लिए, एपीआई 30-33 पर पैकेज को फिर से इंस्टॉल करते समय, एपीआई 30+ पर --skip verification का इस्तेमाल करें. इससे, Play Protect की ऐसी चेतावनियां बायपास करने में मदद मिलती है जिनकी वजह से कुछ डिवाइसों पर ऐप्लिकेशन इंस्टॉल नहीं हो पाते. (Ic9e36)
  • जब सिस्टम यूज़र इंटरफ़ेस (यूआई) या लॉन्चर जैसे सिस्टम ऐप्लिकेशन न हों, तो ऐप्लिकेशन बंद करने के लिए am force-stop का इस्तेमाल करें. (I5e028)
  • मैक्रोबेंचमार्क अब टारगेट ऐप्लिकेशन के लिए 1 second का इंतज़ार करता है, ताकि वह ART प्रोफ़ाइल को फ़्लश कर सके. पहले, यह 500 ms का इंतज़ार करता था. (I85a50, b/316082056)
  • फ़्रेम न बनने पर FrameTimingMetric गड़बड़ी को बेहतर बनाएं. साथ ही, समस्या का पता लगाने में मदद करने के लिए, मेट्रिक पार्स न होने पर हमेशा ट्रैक करने के लिए लिंक आउटपुट करें. (I956b9)
  • FrameTimingMetric में फ़्रेम आईडी को पार्स न कर पाने की वजह से क्रैश होने की समस्या को ठीक किया गया है. यह समस्या खास तौर पर कुछ OEM डिवाइसों पर आती है. (Ia24bc, b/303823815, b/306235276)
  • FrameMetrics में जांच की सख्ती को कम किया गया है. साथ ही, गड़बड़ी के मैसेज में ज़्यादा जानकारी जोड़ी गई है. (Iadede)

वर्शन 1.2

वर्शन 1.2.4

17 अप्रैल, 2024

androidx.benchmark:benchmark-*:1.2.4 रिलीज़ हो गया है. वर्शन 1.2.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • बेंचमार्क वैरिएंट में, बेसलाइन प्रोफ़ाइल का srcset सेट अप न होने की समस्या को ठीक करता है. यह लाइब्रेरी में automaticGenerationDuringBuild को भी ठीक करता है, जिसकी वजह से सर्कुलर डिपेंडेंसी होती है. (I28ab7, b/333024280)
  • सिस्टम यूज़र इंटरफ़ेस (एसयूआई) या लॉन्चर जैसे सिस्टम ऐप्लिकेशन के अलावा, किसी अन्य ऐप्लिकेशन को बंद करने के लिए am force-stop का इस्तेमाल करें. इससे "पैकेज $पैकेज, कोल्ड स्टार्ट से पहले नहीं चलने चाहिए!" से क्रैश होने वाले StartupMode.COLD बेंचमार्क को ठीक कर दिया गया है, क्योंकि प्रोसेस किल के पूरी तरह से काम नहीं हो रहा है. (I5e028)

वर्शन 1.2.3

24 जनवरी, 2024

androidx.benchmark:benchmark-*:1.2.3 रिलीज़ हो गया है. वर्शन 1.2.3 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • AGP का वर्शन 8.3.0 या इसके बाद का होने पर, बेसलाइन प्रोफ़ाइल Gradle प्लग इन से अपवाद हटा दिया गया.
  • AGP 8.3.0-alpha15 से पहले के AAR में लाइब्रेरी बेसलाइन प्रोफ़ाइल शामिल करने के लिए ठीक किया गया.

वर्शन 1.2.2

1 दिसंबर, 2023

androidx.benchmark:benchmark-*:1.2.2 रिलीज़ हो गया है. वर्शन 1.2.2 में ये कमियां शामिल हैं.

बेसलाइन प्रोफ़ाइलें

  • प्रोसेस करने के लॉग में, बेसलाइन प्रोफ़ाइल के आउटपुट फ़ाइल पाथ को लोकल फ़ाइल यूआरआई (aosp/2843918, aosp/2853665, b/313976958) के तौर पर दिखाया जाएगा

वर्शन 1.2.1

15 नवंबर, 2023

androidx.benchmark:benchmark-*:1.2.1 रिलीज़ हो गया है. वर्शन 1.2.1 में ये कमियां शामिल हैं.

नई सुविधाएं

  • जब उपयोगकर्ता टेस्ट वैरिएंट बंद करता है, तो गड़बड़ी का बेहतर मैसेज दिखाना (b/307478189)
  • एएस टेस्ट रन इंटिग्रेशन (b/309805233), (b/309116324) के साथ काम करने के लिए प्रॉपर्टी जोड़ी गईं

वर्शन 1.2.0

18 अक्टूबर, 2023

androidx.benchmark:benchmark-*:1.2.0 रिलीज़ हो गया है. वर्शन 1.2.0 में ये कमियां शामिल हैं.

1.1.0 के बाद किए गए अहम बदलाव

बेसलाइन प्रोफ़ाइलें

  • नया बेसलाइन प्रोफ़ाइल Gradle प्लग इन, आपके टेस्ट और बिल्ड वर्कफ़्लो में बेसलाइन प्रोफ़ाइलों को अपने-आप कैप्चर और शामिल करता है.
  • BaselineProfileRule.collect अब ठीक से काम कर रहा है. यह एक्सपेरिमेंट के पिछले BaselineProfileRule.collectBaselineProfile एपीआई का आसान और बेहतर वर्शन है
    • सिर्फ़ packageName डालें और अपने ऐप्लिकेशन को आगे बढ़ाएं
  • बेसलाइन प्रोफ़ाइल जनरेट करने वाली लाइब्रेरी के लिए, अब कोड (BaselineProfileRule.collect आर्ग्युमेंट) या gradle प्लग इन में जनरेट किए गए नियमों को फ़िल्टर किया जा सकता है
  • ठीक किए गए गड़बड़ियां
    • Android U+ (Id1392, b/277645214) पर बेसलाइन प्रोफ़ाइल ठीक किया गया है

Macrobenchmark

  • कंपाइलेशन
    • Macrobenchmark अब हर कंपाइल के लिए, कंपाइलेशन की स्थिति को सही तरीके से पूरी तरह से रीसेट करता है. इसके लिए, Android 14 से पहले के APK को फिर से इंस्टॉल करना ज़रूरी है. इसलिए, अगर आपको मेज़र की जा रही चीज़ों में स्थिति (जैसे, उपयोगकर्ता लॉगिन) को बनाए रखना है, तो Android 14 और उसके बाद के वर्शन पर बेंचमार्किंग करने का सुझाव दिया जाता है.
    • इसके लिए, अलग-अलग ऐप्लिकेशन कंपाइलेशन को कंट्रोल किया जा सकता है. साथ ही, CompilationMode.Ignore() या इंस्ट्रुमेंट वाले आर्ग्युमेंट की मदद से, कंपाइलेशन को छोड़ा जा सकता है
  • इंस्ट्रूमेंटेशन आर्ग्युमेंट

    • पुष्टि करने के लिए, androidx.benchmark.dryRunMode.enable इंस्ट्रूमेंटेशन आर्ग्युमेंट की सुविधा. यह सुविधा पहले से ही माइक्रो-बेंचमार्क में उपलब्ध है. इससे, पुष्टि करने की प्रोसेस तेज़ी से पूरी होती है. जैसे, बेंचमार्क बनाते समय या सबमिट करने से पहले
    • androidx.benchmark.profiling.mode=StackSampling और MethodTracing के लिए सहायता.
    • रनटाइम फ़िल्टरिंग बेसलाइन प्रोफ़ाइल बनाम मैक्रोबेंचमार्क नियम के टेस्ट की अनुमति देने के लिए, androidx.benchmark.enabledRules जोड़ा गया
    • tracing-perfetto की मदद से ट्रैकिंग चालू करने के लिए, androidx.benchmark.perfettoSdkTracing.enable आर्ग्युमेंट जोड़ा गया. जैसे, Compose recomposition tracing. ध्यान दें कि StartupMode.COLD के साथ इस्तेमाल करने पर, टाइमिंग पर काफ़ी असर पड़ेगा. इसकी वजह यह है कि ऐप्लिकेशन के शुरू होने के दौरान, ट्रैकिंग लाइब्रेरी लोड और चालू होती है.
  • ज़रूरी शर्तें

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

    • एक्सपेरिमेंट के तौर पर TraceSectionMetric जोड़ा गया है. इसकी मदद से, अपने ऐप्लिकेशन में trace("") {} ब्लॉक या Perfetto TraceProcessor की क्वेरी की पूरी क्षमता का फ़ायदा पाने के लिए, TraceMetric से आसानी से टाइमिंग निकाली जा सकती है.
    • पावर के इस्तेमाल की जानकारी कैप्चर करने के लिए, एक्सपेरिमेंटल PowerMetric को जोड़ा गया
    • पेज में गड़बड़ियों की गिनती करने के लिए, प्रयोग के तौर पर MemoryCountersMetric जोड़ा गया
    • एक्सपेरिमेंट के तौर पर PerfettoTraceProcessor एपीआई जोड़ा गया है. इसका इस्तेमाल, सिस्टम ट्रेस (जिसे Perfetto ट्रेस भी कहा जाता है) से मेट्रिक निकालने के लिए किया जाता है
  • समाधान

    • एक से ज़्यादा APK (जैसे, ऐप्लिकेशन बंडल) से इंस्टॉल किए गए ऐप्लिकेशन से प्रोफ़ाइलें इंस्टॉल या निकालते समय क्रैश होने की समस्या को ठीक किया गया.
    • FrameTimingMetric को ठीक किया गया, जो अलग-अलग फ़्रेम आईडी वाले फ़्रेम को अनदेखा करता है. आम तौर पर, एपीआई 31 और उसके बाद के वर्शन पर रिपल के दौरान फ़्रेम (I747d2, b/279088460)
    • 64 एमबी से ज़्यादा के ट्रैस को पार्स करने से जुड़ी गड़बड़ियां ठीक की गईं (Ief831, b/269949822)
    • डिवाइस (खास तौर पर एमुलेटर) के ओएस इमेज को ट्रैकिंग या कंपाइलेशन के लिए सही तरीके से कॉन्फ़िगर न करने पर, गड़बड़ियों के बारे में साफ़ तौर पर जानकारी
    • बैटरी के बिना काम करने वाले डिवाइसों (माइक्रो और मैक्रो) के लिए, बैटरी लेवल की जांच को छोड़ना
    • बेहतर फ़ाइल आउटपुट, जिसमें अमान्य आउटपुट डायरेक्ट्री के लिए ज़्यादा साफ़ गड़बड़ियां और सुरक्षित डिफ़ॉल्ट शामिल हैं
    • शेडर कैश को लगातार छोड़कर, StartupMode.COLD की स्थिरता को बेहतर बनाया गया. इसे MacrobenchmarkScope.dropShaderCache के ज़रिए भी एक्सपोज़ किया गया है
    • startActivityAndWait के लिए, लीनबैक फ़ॉलबैक को ठीक किया गया.

माइक्रोबेंचमार्क

  • सुविधाएं
    • अन्य मेट्रिक के बाद, प्रोफ़ाइलिंग को एक अलग चरण में ले जाया गया था. इसलिए, एक टेस्ट रन से, प्रोफ़ाइलिंग के नतीजों और सटीक समय, दोनों को दिखाया जा सकता है.
  • प्रयोग के लिए एपीआई
    • कस्टम मेट्रिक तय करने और ट्रैकिंग और प्रोफ़ाइलिंग को कॉन्फ़िगर करने के लिए, एक्सपेरिमेंट के तौर पर MicrobenchmarkConfig API जोड़ा गया. इसका इस्तेमाल, मेथड ट्रेस या ट्रेसपॉइंट कैप्चर करने के लिए किया जा सकता है. हालांकि, ट्रेसिंग के ओवरहेड से सावधान रहें.
    • BenchmarkState को BenchmarkRule से अलग से कंट्रोल करने के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई जोड़े गए. इनमें JUnit का इस्तेमाल नहीं किया गया है
    • Perfetto ट्रेस को कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर PerfettoTrace रिकॉर्ड जोड़ा गया है. यह रिकॉर्ड, पसंद के मुताबिक कॉन्फ़िगरेशन के साथ, बेंचमार्क एपीआई से अलग होता है.
  • ठीक किए गए गड़बड़ियां
    • Android Studio के बेंचमार्क आउटपुट में, शुरुआत में मौजूद खाली जगहों की समस्या हल करना.
    • उस समस्या को ठीक किया जा सकता है जिसकी वजह से Android Studio के मानदंड वाले आउटपुट में चेतावनियां प्रिंट नहीं हो सकीं.
    • Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन पर, SampledProfiling क्रैश होने की समस्या को ठीक किया गया.
    • IsolationActivity और Perfetto ट्रैकिंग को स्किप करके, dryRunMode की परफ़ॉर्मेंस को काफ़ी बेहतर बनाया गया है. पुराने ओएस वर्शन पर, ड्राई रन मोड 10 गुना तक तेज़ हो गया है.

वर्शन 1.2.0-rc02

6 अक्टूबर, 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 रिलीज़ हो गया है. वर्शन 1.2.0-rc02 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • BaselineProfile प्लग इन फ़ाइल कॉपी करने की प्रोसेस में कोई रुकावट न आए, इसके लिए बेंचमार्क फ़ाइल आउटपुट से जुड़ी समस्या ठीक करें. फ़ाइलें जनरेट की गई थीं और डिवाइस से कॉपी की गई थीं. हालांकि, उनका नाम बदल दिया गया था, ताकि gradle प्लग इन उन्हें न देख पाए. (I8dbcc, b/303034735, b/296453339)
  • टारगेट ऐप्लिकेशन में मैक्रोबेंचमार्क मॉड्यूल से इंजेक्ट करते समय, tracing-perfetto के लोड होने से जुड़ी गड़बड़ी के मैसेज साफ़ तौर पर बताए गए.

वर्शन 1.2.0-rc01

20 सितंबर, 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 रिलीज़ हो गया है. 1.2.0-rc01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • जब Perfetto SDK टूल की ट्रैकिंग, बेंचमार्क में शुरू नहीं हो पाती, तो अब एक अपवाद (समस्या को ठीक करने के निर्देशों के साथ) दिखता है. (I6c878, b/286228781)
  • ART मेथड ट्रेस को perfetto फ़ॉर्मैट में बदलते समय, OOM क्रैश की समस्या को ठीक किया गया. (I106bd, b/296905344)
  • (मैक्रोबेंचमार्क) Studio टेस्ट आउटपुट में, तरीके को ट्रेस करने वाले लेबल को बेहतर तरीके से बताया गया और डिवाइस/होस्ट पर, फ़ाइल नाम को ट्रेस करने के तरीके को अलग किया गया. ऐसा इसलिए, ताकि एक से ज़्यादा बेंचमार्क इस्तेमाल किए जाने पर, उन फ़ाइलों को ओवरराइट न किया जाए. (I08e65, b/285912360)
  • बेसलाइन प्रोफ़ाइल कैप्चर करते समय, यह पक्का करता है कि डिवाइस चालू है. (I503fc)

वर्शन 1.2.0-beta05

30 अगस्त, 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 रिलीज़ हो गया है. 1.2.0-beta05 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • बेसलाइन प्रोफ़ाइल Gradle प्लग इन, अब Android Gradle प्लग इन 8.3 के साथ काम करता है. (aosp/2715214)

वर्शन 1.2.0-beta04

23 अगस्त, 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 रिलीज़ हो गया है. 1.2.0-beta04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • बेसलाइन प्रोफ़ाइल वाला Gradle प्लग इन, अब Android Gradle प्लग इन 8.3 के साथ काम करता है. (aosp/2715214)

गड़बड़ियां ठीक की गईं

  • आउटपुट फ़ाइल के नामों को साफ़ करके, फ़ाइलों को लिखने / मूव करने और खींचने से जुड़ी गड़बड़ियों को ठीक करें. खास तौर पर, पैरामीटर वाली टेस्ट से जुड़ी फ़ाइलों को. आउटपुट फ़ाइल के नामों में '=' और ':' का इस्तेमाल न करें. (I759d8)

वर्शन 1.2.0-beta03

9 अगस्त, 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 रिलीज़ हो गया है. 1.2.0-beta03 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • TraceSectionMetric को सिर्फ़ टारगेट किए गए पैकेज पर फ़िल्टर करने के लिए आर्ग्युमेंट जोड़ा गया. यह डिफ़ॉल्ट रूप से चालू होता है (Ia219b, b/292208786)

गड़बड़ियां ठीक की गईं

  • आर्टफ़ैक्ट के नाम और दूसरे रेफ़रंस के साथ एक जैसा रखने के लिए, fullTracing.enable इंस्ट्रुमेंटेशन आर्ग्युमेंट का नाम बदलकर perfettoSdkTracing.enable कर दिया गया. fullTracing.enable, फ़ॉलबैक के तौर पर काम करता रहेगा. (I7cc00)
  • बेंचमार्क लाइब्रेरी के इंटरनल ट्रेसपॉइंट (इनमें माइक्रोबेंचमार्क लूप/फ़ेज़ ट्रैकिंग भी शामिल है) अब Studio के सिस्टम ट्रेस व्यूअर में दिखेंगे. साथ ही, ये Perfetto में सही प्रोसेस के तहत नेस्ट होंगे. (I6b2e7, b/293510459)
  • एपीआई 31+ पर मैक्रोबेंचमार्क NOT-PROFILEABLE गड़बड़ी को हटाया गया. साथ ही, eng/userdebug से रूट किए गए डिवाइसों पर, प्रोफ़ाइल की जांच को स्किप करें. (I2abac, b/291722507)
  • Dex लेआउट ऑप्टिमाइज़ेशन का इस्तेमाल करते समय, स्टार्टअप प्रोफ़ाइल के नियमों को अब बेसलाइन प्रोफ़ाइल के नियम भी माना जाता है. (aosp/2684246, b/293889189)

वर्शन 1.2.0-beta02

26 जुलाई, 2023

androidx.benchmark:benchmark-*:1.2.0-beta02 रिलीज़ हो गया है. 1.2.0-beta02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • माइक्रोबेंच कस्टम मेट्रिक और कॉन्फ़िगरेशन (जैसे कि प्रोफ़ाइलर और ट्रेसिंग) के लिए, प्रयोग के तौर पर इस्तेमाल किए जा रहे एपीआई जोड़े गए. (I86101, b/291820856)

गड़बड़ियां ठीक की गईं

  • जब ओएस को ट्रैकिंग के लिए गलत तरीके से कॉन्फ़िगर किया गया हो, तो macrobench में गड़बड़ी की रिपोर्ट करें. हाल ही में, एपीआई 26/28 ARM64 एमुलेटर में इसे ठीक किया गया था. (I0a328, b/282191686)
  • एमुलेटर को अपडेट करने का सुझाव देने के लिए, कंपाइलेशन रीसेट न होने की जानकारी जोड़ी गई है. ऐसा इसलिए किया गया है, क्योंकि कुछ एमुलेटर ने हाल ही में इस समस्या को ठीक किया है. (I8c815, b/282191686)
  • androidx.test.uiautomator:uiautomator:2.2.0 को implementation डिपेंडेंसी के बजाय api बनाएं. (I1981e)

वर्शन 1.2.0-beta01

18 जुलाई, 2023

androidx.benchmark:benchmark-*:1.2.0-beta01 रिलीज़ हो गया है. 1.2.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Studio में बेंचमार्क आउटपुट में कभी-कभी न दिखने वाली चेतावनियों और Studio में बेंचमार्क आउटपुट की मुख्य खाली सफ़ेद जगहों के न दिखने की समस्या ठीक करें (Ia61d0, b/227205461, b/286306579, b/285912360)
  • FrameTimingMetric के लिए टिप्पणी ठीक की गई. सबमेट्रिक का नाम frameDurationCpuMs है. (Ib097f, b/288830934).

वर्शन 1.2.0-alpha16

21 जून, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 रिलीज़ हो गया है. 1.2.0-alpha16 वर्शन में ये बदलाव शामिल हैं.

एपीआई में बदलाव

  • BaselineProfileRule.collectBaselineProfile() एपीआई का नाम बदलकर, BaselineProfileRule.collect() कर दिया गया है. (I4b665)

गड़बड़ियां ठीक की गईं

  • androidx.benchmark.profiling.mode = MethodTracing के लिए मैक्रोबेंचमार्क समर्थन. (I7ad37, b/285912360)
  • माइक्रोबेंचमार्क प्रोफ़ाइलिंग को एक अलग चरण में ले जाया गया है, ताकि यह मेज़रमेंट की जगह लेने के बजाय, उसके बाद क्रम में हो. अगर कैप्चर किए गए परफ़ेटो ट्रेस में MethodTracing ट्रेस सेक्शन भी मौजूद हैं, तो उसे भी शामिल कर लिया गया है. (I9f657, b/285014599)
  • Mode.Sum की मदद से, TraceSectionMetric में गिनती मेज़रमेंट जोड़ें. (Ic121a, b/264398606)

वर्शन 1.2.0-alpha15

7 जून, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha15 रिलीज़ हो गया है. 1.2.0-alpha15 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • टारगेट किए गए ऐप्लिकेशन के मेमोरी इस्तेमाल को ट्रैक करने के लिए, एक्सपेरिमेंटल MemoryUsageMetric जोड़ा गया. (I56453, b/133147125, b/281749311)
  • PerfettoTrace.record (If9d75, b/280460183) की मदद से, पूरी तरह से पसंद के मुताबिक Perfetto कॉन्फ़िगरेशन के लिए सहायता जोड़ें
  • बेसलाइन प्रोफ़ाइल जनरेशन को स्किप करने के लिए प्रॉपर्टी जोड़ी गई. इस्तेमाल: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)

एपीआई में हुए बदलाव

  • collectBaselineProfile एपीआई हमेशा स्थिर बेसलाइन प्रोफ़ाइलें जनरेट करता है. collectStableBaselineProfile API को हटा दिया गया है और इसके बजाय collectBaselineProfile का इस्तेमाल किया जाना चाहिए. (I17262, b/281078707)
  • BaselineProfileRule के filterPredicate आर्ग्युमेंट को शून्य के बराबर वाली वैल्यू में बदला गया, ताकि डिफ़ॉल्ट वैल्यू के तौर पर दस्तावेज़ को ज़्यादा साफ़ तौर पर दिखाया जा सके. (I3816e)

गड़बड़ियां ठीक की गईं

  • परफ़ॉर्मेंस को बेहतर बनाने के लिए, dryRunMode में IsolationActivity और Perfetto ट्रैकिंग की सुविधा बंद करें. ऐसा इसलिए, क्योंकि रनटाइम का ज़्यादातर हिस्सा इन पर खर्च होता है. (Ie4f7d)
  • इंस्ट्रुमेंटेशन टेस्ट के आर्ग्युमेंट androidx.benchmark.profiling.mode=StackSampling और androidx.benchmark.profiling.sampleFrequency का इस्तेमाल करके, मैक्रोबेंचमार्क में कॉल स्टैक सैंपलिंग की सुविधा. (I1d13b, b/282188489)
  • Android U (एपीआई 34) और एमुलेटर पर शेडर छोड़ते समय क्रैश होने की समस्या ठीक की गई. (I031ca, b/274314544)

वर्शन 1.2.0-alpha14

3 मई, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha14 रिलीज़ हो गया है. वर्शन 1.2.0-alpha14 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • FrameTimingMetric को ऐसे फ़्रेम को अनदेखा करने से रोकना जिनके फ़्रेम आईडी अलग-अलग हैं. इस वजह से, RenderThread के ऐनिमेट होने के दौरान (जैसे कि किसी रिपल के दौरान), हाल ही के प्लैटफ़ॉर्म वर्शन (एपीआई 31+) पर मौजूद कुछ ऐनिमेशन कई फ़्रेम को अनदेखा कर सकते हैं. (I747d2, b/279088460)
  • 64 एमबी से ज़्यादा के ट्रैक के लिए, ट्रैक प्रोसेसर की पार्सिंग को ठीक किया गया. (Ief831, b/269949822)
  • pm dump-profiles कमांड के अलग-अलग आउटपुट की वजह से, Android U पर बेसलाइन प्रोफ़ाइल जनरेट करने की समस्या को ठीक किया गया. (Id1392, b/277645214)
  • स्ट्रिंग की सही तरीके से तुलना करने के लिए, जीपीयू क्लॉक लॉकिंग स्क्रिप्ट को ठीक करें (I53e54, b/213935715)

वर्शन 1.2.0-alpha13

5 अप्रैल, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha13 रिलीज़ हो गया है. 1.2.0-alpha13 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • आने वाली स्टार्टअप प्रोफ़ाइल की सुविधा के लिए बेसलाइन प्रोफ़ाइल जनरेट करते समय, प्रोफ़ाइल टाइप पैरामीटर जोड़ा गया (Ie20d7, b/275093123)
  • Perfetto ट्रेस के कॉन्टेंट के आधार पर, पूरी तरह से कस्टम मेट्रिक तय करने के लिए, एक्सपेरिमेंट के तौर पर नया TraceMetric एपीआई जोड़ा गया. (I4ce31, b/219851406)
  • बेंचमार्क के दौरान पेज फ़ॉल्ट की संख्या तय करने के लिए, एक्सपेरिमेंटल मेट्रिक जोड़ें. (I48db0)

वर्शन 1.2.0-alpha12

22 मार्च, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha12 रिलीज़ हो गया है. वर्शन 1.2.0-alpha12 में ये कमियां हैं.

नई सुविधाएं

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

एपीआई में हुए बदलाव

  • एपीआई 21 और 22 पर पर्फ़ेटो ट्रेस करने की सुविधा हटा दी गई है. इसमें माइक्रोबेंचमार्क और एक्सपेरिमेंट के तौर पर शुरू किए गए PerfettoTrace एपीआई शामिल हैं. इस वर्शन से पहले, कुछ डिवाइसों पर UiAutomation कनेक्शन भरोसेमंद नहीं थे. (I78e8c)
  • PerfettoTraceProcessor के लिए सार्वजनिक एक्सपेरिमेंटल एपीआई जोड़ा गया, ताकि ट्रेस कॉन्टेंट को पार्स किया जा सके. यह एक ऐसा चरण है जिसमें Perfetto ट्रेस के डेटा पर आधारित पूरी तरह से कस्टम मेट्रिक बनाने की प्रोसेस शुरू की गई है. (I2659e, b/219851406)

वर्शन 1.2.0-alpha11

8 मार्च, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha11 रिलीज़ हो गया है. वर्शन 1.2.0-alpha11 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • एक से ज़्यादा APK वाले ऐप्लिकेशन बंडल से प्रोफ़ाइलों को फिर से इंस्टॉल करने या निकालने के दौरान, MacrobenchmarkRule और BaselineProfileRule में क्रैश होने की समस्या को ठीक किया गया. (I0d8c8, b/270587281)

वर्शन 1.2.0-alpha10

22 फ़रवरी, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha10 रिलीज़ हो गया है. 1.2.0-alpha10 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Android 14 और उसके बाद के वर्शन पर, Macrobenchmark अब कंपाइलेशन की स्थिति को रीसेट करने के लिए, टारगेट किए गए ऐप्लिकेशन को फिर से इंस्टॉल नहीं करता. इसकी वजह, प्लैटफ़ॉर्म की नई सुविधा है. पहले, यह ज़रूरी था कि आपके पास रूट किया गया डिवाइस हो या हर बेंचमार्क चलाने से पहले, ऐप्लिकेशन की सभी स्थितियों (उदाहरण के लिए, उपयोगकर्ता लॉगिन) को हटा दिया जाए. (I9b08c, b/249143766)

गड़बड़ियां ठीक की गईं

  • DryRunMode को ठीक करें, ताकि कंपाइलेशन को स्किप करने की वजह से, खाली प्रोफ़ाइल के साथ क्रैश न हो. इसके बजाय, यह एक बार चलाया जाता है और प्रोफ़ाइल को निकाला जाता है, ताकि यह पक्का किया जा सके कि कुछ कैप्चर किया गया है. (I2f05d, b/266403227)
  • पुराने एपीआई लेवल पर, पावर स्टेटस की मौजूदगी की जांच करते समय PowerMetric क्रैश होने की समस्या ठीक की गई. (5faaf9, b/268253898)

वर्शन 1.2.0-alpha09

11 जनवरी, 2023

androidx.benchmark:benchmark-*:1.2.0-alpha09 रिलीज़ हो गया है. 1.2.0-alpha09 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • सभी बेंचमार्क / बेसलाइन प्रोफ़ाइल जनरेशन को बंद करने के लिए, androidx.benchmark.enabledRules इंस्ट्रूमेंटेशन आर्ग्युमेंट में None पास करने की सुविधा चालू की गई. (I3d7fd, b/258671856)
  • ऐप्लिकेशन मॉड्यूल (जैसे, ऐसे APK जिनमें अपने-आप जांच करने की सुविधा नहीं है) में PerfettoTrace कैप्चर करने की समस्या को ठीक करना (I12cfc)
  • Studio आउटपुट में बेसलाइन प्रोफ़ाइल adb पुल आर्ग्युमेंट ऑर्डर (I958d1, b/261781624)
  • आर्म एम्युलेटर एपीआई 33 की अब सही तरह से पहचान हो गई है, जैसे कि मैक्रोबेंचमार्क चलाने की कोशिश करते समय और यह चेतावनी को सही तरीके से प्रिंट करेगा. (69133b,b/262209591)
  • Macrobenchmark में, बैटरी के बिना काम करने वाले डिवाइसों पर बैटरी लेवल की जांच को छोड़ना (fe4114, b/232448937)

वर्शन 1.2.0-alpha08

7 दिसंबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha08 रिलीज़ हो गया है. 1.2.0-alpha08 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • टेस्ट के तौर पर, टेस्ट के तौर पर परफ़ेटो ट्रेस (जिसे सिस्टम ट्रेस भी कहा जाता है) कैप्चर करने के लिए, एक्सपेरिमेंट के तौर पर नए एपीआई PerfettoTrace.record {} और PerfettoTraceRule जोड़े गए. इससे टेस्ट के व्यवहार और परफ़ॉर्मेंस की जांच की जा सकेगी. (I3ba16)
  • BaselineProfileRule अब पैकेज के प्रीफ़िक्स की सूची के बजाय, फ़िल्टर प्रेडिकेट स्वीकार करता है. इससे फ़िल्टर को जांच का पूरा कंट्रोल मिलता है. (I93240)
  • एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई BaselineProfileRule.collectStableBaselineProfile जोड़ें. यह तब तक इंतज़ार करता है, जब तक कोई बेसलाइन प्रोफ़ाइल N बार दोहराए जाने तक स्थिर न हो जाए. (I923f3)
  • BaselineProfileRule का इस्तेमाल करके बेसलाइन प्रोफ़ाइल जनरेट करते समय, आउटपुट फ़ाइल के नाम का प्रीफ़िक्स तय करने की सुविधा जोड़ी गई. (I7b59f, b/260318655)

गड़बड़ियां ठीक की गईं

  • फ़ाइल आउटपुट लिखने की सुरक्षा को बेहतर बनाया गया है. इससे, आउटपुट फ़ाइलों को चुपचाप लिखे जाने / जोड़े जाने से रोका जा सकता है. खास तौर पर, एपीआई 21/22 पर. (If8c44, b/227510293)
  • फ़ाइल को सही तरीके से बनाने और उसे सही जगह पर रखने के लिए, simpleperf ट्रेस आउटपुट ठीक करें. इससे, gradle की मदद से फ़ाइल को खींचने में होने वाली समस्याएं भी ठीक हो जाएंगी. (I12a1c, b/259424099)
  • profileinstaller बहुत पुराना होने पर, प्रिंट किए गए profileinstaller गड़बड़ी के मैसेज को बेहतर बनाएं. अब यह आपको बताता है कि एपीआई लेवल 31 से 33 पर बेसलाइन प्रोफ़ाइलों को मेज़र करने के लिए, profileinstaller का वर्शन (1.2.1) अपडेट करें. इससे, आपको यह नहीं बताया जाएगा कि यह सुविधा काम नहीं करती. (Ia517f, b/253519888)
  • onerror मैसेज में, शेल कमांड के काम न करने की कई समस्याओं को ठीक करें. इसके लिए, ज़रूरी एपीआई <=23 प्रिंट करें. इसमें, perfetto कैप्चर बाइनरी सेटअप और ट्रेस कैप्चर से जुड़ी गड़बड़ियां शामिल हैं (Ib6b87, b/258863685)
  • जनरेट किए गए प्रोफ़ाइल नियमों को अपने-आप क्रम में लगाएं, ताकि समय के साथ होने वाले बदलावों की संख्या कम से कम हो. ऐसा, सोर्स कंट्रोल में प्रोफ़ाइल नियमों को चेक-इन करते समय किया जाता है. (Ie2509)
  • Android 13 (एपीआई लेवल 33) से पहले के वर्शन वाले बिना रूट किए गए डिवाइसों पर, Expected no stderr from echo 3 > /proc/sys/vm/drop_caches मैसेज के साथ क्रैश होने की समस्या को ठीक किया गया (I6c245, b/259508183)

पहले से मौजूद समस्याएं - प्रोफ़ाइल इंस्टॉलर मेनिफ़ेस्ट में ब्रॉडकास्ट रजिस्ट्री मौजूद न होने की वजह से, MacrobenchmarkScope.dropShaderCache() क्रैश हो सकता है. यह रजिस्ट्री अब तक रिलीज़ नहीं हुई है. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02 में मौजूद समस्या को हल करने के लिए, अपने ऐप्लिकेशन (न कि बेंचमार्क) के AndroidManifest.xml में ये चीज़ें जोड़ें:

  <!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
  <receiver
    android:name="androidx.profileinstaller.ProfileInstallReceiver"
    android:permission="android.permission.DUMP"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
    </intent-filter>
  </receiver>

वर्शन 1.2.0-alpha07

9 नवंबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha07 रिलीज़ हो गया है. वर्शन 1.2.0-alpha07 में ये कमिट हैं.

एपीआई में हुए बदलाव

  • मैक्रोबेंचमार्क में एनर्जी और पावर को मेज़र करने के लिए, PowerMetric एपीआई जोड़ा गया. (Ife601, b/220183779)
  • शेडर कैश को असल में छोड़ने के लिए, MacrobenchmarkScope.dropShaderCache() को ठीक किया गया. इससे StartupMode.COLD बेंचमार्क से करीब 20 मिलीसेकंड का शोर हट जाता है, क्योंकि अब हर बार शेडर को लगातार साफ़ किया जाता है. पहले, Partial कोड को इकट्ठा करने के लिए, वॉर्मअप के दौरान कई बार दोहराए जाने वाले निर्देशों का इस्तेमाल करने पर, गलत तरीके से तेज़ी से चलने की जानकारी मिलती थी. इसकी वजह यह थी कि वॉर्मअप के दौरान शेडर कैश मेमोरी में सेव होने की संभावना ज़्यादा होती है. इस गड़बड़ी को ठीक करने के लिए, टारगेट किए गए ऐप्लिकेशन में profileinstaller:1.3.0-alpha02 का इस्तेमाल करना ज़रूरी है या डिवाइस को रूट करना ज़रूरी है. ProfileInstaller लाइब्रेरी के एपीआई में हुए बदलावों के बारे में जानने के लिए, कृपया ProfileInstaller 1.30-alpha02 पेज पर जाएं. (Ia5171, b/231455742)
  • TraceSectionMode("label", Mode.Sum) जोड़ा गया, जिससे एक ही लेबल वाले कई ट्रेस सेक्शन पर बिताए गए कुल समय को मेज़र किया जा सकता है. उदाहरण के लिए, TraceSectionMetric("inflate", Mode.Sum), मैक्रोबेंचमार्क में कुल समय के लिए मेट्रिक inflateMs की रिपोर्ट करेगा. यह समय, इन्फ़्लेशन पर खर्च किया गया है. एपीआई 29 की ज़रूरी शर्त को भी हटा दिया गया है. TraceSectionMetric, टारगेट ऐप्लिकेशन में forceEnableAppTracing का इस्तेमाल करके, androidx.tracing.Trace के एपीआई लेवल में वापस androidx.tracing.Trace के साथ काम करता है. (Id7b68, b/231455742)

गड़बड़ियां ठीक की गईं

  • सभी आउटपुट/गड़बड़ियों की पुष्टि करके, सभी इंटरनल शेल कमांड की सुरक्षा को बेहतर बनाया गया है. (I5984d, b/255402908, b/253094958)
  • बेसलाइन प्रोफ़ाइल adb pull कमांड में डिवाइस की जानकारी दें, ताकि एक से ज़्यादा डिवाइस (एक एम्युलेटर तक) कनेक्ट होने पर, पुल कमांड को आसानी से कॉपी किया जा सके (I6ac6c, b/223359380)
  • अगर मैक्रोबेंचमार्क टेस्ट apk को सेल्फ़-इंस्ट्रुमेंटिंग के तौर पर सेट अप नहीं किया गया है, तो गड़बड़ी जोड़ें. इस गड़बड़ी की वजह से, टारगेट किए गए ऐप्लिकेशन की प्रोसेस में मैक्रोबेंचमार्किंग नहीं की जा सकती. प्रोसेस के दौरान, मैक्रोबेंच, ऐप्लिकेशन को कंपाइल/किल/कोल्ड नहीं कर पाएगा या अपनी अनुमतियों को कंट्रोल नहीं कर पाएगा (I4279b)
  • measureRepeated() में एक समस्या को ठीक किया गया है. इसमें StartupMode.COLD, setupBlock के बाद टारगेट प्रोसेस को बंद नहीं कर पाता था. अब ऐप्लिकेशन के साथ इंटरैक्ट करने वाला setupBlock, ऐप्लिकेशन की प्रोसेस को जारी नहीं रखेगा. साथ ही, कोल्ड स्टार्ट मेज़रमेंट अमान्य होगा. (I8ebb7)

वर्शन 1.2.0-alpha06

24 अक्टूबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha06 रिलीज़ हो गया है. 1.2.0-alpha06 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Android 13 (एपीआई लेवल 33) पर, BaselineProfileRule को अब रूट करने की ज़रूरत नहीं है. साथ ही, यह अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (Ie0a7d, b/250083467, b/253094958)
    • इस बदलाव से, बिना रूट किए गए डिवाइसों पर, किसी ऐप्लिकेशन की प्रोफ़ाइलों को डिस्क पर फ़्लश करने का तरीका भी ठीक हो जाता है. हालांकि, इसके लिए टारगेट ऐप्लिकेशन के profileinstaller डिपेंडेंसी को अपडेट करना ज़रूरी है.
    • बिना रूट किए गए डिवाइस पर BaselineProfileRule या CompilationMode.Partial(warmupIterations) का इस्तेमाल करने के लिए, आपको टारगेट किए गए ऐप्लिकेशन को भी androidx.profileinstaller.profileinstaller:1.3.0-alpha01 का इस्तेमाल करने के लिए अपडेट करना होगा. इससे प्रोफ़ाइल को डिस्क पर सही तरीके से फ़्लश किया जा सकता है, ताकि उसे कंपाइल/एक्सट्रैक्ट किया जा सके.

गड़बड़ियां ठीक की गईं

  • एपीआई 33 और उसके बाद के वर्शन पर, SampledProfiling के क्रैश होने की समस्या को ठीक करता है. (I40743, b/236109374)

वर्शन 1.2.0-alpha05

5 अक्टूबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 रिलीज़ हो गया है. 1.2.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • मानदंड कैप्चर किए गए ट्रेस (I3f3ae, b/239677443) के लिए, Studio के सिस्टम ट्रेस व्यूअर में फ़्रेम के ब्रेकडाउन की समस्या ठीक करना
  • FrameTimingMetric को FrameOverrun की सूची में ठीक करें, ताकि 29 के बजाय एपीआई 31 की ज़रूरत हो (I716dd, b/220702554)
  • BaselineProfileRule में दोहराव सेट करें और अगर टारगेट पैकेज इंस्टॉल नहीं है, तो साफ़ तौर पर बताएं (MacrobenchmarkRule के लिए पहले से ही किया गया था). (Ic09a3, b/227991471)

वर्शन 1.2.0-alpha04

21 सितंबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha04 रिलीज़ हो गया है. 1.2.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • मैक्रोबेंचमार्क (पहले से माइक्रो में उपलब्ध) में, dryRunMode.enable इंस्ट्रुमेंटेशन आर्ग्युमेंट के लिए सहायता जोड़ें.इससे लोकल डेवलपमेंट और ऐप्लिकेशन ऑटोमेशन की पुष्टि की जा सकेगी. उदाहरण के लिए, पहले से सबमिट करने के दौरान. यह 1 की इटरेशन को बदल देता है, कंपाइलेशन को छोड़ देता है, सभी कॉन्फ़िगरेशन की गड़बड़ियों को रोक देता है, और .json फ़ाइल के आउटपुट को मेज़र करने की सुविधा को बंद कर देता है. (Ib51b4, b/175149857)

    Gradle कमांड लाइन पर:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    build.gradle में:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

गड़बड़ियां ठीक की गईं

  • StartupTimingMetric को MacrobenchmarkScope.startActivityAndWait() से लॉन्च करने के लिए, मेज़र की गई गतिविधियों की ज़रूरत नहीं होगी. इसका मतलब है कि मेट्रिक, सूचनाओं, Context.startActivity(), इन-ऐप्लिकेशन गतिविधि के आधार पर नेविगेशन या शेल कमांड से लॉन्च को शामिल कर सकती है. (Ia2de6, b/245414235)
  • फ़्रेम का पता लगाने की सटीक जानकारी को कम करके, startActivityAndWait को एमुलेटर पर लॉन्च पूरा होने का इंतज़ार करते समय टाइम आउट होने की समस्या को ठीक किया गया. (Ibe2c6, b/244594339, b/228946895)

वर्शन 1.2.0-alpha03

7 सितंबर, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 रिलीज़ हो गया है. 1.2.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • BenchmarkState को BenchmarkRule / JUnit4 से अलग करके इस्तेमाल करने के लिए, एक्सपेरिमेंट के तौर पर एपीआई जोड़े गए हैं. (Id478f, b/228489614)

गड़बड़ियां ठीक की गईं

  • startActivityAndWait के लिए Leanback फ़ॉलबैक जोड़ा गया. (01ed77, b/242899915)

वर्शन 1.2.0-alpha02

24 अगस्त, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha02 रिलीज़ हो गया है. 1.2.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • MacrobenchmarkScope.killProcess() के लिए डिफ़ॉल्ट रूप से am force stop पर सेट होता है. भले ही, डिवाइस रूट किया गया हो. हालांकि, बेसलाइन प्रोफ़ाइल जनरेट करने के दौरान ऐसा नहीं होता. इसे वैकल्पिक बूलियन आर्ग्युमेंट से बदला जा सकता है. (02cce9, b/241214097)

गड़बड़ियां ठीक की गईं

  • सिस्टम ऐप्लिकेशन के लिए, बेसलाइन प्रोफ़ाइल जनरेट करने की सुविधा. (I900b8, b/241214097)
  • अनरूट किए गए डिवाइसों पर ओडीपीएम पावर मेट्रिक की जांच करने से जुड़ी सहायता. (a38c78, b/229623230)

वर्शन 1.2.0-alpha01

27 जुलाई, 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 रिलीज़ हो गया है. 1.2.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नया ट्रेसिंग-परफ़ेटो-कॉमन कॉम्पोनेंट, टूलिंग की मदद से इसे दिखाने वाले ऐप्लिकेशन में Perfetto SDK टूल ट्रेस करने की सुविधा चालू करता है (I2cc7f)
  • androidx.benchmark.enabledRules इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ा गया है, ताकि सिर्फ़ बेंचमार्क या सिर्फ़ बेसलाइन प्रोफ़ाइल जनरेशन के लिए, मैक्रोबेंचमार्क चलाने को फ़िल्टर किया जा सके. सिर्फ़ एक तरह का टेस्ट चलाने के लिए, 'Macrobenchmark' या 'BaselineProfile' पास करें. उदाहरण के लिए, जब किसी एमुलेटर पर सिर्फ़ BaselineProfiles जनरेट किया जा रहा हो. कॉमा लगाकर अलग की गई सूची भी इस्तेमाल की जा सकती है. (I756b7, b/230371561)

    उदाहरण के लिए, आपके मैक्रोबेंचमार्क की build.gradle में:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    इसके अलावा, Gradle कमांड लाइन से भी ऐसा किया जा सकता है:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

एपीआई में हुए बदलाव

  • बेंचमार्क में ऊर्जा और पावर टास्क को मेज़र करने के लिए, नया PowerMetric जोड़ा गया. (I9f39b, b/220183779)
  • प्रोफ़ाइल को रीसेट करने और कंपाइल करने की प्रक्रिया को स्किप करने के लिए, नया कंपाइलेशन मोड CompilationMode.Ignore जोड़ा गया. (Ibbcf8, b/230453509)
  • पैकेज के नाम (If7338, b/220146561) के हिसाब से आउटपुट फ़ाइल को फ़िल्टर करने के लिए, BaselineProfileRule#collectBaselineProfile में एक नया पैरामीटर जोड़ा गया
  • इससे डेवलपर, डिवाइस की बैटरी खर्च होने की दर को मेज़र कर सकता है. (I6a6cb)
  • MacrobenchmarkScope में शेडर की कैश मेमोरी को मिटाने की सुविधा जोड़ी गई. (I32122)
  • इससे डेवलपर, मेट्रिक टाइप के डिसप्ले को कॉन्फ़िगर कर सकता है. साथ ही, अपनी पसंद के सबसिस्टम कैटगरी की जानकारी दे सकता है. (I810c9)
  • पहले, अगर किसी ऐसे डिवाइस पर जांच की जाती थी जो काम नहीं करता, तो जांच के नतीजे के तौर पर UnsupportedOperationException दिखता था. अब यूओई सिर्फ़ तब होता है, जब मेट्रिक का इस्तेमाल ऐसे डिवाइस पर किया जाता है जो इस पर काम नहीं करता (जैसे: PowerMetric.configure). (I5cf20, b/227229375)
  • मैक्रोबेंचमार्क में हर सिस्टम कैटगरी में कुल पावर और ऊर्जा को मेज़र करने के लिए, TotalPowerMetric और TotalEnergyMetric जोड़े गए हैं. (I3b26b, b/224557371)

गड़बड़ियां ठीक की गईं

  • बिना रूट किए गए बिल्ड पर, हर मैक्रोबेंचमार्क के बीच कंपाइल किए गए तरीके सही तरीके से रीसेट नहीं हो रहे थे. इस समस्या को ठीक कर दिया गया है. माइक्रोबेंचमार्क के लिए, हर बार APK को फिर से इंस्टॉल करना पड़ता है. इससे हर माइक्रोबेंचमार्क के लिए, ऐप्लिकेशन का डेटा मिट जाता है. (I31c74, b/230665435)
  • एपीआई 21/22 (If7fd6, b/227509388, b/227510293, b/227512788) पर ट्रेस रिकॉर्डिंग के क्रैश होने की समस्या ठीक की गई
  • स्टार्टअप मैक्रोबेंचमार्क में 'कोई भी मेट्रिक पढ़ने में असमर्थ' को ठीक करने के लिए ओवरहॉल गतिविधि लॉन्च पूरी पहचान. (Ia517c)

वर्शन 1.1.1

वर्शन 1.1.1

9 नवंबर, 2022

androidx.benchmark:benchmark-*:1.1.1 रिलीज़ हो गया है. वर्शन 1.1.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • android.system.ErrnoException: open failed: EACCES से जुड़ी समस्या को ठीक करता है, जो Android11 (एपीआई 30) और उसके बाद के वर्शन वाले कुछ डिवाइसों पर आती है. यह 1.2.0-alpha01 में मौजूद किसी समस्या को ठीक करने का तरीका है. (aosp/2072249)

वर्शन 1.1.0

वर्शन 1.1.0

15 जून, 2022

androidx.benchmark:benchmark-*:1.1.0 रिलीज़ हो गया है. 1.1.0 वर्शन में ये बदलाव शामिल हैं.

  • यह वर्शन androidx.benchmark:benchmark-*:1.1.0-rc03 जैसा ही है.

1.0.0 के बाद किए गए अहम बदलाव

वर्शन 1.1.0-rc03

1 जून, 2022

androidx.benchmark:benchmark-*:1.1.0-rc03 रिलीज़ हो गया है. 1.1.0-rc03 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हर बेंचमार्क के दौरान, टारगेट पैकेज को फिर से इंस्टॉल करने से बचें. ( aosp/​​2093027, b/231976084)

  • pressHome() से 300ms की देरी हटाएं. (aosp/2086030, b/231322975)

  • हुड में इस्तेमाल किए गए शेल कमांड ऑप्टिमाइज़ करके, मैक्रोबेंचमार्क इटरेशन की स्पीड को बेहतर बनाएं. (aosp/2086023, b/231323582)

  • मैक्रोबेंचमार्क की मदद से बेसलाइन प्रोफ़ाइल जनरेट करते समय, मैनेज किए जा रहे Gradle डिवाइसों के लिए सहायता. (aosp/2062228, b/228926421)

वर्शन 1.1.0-rc02

11 मई, 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 रिलीज़ हो गया है. वर्शन 1.1.0-rc02 में ये कमिट हैं.

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

गड़बड़ियां ठीक की गईं/कार्रवाई के तरीके में बदलाव

  • मैक्रो-बेंचमार्क के बीच, ऐप्लिकेशन कंपाइलेशन को सही तरीके से रीसेट न होने और बिना रूट किए गए बिल्ड पर रीसेट न होने की समस्या को ठीक किया गया. इससे कई मामलों में सुधार होता है. इनमें, एक से ज़्यादा टेस्ट चलाने पर CompilationMode के मेज़रमेंट पर बहुत कम या कोई असर नहीं पड़ता. इस समस्या को हल करने के लिए, टारगेट ऐप्लिकेशन अब हर टेस्ट के तरीके को पूरी तरह से फिर से इंस्टॉल कर रहा है. इससे हर मैक्रोबेंचमार्क के बीच ऐप्लिकेशन का डेटा मिट जाएगा. (I31c74, b/230665435)

  • इससे ऐप्लिकेशन, टेस्ट से पहले स्टेटस सेट अप नहीं कर पाते. इसलिए, अब कंपाइलेशन / फिर से इंस्टॉल करने की प्रोसेस को छोड़ा जा सकता है, ताकि इस समस्या को हल किया जा सके. उदाहरण के लिए, शेल कमांड cmd package compile -f -m speed <package> की मदद से टारगेट को पूरी तरह से कंपाइल किया जा सकता है. इसके बाद, macrobenchmark के कंपाइलेशन चरण को बायपास किया जा सकता है.

    उदाहरण के लिए, आपके मैक्रोबेंचमार्क के build.gradle में:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    इसके अलावा, Gradle कमांड लाइन से भी ऐसा किया जा सकता है:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • androidx.benchmark.enabledRules इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़कर, मैक्रोबेंचमार्क और बेसलाइन प्रोफ़ाइल जनरेट करने वाले टेस्ट के बीच मॉड्यूल शेयर करने की सुविधा जोड़ी गई. सिर्फ़ एक तरह का टेस्ट चलाने के लिए, 'Macrobenchmark' या 'BaselineProfile' पास करें. उदाहरण के लिए, किसी एमुलेटर पर BaselineProfiles जनरेट करते समय. (I756b7, b/230371561)

    उदाहरण के लिए, आपके मैक्रोबेंचमार्क की build.gradle में:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    इसके अलावा, Gradle कमांड लाइन से भी ऐसा किया जा सकता है:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

वर्शन 1.1.0-rc01

20 अप्रैल, 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 रिलीज़ हो गया है. 1.1.0-rc01 वर्शन में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Android Studio में बेसलाइन प्रोफ़ाइल आउटपुट लिंक, अब एक यूनीक फ़ाइल नाम का इस्तेमाल करते हैं. इस तरह, आउटपुट में हमेशा BaselineProfileRule का इस्तेमाल करने से मिले नए नतीजे दिखते हैं. ( aosp/2057008, b/228203086 )

वर्शन 1.1.0-beta06

6 अप्रैल, 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 रिलीज़ हो गया है. 1.1.0-beta06 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एपीआई 21/22 पर, ट्रेस रिकॉर्डिंग क्रैश होने की समस्या को ठीक करना (If7fd6, b/227509388)
  • स्टार्टअप मैक्रोबेंचमार्क में 'कोई भी मेट्रिक नहीं पढ़ी जा सकी' अपवाद को ठीक करने के लिए, गतिविधि लॉन्च होने की जानकारी का पता लगाने की सुविधा को बेहतर बनाया गया है. (Ia517c)
  • CompilationMode.None() का इस्तेमाल करने पर, मैक्रोबेंचमार्क के लिए स्टार्टअप मेट्रिक ठीक करें. इस बदलाव से पहले, CompilationMode.Partial() Compilation.None() से धीमा दिखता था. (611ac9).

वर्शन 1.1.0-beta05

23 मार्च, 2022

androidx.benchmark:benchmark-*:1.1.0-beta05 रिलीज़ हो गया है. 1.1.0-beta05 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • CompilationMode.None का इस्तेमाल करते समय, प्रोफ़ाइल इंस्टॉलेशन को छोड़ने के बाद पैकेज को बंद करें. (aosp/1991373)
  • StartupMode.COLD का इस्तेमाल करते समय, Macrobenchmarks के स्टार्टअप मेट्रिक इकट्ठा न कर पाने की समस्या को ठीक किया गया है. (aosp/2012227 b/218668335)

वर्शन 1.1.0-beta04

23 फ़रवरी, 2022

androidx.benchmark:benchmark-*:1.1.0-beta04 रिलीज़ हो गया है. 1.1.0-beta04 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Android 10 पर मेट्रिक न दिखने की समस्या को ठीक किया गया. साथ ही, NoSuchElementException की वजह से, प्रोसेस के नाम ट्रैस में सही तरीके से कैप्चर न होने की समस्या को भी ठीक किया गया. (Ib4c17, b/218668335)

  • Q (एपीआई 29) और इसके बाद के वर्शन पर थर्मल थ्रॉटलिंग का पता लगाने के लिए, PowerManager का इस्तेमाल करें. इससे, थर्मल थ्रॉटलिंग का पता लगाने (90 सेकंड के कूलडाउन के बाद, बेंचमार्क फिर से आज़माना) में गलत नतीजों की फ़्रीक्वेंसी काफ़ी कम हो जाती है. साथ ही, उपयोगकर्ता के बिल्ड पर बेंचमार्क की स्पीड काफ़ी बढ़ जाती है. यह सुविधा, क्लॉक के लॉक होने पर भी थ्रॉटल का पता लगाती है. ऐसा तब होता है, जब क्लॉक को डिवाइस के फ़िज़िकल एनवायरमेंट के हिसाब से बहुत ज़्यादा लॉक किया गया हो. (I9c027, b/217497678, b/131755853)

  • सैंपल की प्रोफ़ाइल को measureRepeated थ्रेड में फ़िल्टर करें, ताकि इसकी जांच आसान हो सके (Ic3e12, b/217501939)

  • कई प्रोसेस वाले ऐप्लिकेशन में, नाम वाली यूज़र इंटरफ़ेस (यूआई) सबप्रोसेस से मेट्रिक पाने की सुविधा (Ice6c0, b/215988434)

  • Android 9 (SDK टूल 28) को टारगेट करने के लिए, बेसलाइन प्रोफ़ाइल के नियमों को फ़िल्टर करें. aosp/1980331 b/216508418

  • Compilation.None() का इस्तेमाल करते समय, प्रोफ़ाइल इंस्टॉलेशन को छोड़ें. इसके अलावा, जब ऐप्लिकेशन androidx.profileinstaller और Android Gradle प्लग इन के पुराने वर्शन का इस्तेमाल कर रहा हो, तब चेतावनियों की शिकायत करें. aosp/1977029

वर्शन 1.1.0-beta03

9 फ़रवरी, 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 रिलीज़ हो गया है. 1.1.0-beta03 वर्शन में ये बदलाव शामिल हैं.

एपीआई में बदलाव

  • ऑडियो अंडररन का पता लगाने की अनुमति देने के लिए, प्रयोग के तौर पर उपलब्ध फ़्लैग के तहत मैक्रोबेंचमार्क लाइब्रेरी में AudioUnderrunMetric को जोड़ा गया (Ib5972)
  • BaselineProfileRule अब setup ब्लॉक स्वीकार नहीं करता, क्योंकि यह profileBlock की तरह ही काम करता है. (Ic7dfe, b/215536447)

    उदाहरण के लिए,

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

गड़बड़ियां ठीक की गईं

  • Studio आउटपुट (I5ae4d, b/214917025) से लिंक किए जाने पर, माइक्रोबेंच प्रोफ़ाइलर ट्रेस के अपडेट न हो पाने की समस्या को हल कर दिया गया है
  • API 23 (Ice380) पर, कंपाइलेशन शेल कमांड को रोकना
  • FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi नाम बदला गया, ताकि यह साफ़ तौर पर बताया जा सके कि ये टाइमस्टैंप नहीं, बल्कि अवधि हैं. साथ ही, प्रीफ़िक्स से मैच करने के लिए भी ऐसा किया गया है. (I0eba3, b/216337830)

वर्शन 1.1.0-beta02

26 जनवरी, 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 रिलीज़ हो गया है. 1.1.0-beta02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • माइक्रोबेंचमार्क स्टैक सैंपलिंग / मेथड ट्रेसिंग प्रोफ़ाइल के नतीजे, अब Studio आउटपुट में लिंक कर दिए गए हैं. यह किसी अन्य प्रोफ़ाइलिंग आउटपुट की तरह ही है. साथ ही, ऐलोकेशन मेट्रिक में कोई बदलाव नहीं किया जाता. (Idcb65, b/214440748, b/214253245)
  • BaselineProfileRule अब जनरेट की गई BaselineProfile टेक्स्ट फ़ाइल को खींचने के लिए, logcat और Studio आउटपुट में adb pull कमांड प्रिंट करता है. (f08811)

वर्शन 1.1.0-beta01

12 जनवरी, 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 रिलीज़ हो गया है. वर्शन 1.1.0-beta01 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • प्रोफ़ाइलर आर्ग्युमेंट चालू करने की सुविधा को अनदेखा किए जाने की समस्या को ठीक करता है. (I37373, b/210619998)
  • हटाया गया CompliationModes (I98186, b/213467659)
  • साफ़ तौर पर जानकारी देने के लिए, CompilationMode.Partial की आधारभूत प्रोफ़ाइल के आर्ग्युमेंट को सूची में बदला गया. (Id67ea)

वर्शन 1.1.0-alpha13

15 दिसंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 रिलीज़ हो गया है. 1.1.0-alpha13 वर्शन में ये बदलाव शामिल हैं.

एपीआई में बदलाव

  • Android Q (एपीआई 29 और उसके बाद के वर्शन) पर, माइक्रो-बेंच के आउटपुट में कम ओवरहेड सिस्टम ट्रैकिंग जोड़ें. ध्यान दें कि फ़िलहाल, यह नतीजों पर असर डालने से बचने के लिए, android.os.Trace या androidx.tracing Jetpack API के ज़रिए कस्टम ट्रैकिंग कैप्चर नहीं करता. यह ट्रैकिंग, अस्थिरता का पता लगाने में मददगार हो सकती है. खास तौर पर, बेंचमार्क के बाहर के सोर्स से. (I298be, b/205636583, b/145598917)
  • CompilationModes को तीन क्लास में साफ़ तौर पर बताएं - पूरा, कोई नहीं, आंशिक. पहले, कंपाइलेशन आर्ग्युमेंट (जिन्हें अब हम लागू करने की जानकारी के तौर पर देखते हैं) और सुविधाओं के हिसाब से, इनका नाम अलग-अलग रखा जाता था. इससे, प्लैटफ़ॉर्म के सभी वर्शन में, बदलावों के असर, संभावित कॉम्बिनेशन, और व्यवहार के बारे में ज़्यादा साफ़ तौर पर पता चलता है. (I3d7bf, b/207132597)
  • सेटअप और मेज़रमेंट, अब हमेशा एक साथ और क्रम में होते हैं. अब पैकेज के नाम और इटरेशन के बारे में क्वेरी की जा सकती है. हालांकि, कुछ वॉर्मअप की स्थितियों में, इटरेशन की वैल्यू null हो सकती है. (Id3b68, b/208357448, b/208369635)

गड़बड़ियां ठीक की गईं

  • CompilationMode.Speed को गलत तरीके से None के तौर पर मार्क किया गया (I01137)

वर्शन 1.1.0-alpha12

17 नवंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha12 रिलीज़ हो गया है. वर्शन 1.1.0-alpha12 में ये कमियां हैं.

नई सुविधाएं

  • कस्टम ट्रैक पर आधारित समय मेज़रमेंट के लिए, एक्सपेरिमेंटल TraceSectionMetric जोड़ें. (I99db1, b/204572664)

गड़बड़ियां ठीक की गईं

  • हर बार डिवाइस को चालू करें, ताकि यह पक्का किया जा सके कि यूज़र इंटरफ़ेस की जांच की जा सके - इसके लिए, लॉकस्क्रीन की सुविधा बंद होनी चाहिए. (Ibfa28, b/180963442)
  • एमुलेटर और बिना रूट वाले डिवाइसों पर, स्टैक सैंपलिंग प्रोफ़ाइलिंग मोड में होने वाली कई क्रैश की समस्याएं ठीक की गई हैं (Icdbda, b/202719335)
  • हर बार दोहराए जाने वाले एलिमेंट के आखिर में 0.5 सेकंड की स्लीप हटा दी गई है - अगर आपको इस बदलाव के बाद मेट्रिक नहीं दिखती हैं, तो कृपया गड़बड़ी की शिकायत करें. (Iff6aa)
  • ट्रेसिंग के दौरान डेटा के कम होने की संभावना और मेमोरी ओवरहेड कम होने की संभावना कम होती है (Id2544, b/199324831, b/204448861)
  • कॉम्पैक्ट शेड्यूल स्टोरेज फ़ॉर्मैट में स्विच करके, ट्रेस साइज़ को ~40% तक कम करें. (Id5fb6, b/199324831)
  • स्टार्टअप मेट्रिक को लागू करने की प्रोसेस को हमेशा रेंडर थ्रेड के आखिर में खत्म किया जाता है. यह सभी प्लैटफ़ॉर्म के वर्शन में एक जैसा रहेगा. साथ ही, इन-ऐप्लिकेशन मेज़रमेंट से ज़्यादा मिलता-जुलता होगा. (Ic6b55)

वर्शन 1.1.0-alpha11

3 नवंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 रिलीज़ हो गया है. 1.1.0-alpha11 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Macrobenchmark में अब 23 का minSdkVersion है. (If2655)
  • प्रयोग के तौर पर एक नया BaselineProfileRule जोड़ा गया है. यह ऐप्लिकेशन के उपयोगकर्ता के सफ़र के अहम पड़ावों के लिए, बेसलाइन प्रोफ़ाइलें जनरेट कर सकता है. ज़्यादा जानकारी के लिए, यहां दिया गया दस्तावेज़ देखें. (Ibbefa, b/203692160)
  • measureRepeated इंटरफ़ेस वैरिएंट को हटाता है. इसे java कॉलर के लिए जोड़ा गया था, क्योंकि इससे तरीके को पूरा करने/समस्या को हल करने में समस्या आती थी. Java कॉलर को फिर से measureRepeated से Unit.Instance दिखाना होगा. अगर आपको इससे कोई परेशानी हो रही है, तो कृपया गड़बड़ी की शिकायत करें. हम आने वाले वर्शन में इस पर फिर से विचार कर सकते हैं. (Ifb23e, b/204331495)

वर्शन 1.1.0-alpha10

27 अक्टूबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 रिलीज़ हो गया है. 1.1.0-alpha10 वर्शन में ये बदलाव शामिल हैं.

एपीआई में बदलाव

  • StartupTimingMetric को बैकपोर्ट करें, ताकि यह एपीआई 23 के साथ काम कर सके. इस नए तरीके से, reportFullyDrawn() को बेहतर तरीके से मैनेज किया जाता है, ताकि संबंधित कॉन्टेंट रेंडर होने तक इंतज़ार किया जा सके. (If3ac9, b/183129298)
  • Java कॉलर के लिए, MacrobenchmarkScope के कई तरीकों में JvmOverloads जोड़ा गया. (I644fe, b/184546459)
  • MacrobenchmarkRule.measureRepeated फ़ंक्शन का विकल्प दें, जो Java भाषा में, आइडिओमैटिक इस्तेमाल के लिए Consumer<MacrobenchmarkScope> का इस्तेमाल करता है. (If74ab, b/184546459)

गड़बड़ियां ठीक की गईं

  • ट्रेस जल्दी शुरू न होने और मेट्रिक डेटा मौजूद न होने की समस्या को ठीक करना. इससे, लाइब्रेरी की वजह से होने वाले "बेंचमार्क के दौरान कोई भी मेट्रिक नहीं पढ़ी जा सकी" अपवाद ठीक हो जाएंगे. (I6dfcb, b/193827052, b/200302931)
  • FrameNegativeSlack का नाम बदलकर FrameOverrun कर दिया गया है, ताकि इसका मतलब साफ़ तौर पर बताया जा सके - फ़्रेम अपने टाइम बजट से कितना ज़्यादा चला. (I6c2aa, b/203008701)

वर्शन 1.1.0-alpha09

13 अक्टूबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha09 रिलीज़ हो गया है. 1.1.0-alpha09 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एपीआई 31/S+ पर, रूट किए बिना कर्नेल पेज कैश को हटाने की सुविधा जोड़ी गई है. इससे StartupMode.COLD लॉन्च की सटीकता बढ़ेगी. (Iecfdb, b/200160030)

वर्शन 1.1.0-alpha08

29 सितंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha08 रिलीज़ हो गया है. वर्शन 1.1.0-alpha08 में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • एपीआई 23 पर वापस जाने के लिए, स्क्रोलिंग मैक्रोबेंचमार्क चालू करना (If39c2, b/183129298)
  • यूज़र इंटरफ़ेस (यूआई) और JSON आउटपुट में, सैंपल वाली नई तरह की मेट्रिक जोड़ी गई है. यह हर बार सैंपल लेने पर, कई सैंपल के प्रतिशत पर फ़ोकस करती है. (I56247, b/199940612)
  • सभी बेंचमार्क लाइब्रेरी में, फ़्लोटिंग पॉइंट मेट्रिक पर स्विच करें. ये मेट्रिक, Studio के यूज़र इंटरफ़ेस (यूआई) में काटी गई होती हैं. (I69249, b/197008210)

वर्शन 1.1.0-alpha07

1 सितंबर, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha07 रिलीज़ हो गया है. 1.1.0-alpha07 वर्शन में ये बदलाव शामिल हैं.

एपीआई में बदलाव

  • आने वाले समय में काम करने वाले सबसे कम एपीआई लेवल को दिखाने के लिए, कम से कम एपीआई लेवल को 21 पर सेट किया गया है. फ़िलहाल, काम करने वाले मौजूदा कम से कम एपीआई को ज़रूरी API() के ज़रिए बताया जाता रहेगा. साथ ही, यह मौजूदा समय में 29 (I440d6, b/183129298) है

गड़बड़ियां ठीक की गईं

  • ProfileInstaller को ठीक करता है, ताकि बेसलाइन प्रोफ़ाइल का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, CompilationMode.BaselineProfile का इस्तेमाल करके मैक्रोस्टैंड चलाना आसान हो गया हो. (I42657, b/196074999) ध्यान दें: इसके लिए, androidx.profileinstaller:profileinstaller:1.1.0-alpha04 या उससे ज़्यादा के वर्शन पर भी अपडेट करना ज़रूरी है.
  • StartupMode.COLD + CompilationMode.None मानदंड अब ज़्यादा स्थिर हैं. (I770cd, b/196074999)

वर्शन 1.1.0-alpha06

18 अगस्त, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha06 रिलीज़ हो गया है. 1.1.0-alpha06 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • स्थानीय तौर पर टेस्ट करने/प्रोफ़ाइल करने के दौरान, दोहराए जाने की संख्या को मैन्युअल तरीके से बदलने की अनुमति देने के लिए, androidx.benchmark.iterations इंस्ट्रूमेंटेशन आर्ग्युमेंट जोड़ा गया. (6188be, b/194137879)

गड़बड़ियां ठीक की गईं

  • एपीआई 29 और उसके बाद के वर्शन पर, सैंपलिंग प्रोफ़ाइलर के तौर पर Simpleperf का इस्तेमाल शुरू किया गया. (Ic4b34, b/158303822)

आम समस्याएं

  • CompilationMode.BaselineProfile पर अभी काम जारी है. इस प्रोफ़ाइल का इस्तेमाल यह तय करने के लिए न करें कि फ़िलहाल कोई प्रोफ़ाइल कितनी अच्छी है.

वर्शन 1.1.0-alpha05

4 अगस्त, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha05 रिलीज़ हो गया है. वर्शन 1.1.0-alpha05 में ये कमियां हैं.

1.1.0-alpha04 को रिलीज़ से पहले ही रद्द कर दिया गया था. इसकी वजह, ऐप्लिकेशन के अचानक क्रैश होने की समस्या थी. b/193827052

एपीआई में हुए बदलाव

  • am start के ज़रिए लॉन्च को शुरू करने के लिए, startActivityAndWait को स्विच किया गया है. इससे, हर मेज़रमेंट के दोहराव का समय करीब पांच सेकंड कम हो जाता है. हालांकि, अब इंटेंट पार्सलबल काम नहीं करेंगे. (I5a6f5, b/192009149

गड़बड़ियां ठीक की गईं

  • थर्मल थ्रॉटल का पता लगाने की सुविधा को कम करें. साथ ही, अगर थ्रॉटल का पता अक्सर चलता है, तो बेसलाइन को फिर से कैलकुलेट करें. (I7327b)
  • Android S बीटा (Ib60cc, b/193260119) पर काम करने के लिए, FrameTimingMetric को ठीक करता है
  • CompilationMode.BaselineProfile को बेहतर तरीके से काम करने में मदद करने के लिए, टारगेट किए गए ऐप्लिकेशन को ज़बरदस्ती बंद होने की स्थिति से बाहर निकालने के लिए, EmptyActivity का इस्तेमाल करें. (Id7cac, b/192084204)
  • प्लैटफ़ॉर्म स्टैंडर्ड से मैच करने के लिए, ट्रेस फ़ाइल एक्सटेंशन को .perfetto-trace में बदला गया. (I4c236, b/174663039)
  • StartupTimingMetric, आपके ऐप्लिकेशन की रेंडरिंग पूरी होने में लगने वाले समय को मापने के लिए "fulldranMs" मेट्रिक का आउटपुट देती है. अपने ऐप्लिकेशन के लिए यह मेट्रिक तय करने के लिए, ऐक्टिविटी.reportFullyDrawn को तब कॉल करें, जब आपका शुरुआती कॉन्टेंट तैयार हो, जैसे कि जब आपकी सूची के शुरुआती आइटम DB या नेटवर्क से लोड हों. (ComponentActivity पर बिल्ड वर्शन की जांच किए बिना, reportFullyDrawn तरीका उपलब्ध है). ध्यान दें कि मेट्रिक को कैप्चर करने के लिए आपका टेस्ट काफ़ी समय तक चलना चाहिए (startActivityAndकरीब, reportFullyDrawn का इंतज़ार नहीं करता). (If1141, b/179176560)
  • 50+ मि॰से॰ से ज़्यादा ट्रेस में Ui मेटाडेटा जोड़ने की लागत कम करें (Ic8390, b/193923003)
  • ट्रेसिंग रोकने से पोलिंग की फ़्रीक्वेंसी बहुत ज़्यादा बढ़ गई है. इससे, स्टार्टअप बेंचमार्क रनटाइम 30+% तक कम हो सकता है (Idfbc1, b/193723768)

वर्शन 1.1.0-alpha03

16 जून, 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 रिलीज़ हो गया है. वर्शन 1.1.0-alpha03 में ये कमियां हैं.

नई सुविधाएं

गड़बड़ियां ठीक की गईं

  • बेंचमार्क गड़बड़ियों को दबाने के लिए, Gradle के सैंपल कोड को अपडेट किया गया है. अब इसमें ऐसे एपीआई का इस्तेमाल किया जा सकता है जिसे बंद नहीं किया गया है. साथ ही, यह .gradle.kts के उपयोगकर्ताओं के लिए भी काम करता है.

    उदाहरण के लिए,

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

वर्शन 1.1.0-alpha02

18 मई, 2021

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

androidx.benchmark:benchmark-*:1.1.0-alpha02 रिलीज़ हो गया है. 1.1.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

मैक्रोबेंचमार्क आर्टफ़ैक्ट जोड़े गए (androidx.benchmark:benchmark-macro-junit4 और androidx.benchmark:benchmark-macro)

  • अपने ऐप्लिकेशन से स्टार्टअप, स्क्रोलिंग/ऐनिमेशन की परफ़ॉर्मेंस मेट्रिक को स्थानीय तौर पर या सीआई में कैप्चर करें
  • Android Studio में जाकर, ट्रेस कैप्चर करना और उनकी जांच करना

गड़बड़ियां ठीक की गईं

  • Android 12 पर आउटपुट डायरेक्ट्री के लिए, शेल की अनुमतियों से जुड़ी समस्या को हल करने का तरीका (ध्यान दें - जिन डिवाइसों पर समस्या आ रही है उन पर आउटपुट फ़ाइलें कैप्चर करना जारी रखने के लिए, Android Gradle प्लग इन को 7.0.0 canary और Android Studio को Arctic Fox (2020.3.1) पर अपडेट करना पड़ सकता है). (Icb039)
  • BenchmarkPlugin में कॉन्फ़िगरेशन को कैश मेमोरी में सेव करने की सुविधा जोड़ी गई (6be1c1, b/159804788)
  • आसानी से समझ आने वाला फ़ाइल आउटपुट - डिफ़ॉल्ट रूप से चालू होता है. यह ऐसी डायरेक्ट्री में होता है जिसमें requestLegacyExternalStorage=true (8b5a4d, b/172376362) की ज़रूरत नहीं होती
  • लाइब्रेरी में, प्लैटफ़ॉर्म के उन वर्शन पर JIT थ्रेड न मिलने के बारे में, logcat चेतावनियां प्रिंट करने की समस्या को ठीक किया गया है जहां यह मौजूद नहीं है. (I9cc63, b/161847393)
  • डिवाइस पर किताब पढ़ने की फ़्रीक्वेंसी की सीमा से जुड़ी समस्या को ठीक करना. (I55c7a)

वर्शन 1.1.0-alpha01

10 जून, 2020

androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01, और androidx.benchmark:benchmark-junit4:1.1.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.1.0-alpha01 में ये कमियां हैं.

1.1 के वर्शन की नई सुविधाएं

  • आवंटन मेट्रिक - मानदंड अब वॉर्मअप और समय के बाद, ऐलोकेशन की गिनती को कैप्चर करते हुए एक और चरण चलाते हैं. ऐलोकेशन की वजह से, प्लैटफ़ॉर्म के पुराने वर्शन पर परफ़ॉर्मेंस से जुड़ी समस्याएं आ सकती हैं. जैसे, O वर्शन में 140ns की परफ़ॉर्मेंस, M वर्शन में 8ns हो गई. यह मेज़रमेंट, Nexus5X पर लॉक किए गए क्लॉक के साथ किया गया था. यह मेट्रिक, Android Studio कंसोल आउटपुट के साथ-साथ,
  • प्रोफ़ाइलिंग से जुड़ी सहायता - अब आपके पास बेंचमार्क रन के लिए प्रोफ़ाइलिंग डेटा कैप्चर करने का विकल्प है. इससे यह पता लगाया जा सकता है कि आपका कोड धीरे क्यों चल रहा है. बेंचमार्क, ART से मेथड ट्रैकिंग या मेथड सैंपलिंग में से किसी एक को कैप्चर करने की सुविधा देता है. फ़ाइल > खोलें का इस्तेमाल करके, Android Studio में प्रोफ़ाइलर की मदद से इन फ़ाइलों की जांच की जा सकती है.
  • बेंचमार्क Gradle प्लग इन अब आसान सेटअप के लिए डिफ़ॉल्ट सेटिंग उपलब्ध कराता है:
    • testBuildType को डिफ़ॉल्ट रूप से रिलीज़ करने के लिए सेट किया गया है, ताकि पहले से मौजूद कोड कवरेज के साथ डिपेंडेंसी का इस्तेमाल न किया जा सके. रिलीज़ के लिए इस्तेमाल होने वाले buildType को डिफ़ॉल्ट buildType के तौर पर भी कॉन्फ़िगर किया जाता है. इससे Android Studio, पहली बार किसी प्रोजेक्ट को खोलने पर, सही बिल्ड वैरिएंट को अपने-आप चुन सकता है. (b/138808399)
    • signingConfig.debug का इस्तेमाल, डिफ़ॉल्ट साइनिंग कॉन्फ़िगरेशन (b/153583269) के तौर पर किया जाता है

** गड़बड़ियां ठीक की गईं **

  • हमने वॉर्मअप ट्रांज़िशन के ओवरहेड को काफ़ी कम कर दिया है. इसमें हर मानदंड के लिए पहली मेज़रमेंट, दूसरे मानदंडों की तुलना में कृत्रिम रूप से ज़्यादा थी. यह समस्या बहुत छोटे मानदंडों (1 माइक्रोसेकंड या उससे कम) में ज़्यादा साफ़ तौर पर दिखी. (b/142058671)
  • कमांड लाइन से चलते समय, हर बेंचमार्क के लिए, प्रिंट की गई InstrumentationResultParser गड़बड़ी को ठीक किया गया. (I64988, b/154248456)

आम समस्याएं

  • कमांड लाइन, बेंचमार्क के ग्रेडल इस्तेमाल से नतीजे सीधे तौर पर प्रिंट नहीं होते. इस समस्या को हल करने के लिए, Studio में जाकर या नतीजों के लिए JSON आउटपुट फ़ाइल को पार्स करके, ऐसा किया जा सकता है.
  • बेंचमार्क रिपोर्टिंग, उन डिवाइसों से रिपोर्ट नहीं खींच पाती जिनमें “android” या “download” (बड़े और छोटे अक्षरों में अंतर नहीं किया जाता) पर खत्म होने वाला applicationId वाला ऐप्लिकेशन इंस्टॉल है. इस समस्या पर कार्रवाई करने वाले उपयोगकर्ताओं को Android Gradle प्लग इन को 4.2-alpha01 या इसके बाद वाले वर्शन में अपग्रेड करना चाहिए.

वर्शन 1.0.0

बेंचमार्क वर्शन 1.0.0

20 नवंबर, 2019

androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0, और androidx.benchmark:benchmark-junit4:1.0.0 को 1.0.0-rc01 से बिना किसी बदलाव के रिलीज़ किया गया है. 1.0.0 वर्शन में ये बदलाव शामिल हैं.

1.0.0 के मुख्य फ़ीचर

बेंचमार्क लाइब्रेरी की मदद से, ऐप्लिकेशन कोड की परफ़ॉर्मेंस के बेंचमार्क लिखे जा सकते हैं और तुरंत नतीजे मिल सकते हैं.

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

मुख्य सुविधाएं:

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

वर्शन 1.0.0-rc01

23 अक्टूबर, 2019

androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01, और androidx.benchmark:benchmark-junit4:1.0.0-rc01 रिलीज़ हो गए हैं. 1.0.0-rc01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • बेंचमार्क में systrace ट्रैकिंग जोड़ी गई

गड़बड़ियां ठीक की गईं

  • मेट्रिक में होने वाली अस्थिरता की समस्या को ठीक किया गया. इस समस्या की वजह से, प्राथमिकता हटाने की वजह से, JIT, वॉर्म अप से पहले पूरा नहीं होता था (b/140773023)
  • Android Gradle प्लग इन 3.5 और 3.6 में एक जैसी JSON आउटपुट डायरेक्ट्री

वर्शन 1.0.0-beta01

9 अक्टूबर, 2019

androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01, और androidx.benchmark:benchmark-junit4:1.0.0-beta01 रिलीज़ हुए हैं. 1.0.0-beta01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • हर वॉर्मअप से पहले, गै़रबेज कलेक्शन चलाएं, ताकि एक बेंचमार्क से दूसरे बेंचमार्क में मेमोरी का दबाव कम हो सके (b/140895105)

गड़बड़ियां ठीक की गईं

  • androidx.annotation:android-experimental-lint डिपेंडेंसी जोड़ी गई है, ताकि एक्सपेरिमेंटल एपीआई का इस्तेमाल न करने पर, Java कोड सही तरीके से लिंट गड़बड़ियां दिखाए. यह ठीक वैसा ही है जैसा Kotlin कॉलर के लिए, Kotlin एक्सपेरिमेंटल एनोटेशन से मिलता है.
  • अब Android Gradle प्लग इन 3.6 में, आउटपुट के लिए additionalTestOutputDir इंस्ट्रूमेंटेशन आर्ग्युमेंट के इस्तेमाल का सही तरीके से पता चलता है. इससे यह पता चलता है कि AGP, डेटा कॉपी को कब हैंडल करेगा.
  • -1 को सही तरीके से प्रिंट करने के लिए, JSON में क्लॉक फ़्रीक्वेंसी की गड़बड़ी को ठीक करें (b/141945670).

वर्शन 1.0.0-alpha06

18 सितंबर, 2019

androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06, और androidx.benchmark:benchmark-junit4:1.0.0-alpha06 रिलीज़ हो गए हैं. 1.0.0-alpha06 वर्शन में ये कमिट शामिल हैं.

नई सुविधाएं

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

एपीआई में हुए बदलाव

  • एक्सपेरिमेंट के तौर पर उपलब्ध एनोटेशन ExperimentalAnnotationReport को अब सार्वजनिक कर दिया गया है. प्रयोग के तौर पर इस्तेमाल किए जा रहे BudgetState#report एपीआई के इस्तेमाल के लिए, अब इस एनोटेशन की ज़रूरत है

वर्शन 1.0.0-alpha05

5 सितंबर, 2019

androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05, और androidx.benchmark:benchmark-junit4:1.0.0-alpha05 रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

एपीआई में किए गए बदलाव

  • BenchmarkState.reportData एपीआई को अब एक्सपेरिमेंट के तौर पर मार्क किया गया है

गड़बड़ियां ठीक की गईं

  • घड़ी को लॉक करने वाली स्क्रिप्ट से जुड़ी समस्या को ठीक किया गया. यह समस्या उन डिवाइसों पर आती थी जिनमें cut या expr शेल की सुविधाएं मौजूद नहीं थीं.
  • ./gradlew lockClocks टास्क से जुड़ी समस्या ठीक कर दी गई है. यह उन डिवाइसों पर अटकने वाला था जो su उपयोगिता के पुराने वर्शन से रूट किए हुए थे और जो -c फ़्लैग के साथ काम नहीं करते थे.

वर्शन 1.0.0-alpha04

7 अगस्त, 2019

androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04, और androidx.benchmark:benchmark-junit4:1.0.0-alpha04 रिलीज़ हुए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

Gradle के बिना, बेंचमार्क लाइब्रेरी का इस्तेमाल करने का तरीका बताने वाला नया दस्तावेज़ भी जोड़ा गया है. यह तरीका, अलग-अलग बिल्ड सिस्टम (जैसे, Bazel या Buck) के साथ इस्तेमाल करने और सीआई में चलाने, दोनों के लिए है. ज़्यादा जानकारी के लिए, Gradle के बिना मानदंड बनाएं और कंटिन्यूअस इंटिग्रेशन में मानदंड चलाएं लेख पढ़ें.

नई सुविधाएं

  • Gradle प्लग इन
    • अब यह टेस्ट कवरेज को अपने-आप बंद कर देता है और AndroidBenchmarkRunner को डिफ़ॉल्ट रूप से सेट कर देता है (b/138374050)
    • बेंचमार्क चलाने और AGP 3.6 और उसके बाद के वर्शन का इस्तेमाल करने पर, AGP पर आधारित नई डेटा कॉपी के लिए सहायता जोड़ी गई
  • JSON फ़ॉर्मैट में जोड़ा गया
    • आउटपुट के लिए, मानदंड के हिसाब से टेस्ट चलाने में लगने वाला कुल समय (b/133147694)
    • @Parameterized नाम वाली स्ट्रिंग (उदाहरण के लिए, @Parameters(name = "size={0},depth={1}")) का इस्तेमाल करने वाले मानदंड, अब JSON आउटपुट (b/132578772) में हर मानदंड के लिए पैरामीटर के नाम और वैल्यू दिखाते हैं
  • ड्राई रन मोड (b/138785848)
    • हर बेंचमार्क लूप को सिर्फ़ एक बार चलाने के लिए, "ड्राई रन" मोड जोड़ा गया. इससे मेज़रमेंट को कैप्चर किए बिना, गड़बड़ियों/क्रैश की जांच की जा सकेगी. यह सुविधा, कई कामों में मददगार हो सकती है. उदाहरण के लिए, सबमिट करने से पहले, यह जांचने के लिए कि बेंचमार्क काम कर रहे हैं या नहीं.

एपीआई में हुए बदलाव

  • मॉड्यूल का स्ट्रक्चर बदल गया है और लाइब्रेरी को अलग-अलग हिस्सों में बांटा गया है (b/138451391)
    • benchmark:benchmark-junit4 में JUnit डिपेंडेंसी वाली क्लास शामिल हैं: AndroidBenchmarkRunner और BenchmarkRule, दोनों को androidx.benchmark.junit4 पैकेज में ले जाया गया है
    • benchmark:benchmark-common में बाकी लॉजिक शामिल होता है, जिसमें बेंचमार्कस्टेट एपीआई भी शामिल है
    • इससे, आने वाले समय में लाइब्रेरी को JUnit4 API के बिना, मानदंड के साथ काम करने की अनुमति मिलेगी
  • कॉन्फ़िगरेशन से जुड़ी चेतावनियों को अब गड़बड़ियों के तौर पर गिना जाता है. इससे, टेस्ट क्रैश हो जाएगा (b/137653596)
    • ऐसा इसलिए किया जाता है, ताकि सटीक मेज़रमेंट को बढ़ावा दिया जा सके. खास तौर पर, सीआई में
    • इंस्ट्रूमेंटेशन आर्ग्युमेंट की मदद से, इन गड़बड़ियों को चेतावनियों में बदला जा सकता है. उदाहरण के लिए: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

गड़बड़ियां ठीक की गईं

  • Q डिवाइसों पर बाहरी स्टोरेज में कॉन्टेंट लिखते समय दिखने वाली गड़बड़ियां
  • बेंचमार्क टेस्ट के दौरान, स्क्रीन बंद होने पर टेस्ट बंद होने के बजाय, स्क्रीन अपने-आप चालू हो जाती है

बाहरी योगदान

  • JSON के आउटपुट को बेहतर बनाने और स्क्रीन बंद होने से जुड़ी समस्याओं को हल करने में मदद करने के लिए, सर्गेई ज़खारोव का धन्यवाद!

वर्शन 1.0.0-alpha03

2 जुलाई, 2019

androidx.benchmark:benchmark:1.0.0-alpha03 और androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • पूरी JSON रिपोर्ट में, हर बेंचमार्क के हिसाब से थर्मल थ्रॉटलिंग की वजह से डिवाइस के बंद रहने की अवधि दिखाना

गड़बड़ियां ठीक की गईं

  • Android प्लग इन और Android ब्लॉक के बाद, Gradle प्लग इन लागू करने की ज़रूरत नहीं होगी
  • Android 10 वाले डिवाइसों पर, स्कोप वाले स्टोरेज का इस्तेमाल करके, मानदंड वाली रिपोर्ट के लिए सहायता जोड़ी गई

वर्शन 1.0.0-alpha02

6 जून, 2019

androidx.benchmark:1.0.0-alpha02 और androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट को यहां देखा जा सकता है.

ध्यान दें कि हम JSON स्कीमा को एपीआई के तौर पर इस्तेमाल कर रहे हैं. हम अन्य एपीआई की तरह ही, स्थिरता से जुड़ी उन पाबंदियों का पालन करेंगे: बीटा वर्शन में एक बार स्थिर (बहुत कम अपवादों के साथ) और फ़ाइनल रिलीज़ में ठीक किया गया. इसमें सिर्फ़ मामूली रिलीज़ में जोड़ और बड़ी रिलीज़ में बदलाव/हटाने शामिल हैं.

एपीआई में किए गए बदलाव

  • JSON स्कीमा को पूरी तरह से बदला गया है. JSON स्कीमा में सिर्फ़ कुछ और बदलाव किए जा सकते हैं:

    • आने वाले समय में अन्य मेट्रिक ग्रुप के साथ काम करने के लिए, नतीजे के ऑब्जेक्ट के स्ट्रक्चर को फिर से व्यवस्थित किया गया है (b/132713021)
    • टॉप-लेवल ऑब्जेक्ट में, टेस्ट रन के कॉन्टेक्स्ट की जानकारी जोड़ी गई है. जैसे, डिवाइस और बिल्ड की जानकारी और यह कि क्लॉक लॉक हैं या नहीं (b/132711920)
    • टाइम मेट्रिक के नाम में अब ‘ns’ है (b/132714527)
    • रिपोर्ट की गई हर मेट्रिक (ज़्यादा से ज़्यादा, औसत, कम से कम) के लिए अतिरिक्त आंकड़े जोड़े गए. साथ ही, 'नैनो' की आसानी से समझी जा सकने वाली खास जानकारी वाले आंकड़े हटा दिए गए (b/132713851)
  • एक्सएमएल आउटपुट हटाया गया (b/132714414)

  • BenchmarkState.reportData एपीआई से थर्मल थ्रॉटल डिटेक्शन हटाया गया (b/132887006)

गड़बड़ियां ठीक की गईं

  • ./gradlew lockClocks को कुछ नए ओएस वाले डिवाइसों पर चिपकने से जुड़ी समस्या को ठीक किया गया (b/133424037)
  • एमुलेटर के लिए, थ्रॉटलिंग की पहचान करने की सुविधा बंद की गई (b/132880807)

वर्शन 1.0.0-alpha01

7 मई, 2019

androidx.benchmark:benchmark:1.0.0-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट, यहां उपलब्ध हैं.