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

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

Macrobenchmarks আপনাকে 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-এ চলমান Android নমুনা অ্যাপের জন্য নাও ইন অ্যান্ড্রয়েড স্টুডিওতে সরাসরি ফলাফল দেখতে পাবেন। ফলাফলগুলি দেখায় যে বেসলাইন প্রোফাইল ( 229.0ms ) ব্যবহার করার সময় কোনও সংকলন ছাড়াই ( 324.8 ) অ্যাপ স্টার্টআপ সবচেয়ে দ্রুত হয় ms )

কোল্ডস্টার্টআপ বেঞ্চমার্কের ফলাফল
চিত্র 1. ColdStartupBenchmark এর ফলাফল কোন সংকলন (324ms), সম্পূর্ণ সংকলন (315ms), আংশিক সংকলন (312ms), এবং বেসলাইন প্রোফাইল (229ms) জন্য প্রাথমিক প্রদর্শনের সময় দেখাচ্ছে।

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

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

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

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

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

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