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

মেট্রিক হল আপনার বেঞ্চমার্ক থেকে প্রাপ্ত প্রধান ধরণের তথ্য। এগুলি measureRepeated ফাংশনে একটি List হিসাবে পাঠানো হয়, যা আপনাকে একসাথে একাধিক পরিমাপিত মেট্রিক নির্দিষ্ট করতে দেয়। বেঞ্চমার্কটি চালানোর জন্য কমপক্ষে এক ধরণের মেট্রিক প্রয়োজন।

নিম্নলিখিত কোড স্নিপেটটি ফ্রেম টাইমিং এবং কাস্টম ট্রেস সেকশন মেট্রিক্স ক্যাপচার করে:

কোটলিন

benchmarkRule.measureRepeated(
    packageName = TARGET_PACKAGE,
    metrics = listOf(
        FrameTimingMetric(),
        TraceSectionMetric("RV CreateView"),
        TraceSectionMetric("RV OnBindView"),
    ),
    iterations = 5,
    // ...
)

জাভা

benchmarkRule.measureRepeated(
    TARGET_PACKAGE,     // packageName
    Arrays.asList(      // metrics
        new StartupTimingMetric(),
        new TraceSectionMetric("RV CreateView"),
        new TraceSectionMetric("RV OnBindView"),
    ),
    5,                  // Iterations
    // ...
);

এই উদাহরণে, RV CreateView এবং RV OnBindView হল RecyclerView এ সংজ্ঞায়িত ট্রেসেবল ব্লকের আইডি। createViewHolder() পদ্ধতির সোর্স কোড হল আপনার নিজস্ব কোডের মধ্যে ট্রেসেবল ব্লকগুলি কীভাবে সংজ্ঞায়িত করতে পারেন তার একটি উদাহরণ।

StartupTimingMetric , TraceSectionMetric , FrameTimingMetric , এবং PowerMetric , এই ডকুমেন্টের পরে বিস্তারিতভাবে আলোচনা করা হয়েছে। মেট্রিক্সের সম্পূর্ণ তালিকার জন্য, Metric এর উপশ্রেণীগুলি দেখুন।

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

ট্রেসসেকশনমেট্রিক এবং ফ্রেমটাইমিংমেট্রিকের ফলাফল।
চিত্র ১. TraceSectionMetric এবং FrameTimingMetric ফলাফল।

স্টার্টআপটাইমিংমেট্রিক

StartupTimingMetric নিম্নলিখিত মানগুলির সাথে অ্যাপ স্টার্টআপ টাইমিং মেট্রিক্স ক্যাপচার করে:

  • timeToInitialDisplayMs : সিস্টেম যখন একটি লঞ্চ ইন্টেন্ট গ্রহণ করে তখন থেকে যখন এটি গন্তব্য Activity এর প্রথম ফ্রেম রেন্ডার করে তখন পর্যন্ত সময়কাল।
  • timeToFullDisplayMs : সিস্টেমটি যখন একটি লঞ্চ ইন্টেন্ট গ্রহণ করে তখন থেকে reportFullyDrawn() পদ্ধতি ব্যবহার করে অ্যাপটি সম্পূর্ণরূপে আঁকা রিপোর্ট করার সময় পর্যন্ত সময়কাল। reportFullyDrawn() কলের পরে—অথবা ধারণ করার পরে—প্রথম ফ্রেম রেন্ডার করার সমাপ্তিতে পরিমাপটি থামে। এই পরিমাপটি Android 10 (API লেভেল 29) এবং তার আগের সংস্করণগুলিতে উপলব্ধ নাও হতে পারে।

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

স্টার্টআপটাইমিংমেট্রিক ফলাফল
চিত্র ২। StartupTimingMetric ফলাফল।

ফ্রেমটাইমিংমেট্রিক

FrameTimingMetric একটি বেঞ্চমার্ক দ্বারা তৈরি ফ্রেম থেকে সময় সংক্রান্ত তথ্য ক্যাপচার করে, যেমন স্ক্রোলিং বা অ্যানিমেশন, এবং নিম্নলিখিত মানগুলি আউটপুট করে:

  • frameOverrunMs : একটি নির্দিষ্ট ফ্রেম তার সময়সীমা কতক্ষণ মিস করে। ধনাত্মক সংখ্যাগুলি একটি ড্রপ করা ফ্রেম এবং দৃশ্যমান জ্যাঙ্ক বা তোতলানো নির্দেশ করে। ঋণাত্মক সংখ্যাগুলি নির্দেশ করে যে একটি ফ্রেম সময়সীমার চেয়ে কত দ্রুত। দ্রষ্টব্য: এটি শুধুমাত্র Android 12 (API স্তর 31) এবং উচ্চতর সংস্করণগুলিতে উপলব্ধ।
  • frameDurationCpuMs : UI থ্রেড এবং RenderThread উভয় ক্ষেত্রেই CPU-তে ফ্রেম তৈরি হতে যে পরিমাণ সময় লাগে।

এই পরিমাপগুলি ৫০তম, ৯০তম, ৯৫তম এবং ৯৯তম শতাংশের বন্টনে সংগ্রহ করা হয়।

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

ফ্রেমটাইমিংমেট্রিক ফলাফল
চিত্র ৩। FrameTimingMetric ফলাফল।

ট্রেসসেকশনমেট্রিক

TraceSectionMetric প্রদত্ত sectionName সাথে মিলে যাওয়া একটি ট্রেস সেকশন কতবার ঘটে এবং কত সময় নেয় তা ক্যাপচার করে। সময়ের জন্য, এটি মিলিসেকেন্ডে সর্বনিম্ন, মধ্যম এবং সর্বোচ্চ বার আউটপুট করে। ট্রেস সেকশনটি ফাংশন কল trace(sectionName) অথবা Trace.beginSection(sectionName) এবং Trace.endSection() অথবা তাদের অ্যাসিঙ্ক ভেরিয়েন্টের মধ্যে কোড দ্বারা সংজ্ঞায়িত করা হয়। এটি সর্বদা পরিমাপের সময় ক্যাপচার করা ট্রেস সেকশনের প্রথম উদাহরণ নির্বাচন করে। এটি ডিফল্টরূপে আপনার প্যাকেজ থেকে শুধুমাত্র ট্রেস সেকশন আউটপুট করে; আপনার প্যাকেজের বাইরের প্রক্রিয়াগুলি অন্তর্ভুক্ত করতে, targetPackageOnly = false সেট করুন।

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

ট্রেসসেকশনমেট্রিক
চিত্র ৪। TraceSectionMetric ফলাফল।

পাওয়ারমেট্রিক

PowerMetric আপনার পরীক্ষার সময়কালে প্রদত্ত পাওয়ার বিভাগগুলির জন্য শক্তি বা শক্তির পরিবর্তন ক্যাপচার করে। প্রতিটি নির্বাচিত বিভাগকে তার পরিমাপযোগ্য উপ-উপাদানগুলিতে বিভক্ত করা হয় এবং অনির্বাচিত বিভাগগুলিকে "অনির্বাচিত" মেট্রিকে যোগ করা হয়।

এই মেট্রিক্সগুলি সিস্টেম-ব্যাপী খরচ পরিমাপ করে, প্রতি-অ্যাপ ভিত্তিতে খরচ নয়, এবং Pixel 6, Pixel 6 Pro এবং পরবর্তী ডিভাইসগুলিতে সীমাবদ্ধ:

  • power<category>Uw : এই বিভাগে আপনার পরীক্ষার সময়কালে ব্যবহৃত শক্তির পরিমাণ।
  • energy<category>Uws : এই বিভাগে আপনার পরীক্ষার সময়কালের জন্য প্রতি ইউনিট সময়ে স্থানান্তরিত শক্তির পরিমাণ।

বিভাগগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • CPU
  • DISPLAY
  • GPU
  • GPS
  • MEMORY
  • MACHINE_LEARNING
  • NETWORK
  • UNCATEGORIZED

কিছু বিভাগের ক্ষেত্রে, যেমন CPU , অন্যান্য প্রক্রিয়ার মাধ্যমে করা কাজকে আপনার নিজস্ব অ্যাপের মাধ্যমে করা কাজ থেকে আলাদা করা কঠিন হতে পারে। হস্তক্ষেপ কমাতে, অপ্রয়োজনীয় অ্যাপ এবং অ্যাকাউন্টগুলি সরিয়ে ফেলুন বা সীমাবদ্ধ করুন।

পাওয়ারমেট্রিক ফলাফল
চিত্র ৫। PowerMetric ফলাফল।
{% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %} {% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %}