কর্মক্ষমতা পরিমাপ এবং বিশ্লেষণ উদাহরণ

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

সিস্ট্রেস ব্যবহার করে ডিবাগিং অ্যাপ স্টার্টআপ

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

সিস্ট্রেস বা পারফেটো ব্যবহার করে

মৌলিক সিস্ট্রেস ব্যবহার সম্পর্কে আরও জানতে, নিম্নলিখিত ভিডিওটি দেখুন: ডিবাগিং অ্যাপ্লিকেশন পারফরম্যান্স

স্টার্টআপের সময় বিশ্লেষণ করার জন্য, আপনাকে প্রথমে বুঝতে হবে স্টার্টআপের সময় কী ঘটে। এই পৃষ্ঠায় যা ব্যাখ্যা করা হয়েছে তার চেয়ে আপনি যদি আরও তথ্য চান, অ্যাপ স্টার্টআপ সময়ের ডকুমেন্টেশন অ্যাপ্লিকেশন শুরু করার প্রক্রিয়াটির একটি ওভারভিউ প্রদান করে।

অ্যাপ স্টার্টআপের ধাপগুলো হল:

  • প্রক্রিয়া চালু করুন
  • জেনেরিক অ্যাপ্লিকেশন অবজেক্ট শুরু করুন
  • ক্রিয়াকলাপ তৈরি করুন এবং শুরু করুন
  • লেআউট স্ফীত
  • প্রথম ফ্রেম আঁকুন

স্টার্টআপ প্রকারের নিম্নলিখিত ধাপ রয়েছে:

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

আমরা ডেভেলপার বিকল্পগুলিতে উপলব্ধ অন-ডিভাইস সিস্টেম ট্রেসিং অ্যাপ ব্যবহার করে সিস্ট্রেস ক্যাপচার করার পরামর্শ দিই। আপনি যদি কমান্ড-লাইন সরঞ্জামগুলি ব্যবহার করতে চান, Perfetto Android 10 (API স্তর 29) এবং উচ্চতর ব্যবহার করার জন্য উপলব্ধ, যখন আগের সংস্করণগুলির ডিভাইসগুলি systrace ব্যবহার করা উচিত৷

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

যখন সম্ভব, আমরা সুপারিশ করি যে অ্যাপ্লিকেশনটির দৃষ্টিকোণ থেকে স্টার্টআপ সম্পন্ন হলে আপনি একটি reportFullyDrawn কল (অ্যান্ড্রয়েড 10 এবং উচ্চতর সংস্করণে উপলব্ধ) অন্তর্ভুক্ত করুন৷

এই সিস্টেম ট্রেসগুলিতে সন্ধান করার জন্য কিছু জিনিস অন্তর্ভুক্ত:

Monitor contention
চিত্র 1. মনিটর-সুরক্ষিত সংস্থানগুলির জন্য প্রতিযোগিতা অ্যাপ স্টার্টআপে উল্লেখযোগ্য বিলম্ব করতে পারে।

সিঙ্ক্রোনাস বাইন্ডার লেনদেন
চিত্র 2. আপনার অ্যাপ্লিকেশনের জটিল পথে অপ্রয়োজনীয় লেনদেনের জন্য দেখুন।

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

শুরুতে I/O
চিত্র 4. স্টার্টআপের সময় I/O পরীক্ষা করুন এবং দীর্ঘ স্টলগুলি সন্ধান করুন।

চিত্র 4 এর সাথে, লক্ষ্য করুন যে একই সময়ে I/O সম্পাদনকারী অন্যান্য প্রক্রিয়াগুলি I/O বিবাদের কারণ হতে পারে, তাই নিশ্চিত করুন যে অন্যান্য প্রক্রিয়াগুলি চলছে না।

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

এছাড়াও জ্যাঙ্কের সাধারণ উত্সগুলির গাইডটি দেখুন

অ্যান্ড্রয়েড স্টুডিও মেমরি প্রোফাইলার ব্যবহার করুন

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

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

প্রোফাইলিং অ্যাপ মেমরি নিম্নলিখিত ধাপে ভেঙ্গে যায়:

1. মেমরি সমস্যা সনাক্ত করুন

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

বস্তুর সংখ্যা বৃদ্ধি
চিত্র 5. সময়ের সাথে সাথে বস্তুর বরাদ্দ বৃদ্ধি দেখানো মেমরি প্রোফাইলার।

আবর্জনা সংগ্রহ
চিত্র 6. মেমরি প্রোফাইলার আবর্জনা সংগ্রহের ঘটনাগুলি দেখায়।।:image-caption}

একবার আপনি একটি ব্যবহারের ক্ষেত্রে সনাক্ত করেছেন যা মেমরির চাপ যোগ করছে, মূল কারণগুলির জন্য বিশ্লেষণ শুরু করুন।

2. মেমরি চাপ হট স্পট নির্ণয়

বরাদ্দ এবং অগভীর আকার উভয়ই কল্পনা করতে টাইমলাইনে একটি পরিসর নির্বাচন করুন।

বরাদ্দ এবং অগভীর আকার কল্পনা করুন
চিত্র 7. মেমরি প্রোফাইলার টাইমলাইনে একটি নির্বাচিত পরিসরের জন্য বরাদ্দ এবং মাপ দেখাচ্ছে।

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

ক্লাস অনুসারে সাজান

ক্লাস অনুসারে সাজানো দরকারী যখন আপনি এমন ক্লাসগুলি খুঁজে পেতে চান যা এমন বস্তু তৈরি করছে যা অন্যথায় মেমরি পুল থেকে ক্যাশে করা বা পুনরায় ব্যবহার করা উচিত।

উদাহরণস্বরূপ, কল্পনা করুন যে আপনি একটি অ্যাপ প্রতি সেকেন্ডে "ভারটেক্স" নামক শ্রেণীতে 2,000টি বস্তু তৈরি করতে দেখছেন। এটি প্রতি সেকেন্ডে 2,000 দ্বারা বরাদ্দের সংখ্যা বৃদ্ধি করবে এবং আপনি ক্লাস অনুসারে বাছাই করার সময় এটি দেখতে পাবেন। যে আবর্জনা উৎপন্ন এড়াতে এই ধরনের বস্তু পুনরায় ব্যবহার করা উচিত? যদি উত্তরটি হ্যাঁ হয়, তাহলে সম্ভবত একটি মেমরি পুল বাস্তবায়নের প্রয়োজন হবে।

কলস্ট্যাকের মাধ্যমে সাজান

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

অগভীর বনাম ধরে রাখা আকার

অগভীর আকার শুধুমাত্র বস্তুর মেমরি ট্র্যাক করে, তাই এটি প্রাথমিকভাবে আদিম দ্বারা গঠিত সাধারণ ক্লাস ট্র্যাক করার জন্য সবচেয়ে দরকারী।

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

সম্পূর্ণ মেমরি ডাম্প
চিত্র 8. মেমরি প্রোফাইলার টুলবারে ডাম্প জাভা হিপ বোতামে ক্লিক করে আপনি যেকোনো সময় একটি মেমরি ডাম্প তৈরি করতে পারেন।

একটি কলাম হিসাবে যোগ করা হয়েছে
চিত্র 9. একটি মেমরি ডাম্প তৈরি করা সেই স্তূপে বস্তুর বরাদ্দ দেখানো একটি কলাম প্রদর্শন করে।

3. একটি অপ্টিমাইজেশান প্রভাব পরিমাপ

একটি মেমরি অপ্টিমাইজেশান উন্নতি যা পরিমাপ করা সহজ তা হল আবর্জনা সংগ্রহ। যখন একটি অপ্টিমাইজেশান মেমরির চাপ হ্রাস করে, তখন আপনি কম আবর্জনা সংগ্রহ (GCs) দেখতে পাবেন। এটি পরিমাপ করতে, প্রোফাইলার টাইমলাইনে GC-এর মধ্যে সময় পরিমাপ করুন। মেমরি অপ্টিমাইজেশনের পরে আপনি GC-এর মধ্যে দীর্ঘ সময় দেখতে পাবেন।

এই ধরনের মেমরি উন্নতির চূড়ান্ত প্রভাব হল:

  • অ্যাপটির মেমরির চাপ ক্রমাগত না থাকলে মেমরির বাইরের সমস্যার কারণে অ্যাপটি প্রায়ই মারা যাবে।
  • কম GC থাকা জ্যাঙ্ক মেট্রিক্স উন্নত করে। এর কারণ হল GC গুলি CPU বিরোধের কারণ হয়ে দাঁড়ায়, যা GC চলাকালীন রেন্ডারিং কাজগুলিকে পিছিয়ে দিতে পারে।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}