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

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

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

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

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

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

আমরা আপনাকে Android স্টুডিওর সর্বশেষ সংস্করণের সাথে Macrobenchmark ব্যবহার করার পরামর্শ দিচ্ছি যে IDE-এর বৈশিষ্ট্যগুলি যা Macrobenchmark-এর সাথে একীভূত হয়।

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

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

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

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

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

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

  3. শেষ ক্লিক করুন.

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

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

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

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

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

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

কোটলিন

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")
    }
}

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

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

বেঞ্চমার্ক বৈকল্পিক নির্বাচন করুন

চিত্র 2. বেঞ্চমার্ক বৈকল্পিক নির্বাচন করুন।

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

আপনার অ্যাপে একাধিক গ্রেডল মডিউল থাকলে, নিশ্চিত করুন যে আপনার বিল্ড স্ক্রিপ্টগুলি কোন বিল্ড ভেরিয়েন্টটি কম্পাইল করতে হবে তা জানে৷ আপনার :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-তে দেখানো হয়েছে:

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

চিত্র 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:
           ...

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

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

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

কোটলিন

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

গ্রোভি

defaultConfig {
    missingDimensionStrategy "environment", "production"
}

এইভাবে, :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 এ দেখানো হয়েছে:

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

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

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

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

ম্যাক্রোবেঞ্চমার্ক লাইব্রেরিতে 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 স্টুডিও থেকে পরীক্ষা চালান। আপনি আপনার পরীক্ষার ক্লাস বা পদ্ধতির পাশে গটার অ্যাকশন ব্যবহার করে অন্য যেকোন @Test চালানোর মতো বেঞ্চমার্কগুলি চালাতে পারেন, যেমন চিত্র 5 এ দেখানো হয়েছে।

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

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

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

./gradlew :macrobenchmark:connectedCheck

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

মানদণ্ড কাস্টমাইজ করুন

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

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

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

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

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

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

কম্পাইলেশন মোড

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

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

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

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

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

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

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

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

নমুনা

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

মতামত প্রদান

জেটপ্যাক ম্যাক্রোবেঞ্চমার্কের জন্য সমস্যার রিপোর্ট করতে বা ফিচারের অনুরোধ জমা দিতে, পাবলিক ইস্যু ট্র্যাকার দেখুন।

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}