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

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

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

কোটলিন

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 হল ট্রেসযোগ্য ব্লকের ID যা RecyclerView এ সংজ্ঞায়িত করা হয়েছে। createViewHolder() পদ্ধতির সোর্স কোড হল আপনি কীভাবে আপনার নিজের কোডের মধ্যে ট্রেসযোগ্য ব্লকগুলিকে সংজ্ঞায়িত করতে পারেন তার একটি উদাহরণ।

StartupTimingMetric , TraceSectionMetric , FrameTimingMetric , এবং PowerMetric , এই নথিতে পরে বিস্তারিতভাবে কভার করা হয়েছে৷

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

TraceSectionMetric এবং FrameTimingMetric এর ফলাফল।
চিত্র 1. TraceSectionMetric এবং FrameTimingMetric এর ফলাফল।

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

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

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

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

StartupTimingMetric ফলাফল
চিত্র 2. StartupTimingMetric ফলাফল।

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

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

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

এই পরিমাপগুলি 50 তম, 90 তম, 95 তম এবং 99 তম শতাংশের বিতরণে সংগ্রহ করা হয়।

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

FrameTimingMetric ফলাফল
চিত্র 3. FrameTimingMetric ফলাফল।

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

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

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

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

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

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

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

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

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

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

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

পাওয়ারমেট্রিক ফলাফল
চিত্র 5. PowerMetric ফলাফল।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}