হিরো বেঞ্চমার্ক

হিরো বেঞ্চমার্ক হলো এমন একগুচ্ছ বেঞ্চমার্ক যা অ্যাপ ব্যবহারকারীর উচ্চ-স্তরের যাত্রাপথকে অন্তর্ভুক্ত করে, যেমন ওপেন-সোর্স পোকেডেক্স অ্যাপে অ্যাপ চালু করা বা স্ক্রোল করা।

  • স্টার্টআপ হিরো বেঞ্চমার্ক: অ্যাপ খোলার মুহূর্ত থেকে কন্টেন্ট প্রদর্শিত হওয়া পর্যন্ত সময় ট্র্যাক করা।
  • স্ক্রল হিরো বেঞ্চমার্ক: ছবিসহ একটি লেজি গ্রিডের স্ক্রলিং পারফরম্যান্স পরিমাপ করা।

পরীক্ষার সেটআপ

  • অ্যাপ নির্বাচন: আমরা ওপেন-সোর্স পোকেডেক্স অ্যাপটি ব্যবহার করে এই পরীক্ষাগুলো পরিচালনা করেছি এবং এর ভিউ-ভিত্তিককম্পোজ-ভিত্তিক সংস্করণগুলোর মধ্যে তুলনা করেছি। বাস্তব জগতের পরিস্থিতি তুলে ধরার জন্য অ্যাপটি নির্বাচন করা হয়েছিল এবং এটি কম্পোজ টিমের তৈরি নয়।
  • হার্ডওয়্যার সেটআপ: আমরা লকড সিপিইউ এবং জিপিইউ সহ অ্যান্ড্রয়েড ১২ (এপিআই ৩১) চালিত একটি পিক্সেল ৩এ ফোনে বেঞ্চমার্কগুলো চালিয়েছি। হিরো বেঞ্চমার্কের জন্য এই ডিভাইসটিকে স্ট্যান্ডার্ড পারফরম্যান্স বেসলাইন হিসেবে ব্যবহার করা হয়।
  • বিল্ড সেটআপ: বেঞ্চমার্কগুলো R8 সক্রিয় করে রিলিজ মোডে তৈরি অ্যাপটি ব্যবহার করে। জাস্ট-ইন-টাইম (JIT) কম্পাইলেশনের ফলে সৃষ্ট অস্থিতিশীলতা কমাতে অ্যাপটি সম্পূর্ণরূপে প্রি-কম্পাইল করা হয়েছে।
  • ফলাফল নির্বাচন : সবচেয়ে খারাপ পরিস্থিতি বিশ্লেষণ নিশ্চিত করার জন্য, বেঞ্চমার্ক ফলাফল থেকে চরম আউটলায়ার এবং অ-প্রতিনিধিত্বমূলক নয়েজ বাদ দেওয়া হয়েছিল। এরপর উচ্চ-সীমার পারফরম্যান্স ডেটার মধ্যক মানগুলো নির্বাচন করে একটি বেসলাইন স্থাপন করা হয়েছিল।

স্টার্টআপ হিরো বেঞ্চমার্ক

স্টার্টআপ পরিমাপ করার জন্য, আমরা PokedexStartupBenchmark ব্যবহার করেছি। PokedexStartupBenchmark পরিমাপ করে যে, ব্যবহারকারীর কাছে Pokedex অ্যাপটি দৃশ্যমান হতে কত সময় লাগে।

App launch can take place in one of three states : cold start, warm start, or hot start. Each state affects how long it takes for an app to become visible to the user. In a cold start, the app starts from scratch. In this benchmark, we measure the app launch performance in cold start state. We recommend that you always optimize the app based on an assumption of a cold start. Doing so can improve the performance of warm and hot starts as well.

অ্যাপ চালু হওয়ার সময় পরিমাপ করতে আমরা যে মেট্রিকগুলো ব্যবহার করি, সেগুলো হলো প্রাথমিকভাবে প্রদর্শিত হওয়ার সময় এবং সম্পূর্ণরূপে প্রদর্শিত হওয়ার সময়

প্রাথমিক প্রদর্শনের সময়

টাইম টু ইনিশিয়াল ডিসপ্লে (TTID) একটি অ্যাপের প্রথম ফ্রেম তৈরি করতে যে সময় লাগে তা পরিমাপ করে; এর মধ্যে অন্তর্ভুক্ত থাকে কোল্ড স্টার্টের সময় প্রসেস ইনিশিয়ালাইজেশন, কোল্ড বা ওয়ার্ম স্টার্টের সময় অ্যাক্টিভিটি তৈরি এবং প্রথম ফ্রেমটি প্রদর্শন করা।

PokedexStartupBenchmark এ, কোল্ড স্টার্টের ক্ষেত্রে Compose 1.11, Views for TTID-এর চেয়ে ২.৫% ধীরগতির।

Compose 1.11, Views for TTID-এর চেয়ে ২.৫% ধীরগতির।
চিত্র ১: TTID-এর জন্য Views-এর সাথে Compose 1.11-এর তুলনা।

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

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

PokedexStartupBenchmark এ, কোল্ড স্টার্টের ক্ষেত্রে TTFD-এর জন্য Compose 1.11, Views-এর চেয়ে ১৩.০% ধীরগতির।

Compose 1.11, Views for TTFD-এর চেয়ে 13.0% ধীরগতির।
চিত্র ২: TTFD-এর জন্য Views-এর সাথে Compose 1.11-এর তুলনা।

স্ক্রোল হিরো বেঞ্চমার্ক

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

জ্যাঙ্ক রেট

অ্যান্ড্রয়েড ডিভাইসগুলো প্রতি সেকেন্ডে সর্বোচ্চ ৬০ বা ১২০ ফ্রেম (fps) পর্যন্ত রেন্ডার করে। এর মানে হলো, একটি ফ্রেম তৈরি করার জন্য সিস্টেমের একটি কঠোর সময়সীমা থাকে (উদাহরণস্বরূপ, ৬০fps-এর জন্য ১৬.৬ মিলিসেকেন্ড)। অ্যাপটি তার কাজ করতে যদি খুব বেশি সময় নেয়, তবে এর ফলে একটি দৃশ্যমান স্টাটার বা আটকে যাওয়া দেখা যেতে পারে, যাকে আমরা জ্যাঙ্ক (jank) বলি।

PokedexScrollBenchmark এ, Compose 1.9.0 সংস্করণ থেকে Compose এবং Views একই রকম ০.২১% জ্যাঙ্ক পারফরম্যান্স অর্জন করেছে। প্রকৃত অর্থে, প্রতি ৪৮৫টি ফ্রেমের মধ্যে ১টি জ্যাঙ্কি ছিল।

এই বেঞ্চমার্কগুলো দেখায় যে, স্ক্রোল করার সময় ঝাঁকুনির (jank) ক্ষেত্রে Compose 1.9 এবং এর পরবর্তী সংস্করণগুলোর পারফরম্যান্স Views-এর সমতুল্য।

Compose 1.9.0 সংস্করণ থেকে, Compose এবং Views-এর জ্যাঙ্ক রেট একই।
Compose 1.9.0 সংস্করণ থেকে, Compose এবং Views-এর জ্যাঙ্ক রেট একই।

হিরো বেঞ্চমার্ক চালান

পারফরম্যান্সের ফলাফল যাচাই করতে এবং স্থানীয়ভাবে বেঞ্চমার্কগুলো চালাতে:

  1. সোর্স কোড দেখতে AndroidX গাইডটি অনুসরণ করুন।
  2. হিরো বেঞ্চমার্কস সোর্স কোডে দেওয়া নির্দেশাবলী অনুসরণ করুন।

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