একটি ম্যাক্রোবেঞ্চমার্ক লিখুন

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

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

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

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

প্রকল্প সেটআপ

Macrobenchmark-এর সাথে ইন্টিগ্রেট করা IDE-এর বৈশিষ্ট্যগুলির জন্য আমরা আপনাকে Android Studio-এর সর্বশেষ সংস্করণ সহ Macrobenchmark ব্যবহার করার পরামর্শ দিচ্ছি।

ম্যাক্রোবেঞ্চমার্ক মডিউল সেটআপ করুন

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

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

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

  1. অ্যান্ড্রয়েড স্টুডিওর প্রোজেক্ট প্যানেলে আপনার প্রোজেক্ট বা মডিউলে ডান-ক্লিক করুন এবং New > Module নির্বাচন করুন।

  2. টেমপ্লেটস ফলক থেকে বেঞ্চমার্ক নির্বাচন করুন। আপনি লক্ষ্য অ্যাপটি কাস্টমাইজ করতে পারেন—অর্থাৎ, বেঞ্চমার্ক করা অ্যাপটি—এবং নতুন ম্যাক্রোবেঞ্চমার্ক মডিউলের জন্য প্যাকেজ এবং মডিউলের নামও।

  3. Finish এ ক্লিক করুন।

বেঞ্চমার্ক মডিউল টেমপ্লেট

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

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

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

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

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

কোটলিন

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

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

খাঁজকাটা

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

চিত্র ২-এ দেখানো হিসাবে, বেঞ্চমার্ক চালানো আপনার অ্যাপের সঠিক রূপটি তৈরি এবং পরীক্ষা উভয়ই নিশ্চিত করতে, নিম্নলিখিতগুলি করুন:

  1. একটি গ্র্যাডেল সিঙ্ক সম্পাদন করুন।
  2. বিল্ড ভ্যারিয়েন্টস প্যানেলটি খুলুন।
  3. অ্যাপ এবং ম্যাক্রোবেঞ্চমার্ক মডিউল উভয়ের জন্যই বেঞ্চমার্ক ভেরিয়েন্ট নির্বাচন করুন।

বেঞ্চমার্ক ভেরিয়েন্ট নির্বাচন করুন

চিত্র ২। বেঞ্চমার্ক ভেরিয়েন্টটি নির্বাচন করুন।

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

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

কোটলিন

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 , যেমন চিত্র 3-এ দেখানো হয়েছে:

রিলিজ এবং বেঞ্চমার্ক বিল্ড টাইপ নির্বাচিত সহ মাল্টি-মডিউল প্রকল্পের জন্য বেঞ্চমার্ক ভেরিয়েন্ট

চিত্র ৩। নির্বাচিত রিলিজ এবং বেঞ্চমার্ক বিল্ড প্রকার সহ মাল্টি-মডিউল প্রকল্পের জন্য বেঞ্চমার্ক ভেরিয়েন্ট।

আরও তথ্যের জন্য, "ভেরিয়েন্ট-সচেতন নির্ভরতা ব্যবস্থাপনা ব্যবহার করুন" দেখুন।

(ঐচ্ছিক) পণ্যের স্বাদ সেট আপ করুন

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

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

কোটলিন

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:
           ...

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

মিসিংডাইমেনশনস্ট্র্যাটেজি ব্যবহার করুন

:macrobenchmark মডিউলের defaultConfigmissingDimensionStrategy উল্লেখ করলে বিল্ড সিস্টেমকে ফ্লেভার ডাইমেনশনে ফিরে যেতে বলা হয়। মডিউলে কোন ডাইমেনশনগুলি না পেলে ব্যবহার করবেন তা নির্দিষ্ট করুন। নিম্নলিখিত উদাহরণে, production ফ্লেভার ডিফল্ট ডাইমেনশন হিসেবে ব্যবহৃত হয়েছে:

কোটলিন

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

খাঁজকাটা

defaultConfig {
    missingDimensionStrategy "environment", "production"
}

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

:macrobenchmark মডিউলে পণ্যের স্বাদ নির্ধারণ করুন

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

কোটলিন

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

খাঁজকাটা

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

    production {
        dimension 'environment'
    }
}

প্রকল্পটি সংজ্ঞায়িত এবং সিঙ্ক করার পরে, চিত্র 4-এ দেখানো বিল্ড ভেরিয়েন্টস ফলক থেকে প্রাসঙ্গিক বিল্ড ভেরিয়েন্টটি নির্বাচন করুন:

প্রোডাক্টের স্বাদ সহ প্রকল্পের জন্য বেঞ্চমার্ক ভেরিয়েন্ট  প্রোডাকশনবেঞ্চমার্ক এবং রিলিজ নির্বাচিত

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

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

একটি ম্যাক্রোবেঞ্চমার্ক ক্লাস তৈরি করুন

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

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

কোটলিন

@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,
        setupBlock = {
            // Press home button before each run to ensure the starting activity isn't visible.
            pressHome()
        }
    ) {
        // starts default launch activity
        startActivityAndWait()
    }
}

জাভা

@LargeTest
@RunWith(AndroidJUnit4.class)
public class SampleStartupBenchmark {
    @Rule
    public MacrobenchmarkRule benchmarkRule = new MacrobenchmarkRule();

    @Test
    public void startup() {
        benchmarkRule.measureRepeated(
            /* packageName */ TARGET_PACKAGE,
            /* metrics */ Arrays.asList(new StartupTimingMetric()),
            /* iterations */ 5,
            /* measureBlock */ scope -> {
                // starts default launch activity
                scope.startActivityAndWait();
                return Unit.INSTANCE;
            }
        );
    }
}

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

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

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

টেস্ট ক্লাসের পাশে গাটার অ্যাকশন সহ ম্যাক্রোবেঞ্চমার্ক চালান

চিত্র ৫। টেস্ট ক্লাসের পাশে গাটার অ্যাকশন সহ ম্যাক্রোবেঞ্চমার্ক চালান।

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

./gradlew :macrobenchmark:connectedCheck

আপনি নিম্নলিখিতগুলি সম্পাদন করে একটি একক পরীক্ষা চালাতে পারেন:

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

ক্রমাগত ইন্টিগ্রেশনে বেঞ্চমার্ক কীভাবে চালানো এবং নিরীক্ষণ করা যায় সে সম্পর্কে তথ্যের জন্য ধারাবাহিক ইন্টিগ্রেশনে বেঞ্চমার্ক দেখুন।

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

একটি সফল বেঞ্চমার্ক রানের পর, মেট্রিক্স সরাসরি অ্যান্ড্রয়েড স্টুডিওতে প্রদর্শিত হয় এবং একটি JSON ফাইলে CI ব্যবহারের জন্য আউটপুট হয়। প্রতিটি পরিমাপিত পুনরাবৃত্তি একটি পৃথক সিস্টেম ট্রেস ক্যাপচার করে। চিত্র 6-এ দেখানো হিসাবে, আপনি পরীক্ষার ফলাফল ফলকের লিঙ্কগুলিতে ক্লিক করে এই ট্রেস ফলাফলগুলি খুলতে পারেন:

ম্যাক্রোবেঞ্চমার্ক স্টার্টআপ ফলাফল

চিত্র ৬। ম্যাক্রোবেঞ্চমার্ক স্টার্টআপ ফলাফল।

ট্রেস লোড হয়ে গেলে, অ্যান্ড্রয়েড স্টুডিও আপনাকে বিশ্লেষণের জন্য প্রক্রিয়াটি নির্বাচন করতে অনুরোধ করবে। নির্বাচনটি লক্ষ্য অ্যাপ প্রক্রিয়া দিয়ে পূর্বেই পূর্ণ করা হয়, যেমন চিত্র 7 এ দেখানো হয়েছে:

স্টুডিও ট্রেস প্রক্রিয়া নির্বাচন

চিত্র ৭। স্টুডিও ট্রেস প্রক্রিয়া নির্বাচন।

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

স্টুডিও ট্রেস

চিত্র ৮। স্টুডিও ট্রেস।

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

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

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

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

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

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

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

কনফিগারেশন ত্রুটি

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

ম্যাক্রোবেঞ্চমার্ক এমুলেটর পরিমাপ করার সময় বা কম ব্যাটারির ডিভাইসে ত্রুটিগুলিও ফেরত দেয়, যা মূল উপলব্ধতা এবং ঘড়ির গতির সাথে আপস করতে পারে।

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

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

মেট্রিক্স ক্যাপচার করুন

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

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

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

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

সংকলনমোড

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

ডিফল্টরূপে, ম্যাক্রোবেঞ্চমার্কগুলি CompilationMode.DEFAULT দিয়ে চালানো হয়, যা Android 7 (API লেভেল 24) এবং পরবর্তী সংস্করণগুলিতে একটি বেসলাইন প্রোফাইল ইনস্টল করে—যদি উপলব্ধ থাকে। আপনি যদি Android 6 (API লেভেল 23) বা তার আগের সংস্করণ ব্যবহার করেন, তাহলে সংকলন মোড সম্পূর্ণরূপে APK কে ডিফল্ট সিস্টেম আচরণ হিসাবে কম্পাইল করে।

যদি টার্গেট অ্যাপটিতে বেসলাইন প্রোফাইল এবং ProfileInstaller লাইব্রেরি উভয়ই থাকে তবে আপনি একটি বেসলাইন প্রোফাইল ইনস্টল করতে পারেন।

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

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

স্টার্টআপমোড

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

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

নমুনা

GitHub-এর রিপোজিটরির ম্যাক্রোবেঞ্চমার্ক নমুনায় একটি নমুনা প্রকল্প পাওয়া যাবে।

মতামত প্রদান করুন

Jetpack Macrobenchmark-এর জন্য সমস্যাগুলি রিপোর্ট করতে বা বৈশিষ্ট্যের অনুরোধ জমা দিতে, পাবলিক ইস্যু ট্র্যাকার দেখুন।

{% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %} {% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %}