কীভাবে করবেন

আপনার পারফরম্যান্স যাত্রার জন্য লেভেলিং গাইড

৯ মিনিটের পাঠ
Alice Yuan
ডেভেলপার সম্পর্ক প্রকৌশলী

আপনার পারফরম্যান্স যাত্রার জন্য লেভেলিং গাইড

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

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

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


যে স্তরটি আপনার জন্য সবচেয়ে উপযুক্ত, সরাসরি সেখানে চলে যান:

স্তর ১: প্লে কনসোল প্রদত্ত ফিল্ড মনিটরিং ব্যবহার করুন

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

অ্যান্ড্রয়েড ভাইটালস হলো গুগলের একটি উদ্যোগ, যার মাধ্যমে এই ফিল্ড ডেটা স্বয়ংক্রিয়ভাবে সংগ্রহ করে আপনার সামনে তুলে ধরা হয়।

আমরা কীভাবে এই ডেটা সরবরাহ করি তার ব্যাখ্যা নিচে দেওয়া হলো:

  1. ডেটা সংগ্রহ: যখন কোনো ব্যবহারকারী সম্মতি দেন, তখন তার অ্যান্ড্রয়েড ডিভাইসটি আপনার অ্যাপসহ সমস্ত অ্যাপের গুরুত্বপূর্ণ পারফরম্যান্স ও স্থিতিশীলতার তথ্য স্বয়ংক্রিয়ভাবে লগ করে।
  2. সামগ্রিক ডেটা: গুগল প্লে আপনার অ্যাপের ব্যবহারকারীদের কাছ থেকে এই ডেটা সংগ্রহ করে এবং পরিচয় গোপন রাখে।
  3. সারফেস ইনসাইটস: এই ডেটা আপনার গুগল প্লে কনসোলের মধ্যে থাকা অ্যান্ড্রয়েড ভাইটালস ড্যাশবোর্ডে আপনাকে দেখানো হয়।

অ্যান্ড্রয়েড ভাইটালস ড্যাশবোর্ড অনেক মেট্রিক ট্র্যাক করে, কিন্তু কয়েকটি কোর ভাইটালস হিসেবে চিহ্নিত। এগুলো সবচেয়ে গুরুত্বপূর্ণ, কারণ এগুলো গুগল প্লে স্টোরে আপনার অ্যাপের দৃশ্যমানতা এবং র‍্যাঙ্কিংকে প্রভাবিত করতে পারে।

মূল অত্যাবশ্যকীয়

গুগল প্লে-এর মূল প্রযুক্তিগত গুণমানের মেট্রিক্স

Google Play-তে দৃশ্যমানতা সর্বাধিক করতে, আপনার অ্যাপটিকে এই মেট্রিকগুলোর জন্য নির্ধারিত ক্ষতিকর আচরণের সীমার নিচে রাখুন।

ব্যবহারকারীর অনুভূত ক্র্যাশ হার দৈনিক সক্রিয় ব্যবহারকারীদের শতকরা হার, যারা অন্তত একটি লক্ষণীয় ক্র্যাশের সম্মুখীন হয়েছেন।
ব্যবহারকারীর অনুভূত ANR হার দৈনিক সক্রিয় ব্যবহারকারীদের শতকরা হার, যারা অন্তত একটি লক্ষণীয় এএনআর (ANR) অনুভব করেছেন।
অতিরিক্ত ব্যাটারি ব্যবহার ওয়াচ ফেস সেশনের শতকরা হার যেখানে প্রতি ঘন্টায় ব্যাটারির ব্যবহার ৪.৪৪% ছাড়িয়ে যায়।
নতুন: অতিরিক্ত আংশিক ওয়েক লক ব্যবহারকারী সেশনগুলির শতকরা হার যেখানে ক্রমবর্ধমান, অব্যাহতিপ্রাপ্ত নয় এমন ওয়েক লক ব্যবহার ২ ঘন্টা অতিক্রম করে।

মূল গুরুত্বপূর্ণ বিষয়গুলোর মধ্যে রয়েছে ব্যবহারকারীর অনুভূত ক্র্যাশ রেট, এএনআর রেট, অতিরিক্ত ব্যাটারি ব্যবহার এবং অতিরিক্ত পার্শিয়াল ওয়েক লক সম্পর্কিত নতুন প্রবর্তিত মেট্রিক।

ব্যবহারকারীর অনুভূত এএনআর হার

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

crashesAnrs.png

সংঘটিত হওয়া কোনো নির্দিষ্ট ANR-এর গভীরে গিয়ে আপনি স্ট্যাক ট্রেস দেখতে পারেন, এবং সেইসাথে সমস্যাটির সম্ভাব্য কারণ সম্পর্কেও ধারণা পেতে পারেন।

insights.png

এছাড়াও, ANR ঘটার সাধারণ পরিস্থিতিগুলো নির্ণয় ও সমাধান করতে আমাদের ANR নির্দেশিকাটি দেখে নিন।

ব্যবহারকারীর মতে দুর্ঘটনার হার

আপনার অ্যাপের মধ্যে ঘটা ক্র্যাশগুলো আরও ভালোভাবে ডিবাগ করতে এবং স্ট্যাক ট্রেসের নমুনা দেখতে অ্যান্ড্রয়েড ভাইটালস ক্র্যাশ ড্যাশবোর্ড ব্যবহার করুন।

আমাদের ডকুমেন্টেশনে নির্দিষ্ট ক্র্যাশ ট্রাবলশুটিং সংক্রান্ত নির্দেশনাও রয়েছে। উদাহরণস্বরূপ, ‘ট্রাবলশুট ফোরগ্রাউন্ড সার্ভিসেস’ গাইডটিতে ক্র্যাশ ঘটার সাধারণ পরিস্থিতিগুলো শনাক্ত ও সমাধান করার উপায় নিয়ে আলোচনা করা হয়েছে।

অতিরিক্ত ব্যাটারি ব্যবহার

Wear OS-এ অতিরিক্ত ব্যাটারি খরচ হয় এমন ওয়াচ ফেস সেশন কমানোর জন্য, কীভাবে ব্যাটারির কার্যকারিতা উন্নত ও সংরক্ষণ করা যায় সে বিষয়ে Wear-এর গাইডটি দেখুন।

[নতুন] অতিরিক্ত আংশিক জাগরণ লক

আমরা সম্প্রতি ঘোষণা করেছি যে, যেসব অ্যাপ অতিরিক্ত আংশিক ওয়েক লক-এর সীমা অতিক্রম করবে, সেগুলোর বিরুদ্ধে ১ মার্চ ২০২৬ থেকে অতিরিক্ত ব্যবস্থা গ্রহণ করা হতে পারে।

মোবাইল ডিভাইসের ক্ষেত্রে, অ্যান্ড্রয়েড ভাইটালস মেট্রিকটি সেইসব নন-এক্সেম্পটেড ওয়েক লকের জন্য প্রযোজ্য, যা স্ক্রিন বন্ধ থাকা অবস্থায় এবং অ্যাপটি ব্যাকগ্রাউন্ডে বা কোনো ফোরগ্রাউন্ড সার্ভিস চালানোর সময় অর্জিত হয়। অ্যান্ড্রয়েড ভাইটালস আংশিক ওয়েক লক ব্যবহারকে অতিরিক্ত বলে মনে করে, যদি কোনো ওয়েক লক ২৪-ঘণ্টার মধ্যে কমপক্ষে দুই ঘণ্টার জন্য ধরে রাখা হয় এবং এটি ২৮ দিনের গড় হিসাবে আপনার অ্যাপের ৫%-এর বেশি সেশনকে প্রভাবিত করে।

অতিরিক্ত ওয়েক লক সমস্যা ডিবাগ ও সমাধান করতে আমাদের টেকনিক্যাল ব্লগ পোস্টটি দেখুন।

আমাদের অ্যান্ড্রয়েড ভাইটালস ডকুমেন্টেশন দেখুন এবং অ্যান্ড্রয়েড ভাইটালসকে আরও ভালোভাবে কাজে লাগানোর জন্য আপনার যাত্রা অব্যাহত রাখুন।

স্তর ২: অ্যাপ পারফরম্যান্স স্কোরের করণীয় বিষয়গুলো অনুসরণ করুন

এরপরে, আপনার অ্যাপের পারফরম্যান্স উন্নত করার জন্য সবচেয়ে কার্যকর পদক্ষেপগুলো খুঁজে বের করতে অ্যাপ পারফরম্যান্স স্কোর ব্যবহার করুন।

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

সহজ সাফল্য পেতে হলে, আপনার প্রথমে স্ট্যাটিক পারফরম্যান্স স্কোর দিয়ে শুরু করা উচিত। এগুলো প্রায়শই কনফিগারেশন পরিবর্তন বা টুলিং আপডেট হয়ে থাকে, যা পারফরম্যান্সে উল্লেখযোগ্য উন্নতি ঘটায়।

ধাপ ১: স্থির মূল্যায়ন সম্পাদন করুন

স্ট্যাটিক অ্যাসেসমেন্ট আপনার প্রকল্পের কনফিগারেশন এবং টুলিং গ্রহণ মূল্যায়ন করে। পারফরম্যান্স উন্নত করার জন্য এগুলো প্রায়শই দ্রুততম উপায়।

স্কোরবোর্ড পেজের স্ট্যাটিক স্কোর সেকশনে যান এবং নিম্নলিখিত কাজগুলো করুন:

  1. অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) সংস্করণ মূল্যায়ন করুন।
  2. পর্যায়ক্রমে R8 মিনিফিকেশন গ্রহণ করুন অথবা সবচেয়ে ভালো হয়, অ্যাপ কোড মিনিফাই ও অপ্টিমাইজ করতে R8-এর ফুল মোড ব্যবহার করুন।
  3. বেসলাইন প্রোফাইল গ্রহণ করুন, যা প্রথমবার চালু করার মুহূর্ত থেকেই কোড নির্বাহের গতি বাড়ায় এবং প্রতিটি নতুন অ্যাপ ইনস্টল ও প্রতিটি অ্যাপ আপডেটের সাথে কর্মক্ষমতা বৃদ্ধি করে।
  4. Dex লেআউট উন্নত করতে স্টার্টআপ প্রোফাইল ব্যবহার করুন। আপনার APK-এর DEX ফাইলগুলিতে কোডের লেআউট উন্নত করার মাধ্যমে, বিল্ড সিস্টেম এই স্টার্টআপ প্রোফাইলগুলি ব্যবহার করে ক্লাস এবং মেথডগুলিকে আরও অপ্টিমাইজ করে।
  5. Jetpack Compose-এর নতুন সংস্করণে আপগ্রেড করুন

ধাপ ২: গতিশীল মূল্যায়ন সম্পাদন করুন

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

স্কোরবোর্ড পেজের ডাইনামিক স্কোর সেকশনে যান এবং নিম্নলিখিত কাজগুলো করুন:

  1. একটি বাস্তব ডিভাইস দিয়ে আপনার পরীক্ষার পরিবেশ তৈরি করুন। পারফরম্যান্স সংক্রান্ত সমস্যাগুলোকে আরও প্রকট করে তোলার জন্য একটি নিম্নমানের ডিভাইস ব্যবহার করার কথা ভাবতে পারেন, এতে সেগুলো সহজে চিহ্নিত করা যাবে।
  2. লঞ্চার থেকে স্টার্টআপ টাইম পরিমাপ করুন। লঞ্চার আইকন থেকে আপনার অ্যাপটি কোল্ড স্টার্ট করুন এবং এটি ইন্টারেক্টিভ হওয়া পর্যন্ত সময় পরিমাপ করুন।
  3. নোটিফিকেশন থেকে অ্যাপ চালু হওয়ার সময় পরিমাপ করুন, যার লক্ষ্য হলো নোটিফিকেশন চালু হওয়ার সময় কমিয়ে কয়েক সেকেন্ডের নিচে নিয়ে আসা।
  4. আপনার মূল স্ক্রিন ও অ্যানিমেশনগুলো স্ক্রল করে রেন্ডারিং পারফরম্যান্স পরিমাপ করুন।

এই ধাপগুলো সম্পন্ন করার পর, আপনি স্ট্যাটিক এবং ডাইনামিক স্কোরের জন্য ১ থেকে ১০০-এর মধ্যে একটি স্কোর পাবেন, যা আপনাকে আপনার অ্যাপের পারফরম্যান্স সম্পর্কে ধারণা দেবে এবং কোথায় মনোযোগ দিতে হবে তা বুঝতে সাহায্য করবে।

স্তর ৩: স্থানীয় পারফরম্যান্স টেস্ট ফ্রেমওয়ার্ক ব্যবহার করুন

একবার আপনি ডাইনামিক পারফরম্যান্স মূল্যায়ন করা শুরু করলে, ম্যানুয়ালি পারফরম্যান্স পরিমাপ করা আপনার কাছে অত্যন্ত ক্লান্তিকর মনে হতে পারে। সেক্ষেত্রে Macrobenchmarks এবং UiAutomator-এর মতো পারফরম্যান্স টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে আপনার পারফরম্যান্স টেস্টিং স্বয়ংক্রিয় করার কথা বিবেচনা করতে পারেন।

ম্যাক্রোবেঞ্চমার্ক 💚 ইউআইঅটোমেটর

Macrobenchmark এবং UiAutomator-কে এমন দুটি টুল হিসেবে ভাবুন যা একসাথে কাজ করে: Macrobenchmark হলো পরিমাপের টুল। এটি একটি স্টপওয়াচ এবং ফ্রেম-রেট কাউন্টারের মতো, যা আপনার অ্যাপের বাইরে চলে। আপনার অ্যাপ চালু করা, মেট্রিকস (যেমন স্টার্টআপ টাইম বা ড্রপড ফ্রেম) রেকর্ড করা এবং অ্যাপটি বন্ধ করার দায়িত্ব এর। UiAutomator হলো রোবট ইউজার। এই লাইব্রেরিটি আপনাকে ডিভাইসের স্ক্রিনের সাথে ইন্টারঅ্যাক্ট করার জন্য কোড লিখতে দেয়। এটি একটি আইকন খুঁজে বের করতে, একটি বোতামে ট্যাপ করতে, একটি লিস্টে স্ক্রল করতে এবং আরও অনেক কিছু করতে পারে।

কীভাবে একটি পরীক্ষা লিখতে হয়

যখন আপনি কোনো টেস্ট লেখেন, তখন আপনার UiAutomator কোডটিকে একটি Macrobenchmark ব্লকের মধ্যে রাখেন।

  1. পরীক্ষাটি সংজ্ঞায়িত করুন: @MacrobenchmarkRule ব্যবহার করুন
  2. পরিমাপ শুরু করুন: benchmarkRule.measureRepeated কল করুন।
  3. UI পরিচালনা করুন: ঐ ব্লকের ভিতরে, আপনার অ্যাপ চালু করতে, UI এলিমেন্টগুলি খুঁজে বের করতে এবং সেগুলির সাথে ইন্টারঅ্যাক্ট করতে UiAutomator কোড ব্যবহার করুন।

একটি কম্পোজ লিস্টে স্ক্রোলিং জ্যাঙ্ক পরীক্ষা করার জন্য কোডটি কেমন দেখায়, তার একটি উদাহরণ এখানে দেওয়া হলো।

  benchmarkRule.measureRepeated(

    // ...

    metrics = listOf(

        FrameTimingMetric(),

    ),

    startupMode = StartupMode.COLD,

    iterations = 10,

) {

    // 1. Launch the app's main activity

    startApp()

    // 2. Find the list using its resource ID and scroll down

    onElement { viewIdResourceName == "$packageName.my_list" }

        .fling(Direction.DOWN)

}

৪. ফলাফল পর্যালোচনা করুন : প্রতিটি পরীক্ষামূলক চালনা আপনাকে সুনির্দিষ্টভাবে পরিমাপ করা তথ্য প্রদান করে, যা আপনার অ্যাপের কর্মক্ষমতা সম্পর্কে সেরা উপাত্ত দেয়।

  timeToInitialDisplayMs  min  1894.4,   median 2847.4,   max  3355.6


frameOverrunMs          P50 -3.2,  P90  6.2, P95  10.4, P99  119.5

সাধারণ ব্যবহারের ক্ষেত্রগুলি

ম্যাক্রোবেঞ্চমার্ক স্বয়ংক্রিয়ভাবে বেশ কিছু মূল মেট্রিক প্রদান করে। StartupTimingMetric আপনাকে অ্যাপ চালু হওয়ার প্রক্রিয়া নির্ভুলভাবে পরিমাপ করতে সাহায্য করে। FrameTimingMetric আপনাকে পরীক্ষা চলাকালীন একটি অ্যাপের রেন্ডারিং পারফরম্যান্স বুঝতে সক্ষম করে।

আপনার শেখা চালিয়ে যাওয়ার জন্য, ম্যাক্রোবেঞ্চমার্কস এবং ইউআইঅটোমেটর ব্যবহারের একটি বিশদ ও সম্পূর্ণ নির্দেশিকার পাশাপাশি কোড নমুনাও আমাদের কাছে রয়েছে।

স্তর ৪: পারফেটোর মতো ট্রেস অ্যানালাইসিস টুল ব্যবহার করুন

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

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

পারফরম্যান্স ডিবাগ করতে পারফেটটো কীভাবে ব্যবহার করবেন

ট্রেস অ্যানালাইসিস টুল ব্যবহার করে পারফরম্যান্স ডিবাগ করার সাধারণ কার্যপ্রণালী হলো ট্রেসটি রেকর্ড করা, লোড করা এবং বিশ্লেষণ করা।

ধাপ ১: একটি ট্রেস রেকর্ড করুন

আপনি বিভিন্ন পদ্ধতি ব্যবহার করে একটি সিস্টেম ট্রেস রেকর্ড করতে পারেন:

ধাপ ২: ট্রেসটি লোড করুন

একবার ট্রেস ফাইলটি পেয়ে গেলে, আপনাকে সেটি অ্যানালাইসিস টুলে লোড করতে হবে।

  1. ক্রোম খুলুন এবং ui.perfetto.dev- এ যান।
  2. আপনার .perfetto-trace (বা .pftrace ) ফাইলটি সরাসরি ব্রাউজার উইন্ডোতে ড্র্যাগ অ্যান্ড ড্রপ করুন।
  3. UI ফাইলটি প্রসেস করবে এবং টাইমলাইনটি প্রদর্শন করবে।

ধাপ ৩: ট্রেসটি বিশ্লেষণ করুন

পারফরম্যান্স সংক্রান্ত সমস্যা খতিয়ে দেখতে আপনি পারফেটটো ইউআই (Perfetto UI) বা অ্যান্ড্রয়েড স্টুডিও প্রোফাইলার (Android Studio Profiler) ব্যবহার করতে পারেন। পারফরম্যান্সের উপর ম্যাড স্কিলস (MAD Skills) সিরিজের এই পর্বটি দেখুন, যেখানে আমাদের পারফরম্যান্স ইঞ্জিনিয়ার কারমেন জ্যাকসন পারফেটটো ট্রেসভিউয়ার (Perfetto traceviewer) নিয়ে আলোচনা করেছেন।

পারফেটটো ব্যবহার করে সিস্টেম ট্রেস পরিদর্শনের দৃশ্যকল্প

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

জ্যাঙ্ক (ড্রপড ফ্রেম) ডিবাগিং

আপনার অ্যাপ স্ক্রোল করার সময় যদি আটকে যায়, তাহলে পারফেটটো আপনাকে স্পষ্টভাবে দেখিয়ে দিতে পারে কেন একটি নির্দিষ্ট ফ্রেম তার ডেডলাইন মিস করেছে।

যদি এটি অ্যাপের কারণে হয়, তাহলে আপনি দেখতে পারেন যে আপনার প্রধান থ্রেডটি দীর্ঘ সময় ধরে ভারী পার্সিং করছে; এটি এমন পরিস্থিতি নির্দেশ করে যেখানে আপনার কাজটি অ্যাসিঙ্ক্রোনাস প্রসেসিং-এ স্থানান্তর করা উচিত।

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

ধীরগতির অ্যাপ স্টার্টআপ বিশ্লেষণ

স্টার্টআপ একটি জটিল প্রক্রিয়া, যার মধ্যে সিস্টেম ইনিট, প্রসেস ফোর্কিং এবং রিসোর্স লোডিং অন্তর্ভুক্ত। পারফেটটো এই টাইমলাইনটিকে নির্ভুলভাবে ভিজ্যুয়ালাইজ করে।

আপনি বাইন্ডার কলের (আন্তঃপ্রক্রিয়া যোগাযোগ) জন্য অপেক্ষা করছেন কিনা তা দেখতে পারেন। যদি আপনার onCreate সিস্টেম PackageManager কাছ থেকে প্রতিক্রিয়ার জন্য দীর্ঘ সময় অপেক্ষা করে, তাহলে পারফেটটো সেই অবরুদ্ধ অবস্থাটি স্পষ্টভাবে দেখাবে।

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

ব্যাটারির চার্জ শেষ হওয়া এবং সিপিইউ ব্যবহারের তদন্ত

যেহেতু পারফেটটো পুরো সিস্টেমটি দেখতে পায়, তাই এটি অদৃশ্য শক্তি ক্ষয়কারী উৎস খুঁজে বের করার জন্য একদম উপযুক্ত।

আপনি “ডিভাইস স্টেট” ট্র্যাকের অধীনে শনাক্ত করতে পারেন কোন প্রসেসগুলো ওয়েক লক ধরে রেখেছে, যা ডিভাইসটিকে স্লিপিং মোডে যেতে বাধা দিচ্ছে। আমাদের ওয়েক লক ব্লগ পোস্টে এ বিষয়ে আরও জানুন। এছাড়াও, আপনার ব্যাকগ্রাউন্ড জবগুলো খুব ঘন ঘন চলছে কিনা বা অপ্রয়োজনে সিপিইউকে জাগিয়ে তুলছে কিনা তা দেখতে পারফেটটো (Perfetto) ব্যবহার করুন।

স্তর ৫: আপনার নিজস্ব পারফরম্যান্স ট্র্যাকিং ফ্রেমওয়ার্ক তৈরি করুন

চূড়ান্ত স্তরটি সেইসব অ্যাপের জন্য, যাদের পারফরম্যান্স ট্র্যাকিং ফ্রেমওয়ার্ক রক্ষণাবেক্ষণের জন্য প্রয়োজনীয় জনবলসহ দল রয়েছে।

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

ApplicationStartInfo , ProfilingManager , এবং ApplicationExitInfo ব্যবহার করে আপনি একটি শক্তিশালী টেলিমেট্রি সিস্টেম তৈরি করতে পারেন, যা আপনার অ্যাপটি কীভাবে চালু হয়েছিল, চলার সময় এটি কী কী করেছিল তার বিস্তারিত তথ্য এবং কেন এটি বন্ধ হয়ে গেল, সে সম্পর্কে রিপোর্ট করে।

ApplicationStartInfo: অ্যাপটি কীভাবে চালু হয়েছে তার ট্র্যাকিং।

অ্যান্ড্রয়েড ১৫ (এপিআই ৩৫) থেকে উপলব্ধ, ApplicationStartInfo অ্যাপ চালু হওয়ার সময়কার খুঁটিনাটি তথ্য প্রদান করে। এই ডেটার মধ্যে অন্তর্ভুক্ত থাকে অ্যাপটি কোল্ড, ওয়ার্ম বা হট স্টার্ট ছিল কিনা এবং বিভিন্ন স্টার্টআপ পর্যায়ের সময়কাল।

এটি আপনাকে প্রোডাকশন ডেটা ব্যবহার করে একটি বেসলাইন স্টার্টআপ মেট্রিক তৈরি করতে সাহায্য করে, যা পরবর্তীতে অপ্টিমাইজ করার জন্য কাজে লাগে এবং যা স্থানীয়ভাবে পুনরুৎপাদন করা কঠিন হতে পারে। আপনি এই মেট্রিকগুলো ব্যবহার করে স্টার্টআপ ফ্লো অপ্টিমাইজ করার জন্য A/B টেস্ট চালাতে পারেন।

লক্ষ্য হলো প্রতিটি প্রারম্ভিক পর্যায়কে ম্যানুয়ালি পরিমাপ না করেই উৎক্ষেপণের মেট্রিকগুলো নির্ভুলভাবে লিপিবদ্ধ করা।

অ্যাপ্লিকেশন চালু হওয়ার কিছুক্ষণ পর আপনি এই ডেটা লেজিলি কোয়েরি করতে পারবেন।

প্রোফাইলিংম্যানেজার: ধীরগতির কারণ চিহ্নিত করা

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

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

আপনি এমন একটি লিসেনার রেজিস্টার করতে পারেন যা নির্দিষ্ট শর্ত পূরণ হলে সক্রিয় হবে, অথবা জ্যাঙ্ক, অতিরিক্ত মেমরি বা ব্যাটারি ড্রেনের মতো কোনো পারফরম্যান্স সমস্যা শনাক্ত করলে ম্যানুয়ালি এটি চালু করতে পারেন।

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

ApplicationExitInfo: অ্যাপটি বন্ধ হয়ে যাওয়ার কারণ ট্র্যাক করা হচ্ছে

ApplicationExitInfo (API 30) আপনাকে জানায় আপনার আগের প্রসেসটি কেন বন্ধ হয়ে গেছে। নেটিভ ক্র্যাশ, ANR, বা অতিরিক্ত মেমরি ব্যবহারের (OOM) কারণে সিস্টেম বন্ধ হয়ে যাওয়া খুঁজে বের করার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ। এছাড়াও, আপনি getTraceInputStream API ব্যবহার করে একটি বিস্তারিত টুম্বস্টোন ট্রেস পেতে পারবেন।

এপিআই-এর লক্ষ্য হলো এমন স্থিতিশীলতার সমস্যাগুলো বোঝা, যেগুলো সাধারণ জাভা ক্র্যাশ রিপোর্টারগুলোকে (যেমন লো মেমোরি কিল) সক্রিয় করে না।

আপনাকে এই API-টি চালু করতে হবে   পরবর্তী অ্যাপ লঞ্চ।

পরবর্তী পদক্ষেপ

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

আগামীকাল Ask Android-এর জন্য চোখ রাখুন।

আপনি R8 দিয়ে আপনার অ্যাপের আকার ছোট করেছেন এবং প্রোফাইল গাইডেড অপটিমাইজেশন দিয়ে রানটাইম অপটিমাইজ করেছেন। এবার আপনার অ্যাপের পারফরম্যান্স পরিমাপ করুন।

আগামীকাল আমাদের লাইভ 'আস্ক অ্যান্ড্রয়েড' সেশনে যোগ দিন। এখনই #AskAndroid ব্যবহার করে আপনার প্রশ্ন জিজ্ঞাসা করুন এবং বিশেষজ্ঞদের কাছ থেকে তার উত্তর জেনে নিন।

    লিখেছেন:

    পড়তে থাকুন