Macrobenchmark লেখা

আপনার অ্যাপের আরও বড় ব্যবহারের কেস পরীক্ষা করার জন্য Macrobenchmark লাইব্রেরি ব্যবহার করুন, যার মধ্যে অ্যাপ স্টার্টআপ এবং জটিল UI ম্যানিপুলেশন, যেমন LazyColumn স্ক্রল করা বা অ্যানিমেশন চালানো অন্তর্ভুক্ত। আপনার কোডের ছোট অংশ পরীক্ষা করতে চাইলে, Microbenchmark দেখুন। এই পৃষ্ঠায় Macrobenchmark লাইব্রেরি কীভাবে সেট-আপ করতে হয় তা দেখানো হয়েছে।

লাইব্রেরি Android Studio কনসোল এবং আরও বিবরণ সহ একটি JSON ফাইলে বেঞ্চমার্কিং ফলাফল আউটপুট করে। এটি ট্রেস ফাইলও প্রদান করে যা আপনি Android Studio-তে লোড ও বিশ্লেষণ করতে পারবেন।

কন্টিনিউয়াস ইন্টিগ্রেশনে বেঞ্চমার্ক-এ যেভাবে বর্ণনা করা হয়েছে, সেইভাবে কন্টিনিউয়াস ইন্টিগ্রেশন (CI) এনভায়রনমেন্টে Macrobenchmark লাইব্রেরি ব্যবহার করুন।

আপনি বেসলাইন প্রোফাইল তৈরি করতে Macrobenchmark ব্যবহার করতে পারেন। প্রথমে, Macrobenchmark লাইব্রেরি সেট-আপ করুন, তারপর আপনি বেসলাইন প্রোফাইল তৈরি করতে পারবেন।

Jetpack Compose-এর মাধ্যমে তৈরি করা UI টেস্ট করার জন্য Macrobenchmark হল সাজেস্ট করা টুল। আপনার Compose নোডের সাথে ইন্টার‍্যাক্ট করে এমন UI Automator টেস্ট কীভাবে লিখতে হয় তা জানতে, ইন্টারঅপারেবিলিটি দেখুন।

প্রোজেক্ট সেট-আপ

আমরা সাজেস্ট করি যে আপনি Android Studio-এর লেটেস্ট ভার্সনের সাথে Macrobenchmark ব্যবহার করুন।

Macrobenchmark মডিউল সেট-আপ করা

ম্যাক্রোবেঞ্চমার্কের জন্য একটি com.android.test মডিউল প্রয়োজন—আপনার অ্যাপ কোড থেকে আলাদা—যা আপনার অ্যাপ পরিমাপ করে এমন পরীক্ষা চালানোর জন্য দায়ী।

Android Studio-তে, Macrobenchmark মডিউল সেট-আপ সহজ করার জন্য একটি টেমপ্লেট উপলভ্য আছে। বেঞ্চমার্কিং মডিউল টেমপ্লেট অটোমেটিক আপনার প্রোজেক্টে একটি মডিউল তৈরি করে যা অ্যাপ মডিউল দ্বারা তৈরি অ্যাপ পরিমাপ করে, এর মধ্যে একটি স্যাম্পেল স্টার্টআপ বেঞ্চমার্কও অন্তর্ভুক্ত থাকে।

নতুন মডিউল তৈরি করতে মডিউল টেমপ্লেট ব্যবহার করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. Android Studio-র প্রোজেক্ট প্যানেলে আপনার প্রোজেক্ট বা মডিউলের উপর ডানদিকের বোতামে ক্লিক করুন এবং নতুন > মডিউল বিকল্প বেছে নিন।

  2. টেমপ্লেট প্যানেল থেকে বেঞ্চমার্ক বেছে নিন। আপনি টার্গেট অ্যাপ—অর্থাৎ যে অ্যাপের বেঞ্চমার্ক করা হবে—কাস্টমাইজ করতে পারবেন, এর পাশাপাশি নতুন Macrobenchmark মডিউলের জন্য প্যাকেজ ও মডিউলের নামও কাস্টমাইজ করতে পারবেন।

  3. সম্পূর্ণ করুন বিকল্পে ক্লিক করুন।

বেঞ্চমার্ক মডিউল টেমপ্লেট।
ছবি ১. বেঞ্চমার্ক মডিউল টেমপ্লেট।

অ্যাপ্লিকেশন সেট-আপ করুন

কোনও অ্যাপের বেঞ্চমার্ক করতে—যা Macrobenchmark-এর টার্গেট হিসেবে পরিচিত—অ্যাপটিকে অবশ্যই profileable হতে হবে, যা পারফর্ম্যান্সকে প্রভাবিত না করেই বিস্তারিত ট্রেস তথ্য পড়ার সুবিধা দেয়। মডিউল উইজার্ড অটোমেটিক অ্যাপের AndroidManifest.xml ফাইলে <profileable> ট্যাগ যোগ করে।

টার্গেট অ্যাপে যেন ProfilerInstaller 1.3 বা তার পরের ভার্সন থাকে, যা Macrobenchmark লাইব্রেরির প্রোফাইল ক্যাপচার ও রিসেট এবং শেডার ক্যাশে মুছে দেওয়ার জন্য প্রয়োজন।

বেঞ্চমার্ক করা অ্যাপটি যতটা সম্ভব রিলিজ ভার্সন বা প্রোডাকশনের কাছাকাছি কনফিগার করুন। এটি নন-ডিবাগেবল হিসেবে সেট-আপ করুন এবং ছোট করার সুবিধা চালু রাখুন, যা পারফর্ম্যান্স উন্নত করে। সাধারণত, আপনি রিলিজ ভেরিয়েন্টের একটি কপি তৈরি করে এটি করেন, যা একই কাজ করে কিন্তু ডিবাগ কী দিয়ে স্থানীয়ভাবে সাইন করা হয়। অন্যথায়, আপনি initWith ব্যবহার করে Gradle-কে আপনার জন্য এটি করার নির্দেশ দিতে পারেন:

Kotlin

buildTypes {
    getByName("release") {
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
    }

    create("benchmark") {
        initWith(getByName("release"))
        signingConfig = signingConfigs.getByName("debug")
    }
}

গ্ৰুভি

buildTypes {
    release {
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "keep-rules.pro"
        )
        // In real app, this would use its own release keystore
        signingConfig = signingConfigs.getByName("debug")
        baselineProfile.automaticGenerationDuringBuild = true
    }
}

বেঞ্চমার্ক চালানোর ফলে আপনার অ্যাপের সঠিক ভ্যারিয়েন্ট তৈরি ও পরীক্ষা করা হচ্ছে কিনা তা নিশ্চিত করতে, ছবি ২-এ দেখানো পদ্ধতি অনুসরণ করুন:

  1. Gradle সিঙ্ক করুন।
  2. বিল্ড ভেরিয়েন্ট প্যানেল খুলুন।
  3. অ্যাপ ও Macrobenchmark মডিউল, দুটিরই বেঞ্চমার্ক ভ্যারিয়েন্ট বেছে নিন।
বেঞ্চমার্ক ভেরিয়েন্ট বেছে নিন।
ছবি ২. বেঞ্চমার্ক ভেরিয়েন্ট বেছে নিন।

(ঐচ্ছিক) মাল্টি-মডিউল অ্যাপ সেট-আপ করুন

আপনার অ্যাপে একাধিক Gradle মডিউল থাকলে, আপনার বিল্ড স্ক্রিপ্ট কোন বিল্ড ভ্যারিয়েন্ট কম্পাইল করবে তা জানে কিনা তা নিশ্চিত করুন। আপনার :macrobenchmark এবং :app মডিউলের benchmark বিল্ড টাইপে matchingFallbacks প্রপার্টি যোগ করুন। আপনার বাকি Gradle মডিউলে আগের মতোই একই কনফিগারেশন থাকতে পারে।

Kotlin

create("benchmark") {
    initWith(getByName("release"))
    signingConfig = signingConfigs.getByName("debug")

    matchingFallbacks += listOf("release")
 }

গ্ৰুভি

benchmark {
    initWith buildTypes.release
    signingConfig signingConfigs.debug

    matchingFallbacks = ['release']
 }

এটি ছাড়া, নতুন যোগ করা benchmark বিল্ড টাইপের কারণে বিল্ড ব্যর্থ হয় এবং নিম্নলিখিত সমস্যার মেসেজ দেখায়:

> Could not resolve project :shared.
     Required by:
         project :app
      > No matching variant of project :shared was found.
      ...

আপনার প্রোজেক্টে বিল্ড ভেরিয়েন্ট বেছে নেওয়ার সময়, :app ও :macrobenchmark মডিউলের জন্য benchmark এবং আপনার অ্যাপে থাকা অন্য যেকোনও মডিউলের জন্য release বেছে নিন, যেমনটি চিত্র ৩-এ দেখানো হয়েছে:

রিলিজ ও বেঞ্চমার্ক বিল্ড টাইপ বেছে নিয়ে মাল্টি-মডিউল প্রোজেক্টের জন্য বেঞ্চমার্ক ভ্যারিয়েন্ট।
ছবি ৩. রিলিজ ও বেঞ্চমার্ক বিল্ড টাইপ বেছে নিয়ে মাল্টি-মডিউল প্রোজেক্টের জন্য বেঞ্চমার্ক ভ্যারিয়েন্ট।

আরও তথ্যের জন্য, ভেরিয়েন্ট ম্যাচিং সম্পর্কিত বিল্ড সংক্রান্ত সমস্যার সমাধান করুন দেখুন।

(ঐচ্ছিক) প্রোডাক্টের ফ্লেভার সেট-আপ করুন

আপনার অ্যাপে একাধিক প্রোডাক্ট ফ্লেভার সেট করা থাকলে, :macrobenchmark মডিউল কনফিগার করুন যাতে এটি জানতে পারে যে আপনার অ্যাপের কোন প্রোডাক্ট ফ্লেভার তৈরি এবং বেঞ্চমার্ক করতে হবে।

এই পৃষ্ঠার উদাহরণে :app মডিউলে দুটি প্রোডাক্ট ফ্লেভার ব্যবহার করা হয়েছে, demo এবং production, যেমন নিম্নলিখিত স্নিপেটে দেখানো হয়েছে:

Kotlin

flavorDimensions += "environment"
productFlavors {
    create("demo") {
        dimension = "environment"
        // ...
    }
    create("production") {
        dimension = "environment"
        // ...
    }
}

গ্ৰুভি

flavorDimensions 'environment'
productFlavors {
    demo {
        dimension 'environment'
        // ...
    }

    production {
        dimension 'environment'
        // ...
    }
}

এই কনফিগারেশন ছাড়া, আপনি একাধিক Gradle মডিউলের কারণে হওয়া সমস্যার মতো বিল্ড সংক্রান্ত সমস্যা দেখতে পেতে পারেন:

Could not determine the dependencies of task ':macrobenchmark:connectedBenchmarkAndroidTest'.
> Could not determine the dependencies of null.
   > Could not resolve all task dependencies for configuration ':macrobenchmark:benchmarkTestedApks'.
      > Could not resolve project :app.
        Required by:
            project :macrobenchmark
         > The consumer was configured to find a runtime of a component, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'benchmark', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '7.3.0'. However we cannot choose between the following variants of project :app:
             -   demoBenchmarkRuntimeElements
             -   productionBenchmarkRuntimeElements
           All of them match the consumer attributes:
           ...

নিম্নলিখিত দুটি বিভাগে একাধিক প্রোডাক্ট ফ্লেভারের সাথে বেঞ্চমার্কিং কনফিগার করার পদ্ধতি বর্ণনা করা হয়েছে।

missingDimensionStrategy ব্যবহার করুন

:macrobenchmark মডিউলের defaultConfig-এ missingDimensionStrategy উল্লেখ করলে, বিল্ড সিস্টেম ফ্লেভার ডাইমেনশনে ফলব্যাক করে। মডিউলে না পেলে কোন কোন ডাইমেনশন ব্যবহার করতে হবে তা উল্লেখ করুন। নিচের উদাহরণে, production ফ্লেভার ডিফল্ট ডাইমেনশন হিসেবে ব্যবহার করা হয়েছে:

Kotlin

defaultConfig {
    missingDimensionStrategy("environment", "production")
}

গ্ৰুভি

defaultConfig {
    missingDimensionStrategy "environment", "production"
}

এইভাবে, :macrobenchmark মডিউলটি শুধুমাত্র নির্দিষ্ট প্রোডাক্ট ফ্লেভার তৈরি এবং বেঞ্চমার্ক করতে সক্ষম, যা আপনি যদি জানেন যে শুধুমাত্র একটি প্রোডাক্ট ফ্লেভারে বেঞ্চমার্ক করার জন্য সঠিক কনফিগারেশন রয়েছে তবে এটি সহায়ক।

:macrobenchmark মডিউলে প্রোডাক্ট ফ্লেভার সংজ্ঞায়িত করুন

আপনি যদি অন্যান্য প্রোডাক্ট ফ্লেভার তৈরি এবং বেঞ্চমার্ক করতে চান, তাহলে সেগুলি :macrobenchmark মডিউলে সংজ্ঞায়িত করুন। :app মডিউলের মতো একইভাবে এটি উল্লেখ করুন, তবে শুধু productFlavors-কে dimension-এ অ্যাসাইন করুন। অন্য কোনও সেটিংসের প্রয়োজন নেই:

Kotlin

flavorDimensions += "environment"
productFlavors {
    create("demo") {
        dimension = "environment"
    }
    create("production") {
        dimension = "environment"
    }
}

গ্ৰুভি

flavorDimensions 'environment'
productFlavors {
    demo {
        dimension 'environment'
    }

    production {
        dimension 'environment'
    }
}

প্রোজেক্ট নির্ধারণ ও সিঙ্ক করার পরে, বিল্ড ভেরিয়েন্ট প্যানেল থেকে প্রাসঙ্গিক বিল্ড ভেরিয়েন্ট বেছে নিন, যেমনটি চিত্র ৪-এ দেখানো হয়েছে:

প্রোডাক্ট ফ্লেভার সহ প্রোজেক্টের জন্য বেঞ্চমার্ক ভেরিয়েন্ট productionBenchmark এবং রিলিজ বেছে নেওয়া হয়েছে দেখাচ্ছে।
ছবি ৪. প্রোডাক্ট ফ্লেভার সহ প্রোজেক্টের জন্য বেঞ্চমার্ক ভেরিয়েন্ট "productionBenchmark" এবং "release" বেছে নেওয়া হয়েছে।

আরও তথ্যের জন্য, ভেরিয়েন্ট ম্যাচিং সম্পর্কিত বিল্ড সংক্রান্ত সমস্যার সমাধান করুন দেখুন।

Macrobenchmark ক্লাস তৈরি করুন

Macrobenchmark লাইব্রেরিতে MacrobenchmarkRule JUnit4 নিয়ম API-এর মাধ্যমে বেঞ্চমার্ক টেস্টিং প্রদান করা হয়। এতে একটি measureRepeated পদ্ধতি আছে যা আপনাকে টার্গেট অ্যাপ কীভাবে চালাতে এবং বেঞ্চমার্ক করতে হবে তার বিভিন্ন শর্ত নির্দিষ্ট করতে দেয়।

আপনাকে অন্তত টার্গেট অ্যাপের packageName, আপনি কী metrics পরিমাপ করতে চান এবং বেঞ্চমার্ক কতগুলি iterations রান করবে তা নির্দিষ্ট করতে হবে।

Kotlin

@LargeTest
@RunWith(AndroidJUnit4::class)
class SampleStartupBenchmark {
    @get:Rule
    val benchmarkRule = MacrobenchmarkRule()

    @Test
    fun startup() = benchmarkRule.measureRepeated(
        packageName = TARGET_PACKAGE,
        metrics = listOf(StartupTimingMetric()),
        iterations = DEFAULT_ITERATIONS,
    ) {
        // starts default launch activity
        uiAutomator { startApp(TARGET_PACKAGE) }
    }
}

আপনার বেঞ্চমার্ক কাস্টমাইজ করার সব বিকল্পের জন্য, বেঞ্চমার্ক কাস্টমাইজ করুন বিভাগ দেখুন।

Compose UI ইন্টার‍্যাকশন বেঞ্চমার্ক করা

আগের উদাহরণে অ্যাপ স্টার্টআপ পরিমাপ করা হলেও, আপনি প্রায়ই UI পারফর্ম্যান্স পরিমাপ করতে চাইবেন, যেমন স্ক্রল করার সময় ফ্রেম ড্রপ (জ্যাঙ্ক)।

Jetpack Compose অ্যাপ্লিকেশনের বেঞ্চমার্ক করতে, যেমন LazyColumn স্ক্রল করার সময় FrameTimingMetric পরিমাপ করতে, আপনি UI Automator ব্যবহার করে সরাসরি আপনার Compose নোডের সাথে ইন্টার‍্যাক্ট করতে পারবেন, যেমনটি নিম্নলিখিত স্নিপেটে দেখানো হয়েছে।

@LargeTest
@RunWith(AndroidJUnit4::class)
class ComposeScrollBenchmark {
    @get:Rule
    val benchmarkRule = MacrobenchmarkRule()

    @Test
    fun scrollLazyColumn() = benchmarkRule.measureRepeated(
        packageName = "com.example.compose.app",
        metrics = listOf(FrameTimingMetric()),
        iterations = 5,
        startupMode = StartupMode.WARM,
        setupBlock = { pressHome() }
    ) {
        startActivityAndWait()

        // Find the Compose node using the testTag defined in your app
        val lazyColumn = device.findObject(By.res("my_lazy_column"))

        // Simulate a scroll gesture to measure FrameTimingMetric
        lazyColumn.setGestureMargin(device.displayWidth / 5)
        lazyColumn.fling(Direction.DOWN)
    }
}

বেঞ্চমার্ক রান করুন

আপনার ডিভাইসে অ্যাপের পারফর্ম্যান্স পরিমাপ করতে Android Studio-এর মধ্যে থেকে টেস্ট রান করুন। আপনি অন্য যেকোনও @Test-এর মতো একইভাবে বেঞ্চমার্ক রান করতে পারবেন, এর জন্য আপনার টেস্ট ক্লাস বা পদ্ধতির পাশে থাকা গাটার অ্যাকশন ব্যবহার করতে হবে, যেমনটি ছবি ৫-এ দেখানো হয়েছে।

টেস্ট ক্লাসের পাশে থাকা গাটার অ্যাকশনের সাহায্যে Macrobenchmark চালান।
ছবি ৫. টেস্ট ক্লাসের পাশে থাকা গাটার অ্যাকশনের সাহায্যে Macrobenchmark রান করুন।

এছাড়াও, আপনি connectedCheck কমান্ডটি এক্সিকিউট করে কমান্ড লাইন থেকে Gradle মডিউলে সব বেঞ্চমার্ক রান করতে পারেন:

./gradlew :macrobenchmark:connectedCheck

আপনি নিম্নলিখিত কমান্ডটি এক্সিকিউট করে একটি টেস্ট চালাতে পারেন:

./gradlew :macrobenchmark:connectedCheck -P android.testInstrumentationRunnerArguments.class=com.example.macrobenchmark.startup.SampleStartupBenchmark#startup

ক্রমাগত ইন্টিগ্রেশনে কীভাবে বেঞ্চমার্ক রান ও মনিটর করতে হয় সেই সম্পর্কে তথ্যের জন্য ক্রমাগত ইন্টিগ্রেশনে বেঞ্চমার্ক দেখুন।

বেঞ্চমার্কের ফলাফল

বেঞ্চমার্ক রান সম্পূর্ণ হওয়ার পরে, মেট্রিক্স সরাসরি Android Studio-তে দেখানো হয় এবং CI ব্যবহারের জন্য JSON ফাইলে আউটপুট হিসেবে দেখানো হয়। প্রতিটি পরিমাপ করা ইটারেশন আলাদা সিস্টেম ট্রেস ক্যাপচার করে। আপনি টেস্ট ফলাফল প্যানে লিঙ্কে ক্লিক করে এই ট্রেস ফলাফল খুলতে পারবেন, যেমনটি চিত্র ৬-এ দেখানো হয়েছে:

Macrobenchmark স্টার্টআপ ফলাফল।
ছবি ৬. Macrobenchmark স্টার্টআপ ফলাফল।

ট্রেস লোড হয়ে গেলে, Android Studio আপনাকে বিশ্লেষণ করার জন্য প্রসেস বেছে নিতে প্রম্পট করে। টার্গেট অ্যাপ প্রসেসের সাথে বেছে নেওয়া বিকল্পটি অটো-ফিল করা হয়, যেমনটি ছবি ৭-এ দেখানো হয়েছে:

Studio ট্রেস প্রসেস বেছে নেওয়া।
ছবি ৭. Studio ট্রেস প্রসেস বেছে নেওয়া।

ট্রেস ফাইল লোড হওয়ার পরে, Studio CPU প্রোফাইলার টুল-এ ফলাফল দেখায়:

Studio ট্রেস।
ছবি ৮. Studio ট্রেস।

JSON রিপোর্ট এবং যেকোনও প্রোফাইলিং ট্রেসও ডিভাইস থেকে হোস্টে অটোমেটিক কপি করা হয়। এগুলি হোস্ট মেশিনে নিম্নলিখিত লোকেশনে লেখা থাকে:

project_root/module/build/outputs/connected_android_test_additional_output/debugAndroidTest/connected/device_id/

ম্যানুয়ালি ট্রেস ফাইল অ্যাক্সেস করুন

আপনি যদি ট্রেস ফাইল বিশ্লেষণ করতে Perfetto টুল ব্যবহার করতে চান, তাহলে অতিরিক্ত ধাপগুলি অনুসরণ করতে হবে। Perfetto আপনাকে ট্রেস চলাকালীন ডিভাইস জুড়ে হওয়া সব প্রসেস পরীক্ষা করতে দেয়, যেখানে Android Studio-এর CPU প্রোফাইলার পরীক্ষা করার সুবিধা একটি প্রসেসের মধ্যে সীমাবদ্ধ রাখে।

আপনি Android Studio বা Gradle কমান্ড লাইন থেকে টেস্ট ইনভোক করলে, ট্রেস ফাইল ডিভাইস থেকে হোস্টে অটোমেটিক কপি হয়ে যায়। এগুলি হোস্ট মেশিনের নিম্নলিখিত লোকেশনে লেখা হয়:

project_root/module/build/outputs/connected_android_test_additional_output/debugAndroidTest/connected/device_id/TrivialStartupBenchmark_startup[mode=COLD]_iter002.perfetto-trace

আপনার হোস্ট সিস্টেমে ট্রেস ফাইল থাকলে, আপনি Android Studio-তে মেনু থেকে ফাইল > খুলুন বিকল্পে গিয়ে এটি খুলতে পারবেন। এটি আগের বিভাগে দেখানো প্রোফাইলার টুল ভিউ দেখায়।

কনফিগারেশন সংক্রান্ত সমস্যা

অ্যাপটি ভুলভাবে কনফিগার করা হলে—ডিবাগ করা যায় এমন বা প্রোফাইল করা যায় না এমন—Macrobenchmark ভুল বা অসম্পূর্ণ পরিমাপ রিপোর্ট করার পরিবর্তে একটি ত্রুটি রিটার্ন করে। আপনি androidx.benchmark.suppressErrors আর্গুমেন্ট ব্যবহার করে এইসব সমস্যা দমন করতে পারবেন।

এছাড়াও, Macrobenchmark কোনও এমুলেটর বা কম ব্যাটারি থাকা ডিভাইসে পরিমাপ করার চেষ্টা করলে, ত্রুটি দেখায়, যা কোর উপলভ্যতা এবং ক্লক স্পিডকে প্রভাবিত করতে পারে।

বেঞ্চমার্ক কাস্টমাইজ করুন

measureRepeated ফাংশন বিভিন্ন প্যারামিটার গ্রহণ করে যা প্রভাবিত করে লাইব্রেরি কোন মেট্রিক সংগ্রহ করে, আপনার অ্যাপ কীভাবে শুরু এবং কম্পাইল করা হয় বা বেঞ্চমার্ক কতবার রান করে।

মেট্রিক ক্যাপচার করা

আপনার বেঞ্চমার্ক থেকে এক্সট্র্যাক্ট করা তথ্যের প্রধান ধরন হল মেট্রিক। নিম্নলিখিত মেট্রিক উপলভ্য:

মেট্রিক সম্পর্কে আরও তথ্যের জন্য, ম্যাক্রোবেঞ্চমার্ক মেট্রিক ক্যাপচার করুন দেখুন।

কাস্টম ইভেন্টের মাধ্যমে ট্রেস ডেটা উন্নত করুন

কাস্টম ট্রেস ইভেন্টের মাধ্যমে আপনার অ্যাপকে ইনস্ট্রুমেন্ট করা উপযোগী হতে পারে, যা বাকি ট্রেস রিপোর্টের সাথে দেখা যায় এবং আপনার অ্যাপের নির্দিষ্ট সমস্যা চিহ্নিত করতে সাহায্য করতে পারে। কাস্টম ট্রেস ইভেন্ট তৈরি করার ব্যাপারে আরও জানতে, কাস্টম ইভেন্ট নির্ধারণ করুন দেখুন।

CompilationMode

ম্যাক্রোবেঞ্চমার্ক একটি CompilationMode নির্দিষ্ট করতে পারে, যা নির্ধারণ করে যে অ্যাপের কতটা অংশ DEX বাইটকোড (একটি APK-এর মধ্যে বাইটকোড ফর্ম্যাট) থেকে মেশিন কোডে (প্রি-কম্পাইল করা C++-এর মতো) প্রি-কম্পাইল করতে হবে।

ডিফল্ট হিসেবে, Macrobenchmarks CompilationMode.DEFAULT-এর সাথে রান করে, যা Android 7 (API লেভেল ২৪) এবং পরবর্তী ভার্সনে বেসলাইন প্রোফাইল—উপলভ্য থাকলে—ইনস্টল করে। আপনি Android 6 (API লেভেল 23) বা তার আগের কোনও ভার্সন ব্যবহার করলে, কম্পাইলেশন মোড ডিফল্ট সিস্টেম আচরণ হিসেবে সম্পূর্ণভাবে APK কম্পাইল করে।

টার্গেট অ্যাপে বেসলাইন প্রোফাইল ও ProfileInstaller লাইব্রেরি, দুটিই থাকলে আপনি বেসলাইন প্রোফাইল ইনস্টল করতে পারবেন।

Android 7 এবং তার পরবর্তী ভার্সনে, আপনি CompilationMode কাস্টমাইজ করতে পারবেন যাতে ডিভাইসে প্রি-কম্পাইলেশনের পরিমাণ প্রভাবিত হয় এবং বিভিন্ন লেভেলের সময়ের আগে (AOT) কম্পাইলেশন বা JIT ক্যাশিং নকল করা যায়। CompilationMode.Full, CompilationMode.Partial, CompilationMode.None এবং CompilationMode.Ignore দেখুন।

এই ফিচার ART কম্পাইলেশন কমান্ড-এর উপর ভিত্তি করে তৈরি করা হয়েছে। প্রতিটি বেঞ্চমার্ক শুরু হওয়ার আগে প্রোফাইল ডেটা মুছে দেয়, যাতে বেঞ্চমার্কের মধ্যে কোনও হস্তক্ষেপ না হয়।

StartupMode

কোনও অ্যাক্টিভিটি শুরু করতে, আপনি আগে থেকে নির্ধারিত স্টার্টআপ মোড পাস করতে পারেন: COLD, WARM অথবা HOT। এই প্যারামিটারটি পরিবর্তন করে যে কীভাবে অ্যাক্টিভিটি লঞ্চ হয় এবং টেস্টের শুরুতে প্রসেস স্টেট।

স্টার্ট-আপের ধরন সম্পর্কে আরও জানতে, অ্যাপ স্টার্ট-আপের সময় দেখুন।

নমুনা

GitHub-এ রিপোজিটরির Macrobenchmark Sample-এ একটি নমুনা প্রোজেক্ট উপলভ্য আছে।

মতামত জানান

Jetpack Macrobenchmark-এর জন্য সমস্যার রিপোর্ট করতে বা ফিচার রিকোয়েস্ট জমা দিতে, পাবলিক ইস্যু ট্র্যাকার দেখুন।