ম্যাক্রোবেঞ্চমার্ক লাইব্রেরি সহ বেঞ্চমার্ক বেসলাইন প্রোফাইল

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

ম্যাক্রোবেঞ্চমার্ক আপনাকে CompilationMode API ব্যবহার করে প্রাক-পরিমাপ সংকলন নিয়ন্ত্রণ করতে দেয়। বিভিন্ন সংকলন অবস্থার সাথে কর্মক্ষমতা তুলনা করতে বিভিন্ন CompilationMode মান ব্যবহার করুন। বেসলাইন প্রোফাইলের সুবিধা পরিমাপ করার জন্য CompilationMode প্যারামিটার কীভাবে ব্যবহার করবেন তা নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

@RunWith(AndroidJUnit4ClassRunner::class)
class ColdStartupBenchmark {
    @get:Rule
    val benchmarkRule = MacrobenchmarkRule()

    // No ahead-of-time (AOT) compilation at all. Represents performance of a
    // fresh install on a user's device if you don't enable Baseline Profiles—
    // generally the worst case performance.
    @Test
    fun startupNoCompilation() = startup(CompilationMode.None())

    // Partial pre-compilation with Baseline Profiles. Represents performance of
    // a fresh install on a user's device.
    @Test
    fun startupPartialWithBaselineProfiles() =
        startup(CompilationMode.Partial(baselineProfileMode = BaselineProfileMode.Require))

    // Partial pre-compilation with some just-in-time (JIT) compilation.
    // Represents performance after some app usage.
    @Test
    fun startupPartialCompilation() = startup(
        CompilationMode.Partial(
            baselineProfileMode = BaselineProfileMode.Disable,
            warmupIteration = 3
        )
    )

    // Full pre-compilation. Generally not representative of real user
    // experience, but can yield more stable performance metrics by removing
    // noise from JIT compilation within benchmark runs.
    @Test
    fun startupFullCompilation() = startup(CompilationMode.Full())

    private fun startup(compilationMode: CompilationMode) = benchmarkRule.measureRepeated(
        packageName = "com.example.macrobenchmark.target",
        metrics = listOf(StartupTimingMetric()),
        compilationMode = compilationMode,
        iterations = 10,
        startupMode = StartupMode.COLD,
        setupBlock = {
            pressHome()
        }
    ) {
        // Waits for the first rendered frame, which represents time to initial display.
        startActivityAndWait()

        // Waits for content to be visible, which represents time to fully drawn.
        device.wait(Until.hasObject(By.res("my-content")), 5_000)
    }
}

নিচের স্ক্রিনশটে, আপনি Google Pixel 7-এ চালিত Now in Android নমুনা অ্যাপের ফলাফল সরাসরি Android Studio-তে দেখতে পাবেন। ফলাফলগুলি দেখায় যে বেসলাইন প্রোফাইল ( 229.0ms ) ব্যবহার করার সময় অ্যাপ স্টার্টআপ দ্রুততম হয়, কোনও সংকলন ( 324.8ms ) ব্যবহার না করে।

কোল্ডস্টার্টআপবেঞ্চমার্কের ফলাফল
চিত্র ১. ColdStartupBenchmark ফলাফল যেখানে কোনও সংকলন (৩২৪ মিলিসেকেন্ড), সম্পূর্ণ সংকলন (৩১৫ মিলিসেকেন্ড), আংশিক সংকলন (৩১২ মিলিসেকেন্ড) এবং বেসলাইন প্রোফাইল (২২৯ মিলিসেকেন্ড) এর জন্য প্রাথমিক প্রদর্শনের সময় দেখানো হয়েছে।

পূর্ববর্তী উদাহরণে StartupTimingMetric দিয়ে ক্যাপচার করা অ্যাপ স্টার্টআপের ফলাফল দেখানো হয়েছে, তবে FrameTimingMetric এর মতো অন্যান্য গুরুত্বপূর্ণ মেট্রিক্স বিবেচনা করার মতো। সকল ধরণের মেট্রিক্স সম্পর্কে আরও তথ্যের জন্য, ক্যাপচার ম্যাক্রোবেঞ্চমার্ক মেট্রিক্স দেখুন।

সম্পূর্ণ প্রদর্শনের সময়

পূর্ববর্তী উদাহরণটি প্রাথমিক প্রদর্শনের সময় (TTID) পরিমাপ করে, যা অ্যাপটি তার প্রথম ফ্রেম তৈরি করতে যে সময় নেয়। তবে, এটি ব্যবহারকারীর আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করা শুরু করার সময়কাল প্রতিফলিত করে না। সম্পূর্ণরূপে ব্যবহারযোগ্য অ্যাপ অবস্থা অর্জনের জন্য প্রয়োজনীয় কোড পাথগুলি পরিমাপ এবং অপ্টিমাইজ করার ক্ষেত্রে পূর্ণ প্রদর্শনের সময় (TTFD) মেট্রিক আরও কার্যকর।

আমরা TTID এবং TTFD উভয়ের জন্যই অপ্টিমাইজ করার পরামর্শ দিচ্ছি, কারণ উভয়ই গুরুত্বপূর্ণ। কম TTID ব্যবহারকারীকে দেখতে সাহায্য করে যে অ্যাপটি আসলে চালু হচ্ছে। ব্যবহারকারী যাতে দ্রুত অ্যাপের সাথে ইন্টারঅ্যাক্ট করতে পারে তা নিশ্চিত করার জন্য TTFD ছোট রাখা গুরুত্বপূর্ণ।

অ্যাপ UI সম্পূর্ণরূপে আঁকা হয়ে গেলে রিপোর্ট করার কৌশলগুলির জন্য, স্টার্টআপ টাইমিং নির্ভুলতা উন্নত করুন দেখুন।

{% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %}
  • দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়।
  • [একটি ম্যাক্রোবেঞ্চমার্ক লিখুন][11]
  • [ম্যাক্রোবেঞ্চমার্ক মেট্রিক্স ক্যাপচার করুন][12]
  • [অ্যাপ স্টার্টআপ বিশ্লেষণ এবং অপ্টিমাইজেশন {:#app-startup-analysis-optimization}][13]
{% অক্ষরে অক্ষরে %}
{% এন্ডভারব্যাটিম %}