অ্যান্ড্রয়েডে কিছু অন-ডিভাইস ডেভেলপার অপশন রয়েছে যা আপনাকে বুঝতে সাহায্য করে যে আপনার অ্যাপ তার UI রেন্ডার করতে কোথায় সমস্যার সম্মুখীন হচ্ছে, যেমন প্রয়োজনের চেয়ে বেশি রেন্ডারিং করা, অথবা দীর্ঘ থ্রেড এবং GPU অপারেশন চালানো। এই পৃষ্ঠায় GPU ওভারড্র ডিবাগ করার এবং GPU রেন্ডারিং প্রোফাইল করার পদ্ধতি বর্ণনা করা হয়েছে।
অন-ডিভাইস ডেভেলপার অপশন সম্পর্কে আরও জানতে, এবং সেগুলি কীভাবে সক্রিয় করতে হয় তা জানতে, "অন-ডিভাইস ডেভেলপার অপশন কনফিগার করুন" পড়ুন।
প্রোফাইল জিপিইউ রেন্ডারিং গতি
প্রোফাইল জিপিইউ রেন্ডারিং টুলটি একটি স্ক্রলিং হিস্টোগ্রাম হিসেবে দৃশ্যমানভাবে প্রদর্শন করে যে, প্রতি ফ্রেমে ১৬.৬৭ মিলিসেকেন্ডের বেঞ্চমার্কের সাপেক্ষে একটি ইউআই উইন্ডোর ফ্রেমগুলো রেন্ডার করতে কত সময় লাগে।
কম শক্তিশালী জিপিইউ-তে, উপলব্ধ ফিল-রেট (যে গতিতে জিপিইউ ফ্রেম বাফার পূরণ করতে পারে) বেশ কম হতে পারে। একটি ফ্রেম আঁকার জন্য প্রয়োজনীয় পিক্সেলের সংখ্যা বাড়ার সাথে সাথে, নতুন কমান্ডগুলো প্রসেস করতে জিপিইউ-এর বেশি সময় লাগতে পারে, যার ফলে জিপিইউ-এর কাজ শেষ না হওয়া পর্যন্ত সিস্টেমের বাকি অংশকে অপেক্ষা করতে হয়।
প্রোফাইলিং টুলটি আপনাকে শনাক্ত করতে সাহায্য করে যে কখন জিপিইউ পিক্সেল আঁকতে গিয়ে অতিরিক্ত চাপে পড়ে অথবা ভারী ওভারড্র-এর কারণে ভারাক্রান্ত হয়।
প্রোফাইলার সক্রিয় করুন
শুরু করার আগে, নিশ্চিত করুন যে আপনি অ্যান্ড্রয়েড ৪.১ (এপিআই লেভেল ১৬) বা তার উচ্চতর সংস্করণের কোনো ডিভাইস ব্যবহার করছেন এবং ডেভেলপার অপশন চালু করেছেন । আপনার অ্যাপ ব্যবহার করার সময় ডিভাইসের জিপিইউ রেন্ডারিং প্রোফাইলিং শুরু করতে, নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:
- আপনার ডিভাইসে সেটিংস- এ যান এবং ডেভেলপার অপশন-এ ট্যাপ করুন।
- মনিটরিং বিভাগে, ডিভাইসে চলমান অ্যান্ড্রয়েডের সংস্করণের উপর নির্ভর করে প্রোফাইল জিপিইউ রেন্ডারিং অথবা প্রোফাইল এইচডব্লিউইউআই রেন্ডারিং নির্বাচন করুন।
- আপনার ডিভাইসের স্ক্রিনে গ্রাফগুলো ওভারলে করতে, প্রোফাইল জিপিইউ রেন্ডারিং ডায়ালগে ‘অন স্ক্রিন অ্যাজ বার্স’ বিকল্পটি বেছে নিন।
- যে অ্যাপটির প্রোফাইল তৈরি করতে চান, সেটি খুলুন।
আউটপুট পরিদর্শন করুন
চিত্র ১-এ দেখানো প্রোফাইল জিপিইউ রেন্ডারিং গ্রাফের বিবর্ধিত ছবিতে, আপনি রঙিন অংশটি দেখতে পারেন, যেমনটি অ্যান্ড্রয়েড ৬.০ (এপিআই লেভেল ২৩)-এ প্রদর্শিত হয়েছে।

চিত্র ১. প্রোফাইল জিপিইউ রেন্ডারিং গ্রাফের বিবর্ধিত রূপ।
আউটপুট সম্পর্কে কয়েকটি বিষয় লক্ষণীয়:
- প্রতিটি দৃশ্যমান অ্যাপ্লিকেশনের জন্য টুলটি একটি গ্রাফ প্রদর্শন করে।
- অনুভূমিক অক্ষ বরাবর প্রতিটি উল্লম্ব বার একটি ফ্রেমকে নির্দেশ করে, এবং প্রতিটি উল্লম্ব বারের উচ্চতা ফ্রেমটি রেন্ডার হতে লাগা সময়কে (মিলিসেকেন্ডে) নির্দেশ করে।
- অনুভূমিক সবুজ রেখাটি ১৬.৬৭ মিলিসেকেন্ড নির্দেশ করে। প্রতি সেকেন্ডে ৬০ ফ্রেম পেতে হলে, প্রতিটি ফ্রেমের উল্লম্ব বারটিকে এই রেখার নিচে থাকতে হবে। যখনই কোনো বার এই রেখা অতিক্রম করবে, অ্যানিমেশনে বিরতি দেখা দিতে পারে।
- এই টুলটি ১৬.৬৭ মিলিসেকেন্ডের সীমা অতিক্রমকারী ফ্রেমগুলোকে সংশ্লিষ্ট বারটিকে চওড়া ও কম স্বচ্ছ করে হাইলাইট করে।
- প্রতিটি বারে রঙিন উপাদান থাকে যা রেন্ডারিং পাইপলাইনের একটি ধাপকে নির্দেশ করে। ডিভাইসের এপিআই লেভেলের উপর নির্ভর করে উপাদানের সংখ্যা পরিবর্তিত হয়।
অ্যান্ড্রয়েড ৬.০ বা তার উচ্চতর সংস্করণে চালিত ডিভাইস ব্যবহার করার সময় প্রোফাইলার আউটপুটের একটি উল্লম্ব বারের প্রতিটি অংশের বর্ণনা নিচের সারণিতে দেওয়া হয়েছে।
| বারের উপাদান | রেন্ডারিং পর্যায় | বর্ণনা |
|---|---|---|
| সোয়াপ বাফার | এটি সেই সময়কে বোঝায়, যা জিপিইউ-এর কাজ শেষ হওয়ার জন্য সিপিইউ অপেক্ষা করে। যদি এই বারটি লম্বা হয়ে যায়, তার মানে হলো অ্যাপটি জিপিইউ-এর উপর অতিরিক্ত কাজ করছে। | |
| কমান্ড ইস্যু | এটি অ্যান্ড্রয়েডের ২ডি রেন্ডারারের দ্বারা ডিসপ্লে লিস্ট আঁকা এবং পুনরায় আঁকার জন্য OpenGL-কে কমান্ড দিতে ব্যয়িত সময়কে নির্দেশ করে। এই বারের উচ্চতা প্রতিটি ডিসপ্লে লিস্ট কার্যকর হতে লাগা মোট সময়ের সমানুপাতিক—ডিসপ্লে লিস্টের সংখ্যা যত বেশি হবে, লাল বারটিও তত লম্বা হবে। | |
| সিঙ্ক এবং আপলোড | এটি জিপিইউ-তে বিটম্যাপ তথ্য আপলোড করতে লাগা সময়কে নির্দেশ করে। এর একটি বড় অংশ নির্দেশ করে যে, অ্যাপটি বিপুল পরিমাণ গ্রাফিক্স লোড করতে যথেষ্ট সময় নিচ্ছে। | |
| ড্র | এটি drawLine মতো ড্রয়িং কমান্ড রেকর্ড করতে ব্যবহৃত সময়কে নির্দেশ করে। `Compose`-এ, এই পর্যায়ে কখনও কখনও `measure` এবং `layout` অপারেশনও অন্তর্ভুক্ত থাকতে পারে। যদি এই বারটি লম্বা হয়, তাহলে একটি সিস্টেম ট্রেস ক্যাপচার করুন এবং বিস্তারিত বিশ্লেষণের জন্য `Perfetto` ব্যবহার করে তা পরীক্ষা করুন। | |
| পরিমাপ / বিন্যাস | লেআউট পর্যায়ে UI কম্পোনেন্টগুলোর অবস্থান ও আকার নির্ধারণে ব্যয়িত সময়কে এটি নির্দেশ করে, যার মধ্যে পরিমাপ ও প্লেসমেন্ট মডিফায়ারগুলো সম্পাদন করা অন্তর্ভুক্ত। একটি বড় অংশ এই মডিফায়ারগুলোর মধ্যে জটিল গণনা অথবা একটি অতিরিক্ত গভীর লেআউট ট্রি নির্দেশ করে, যার জন্য ঘন ঘন পুনঃগণনার প্রয়োজন হয়। | |
| ইনপুট হ্যান্ডলিং এবং অ্যানিমেশন | অ্যানিমেশন এপিআই কলগুলো মূল্যায়ন করতে অথবা পয়েন্টার ইনপুট ও তার কলব্যাকগুলো পরিচালনা করতে যে সময় লেগেছে, তা এটি নির্দেশ করে। যদি এই অংশটি বড় হয়, তবে তা ইঙ্গিত দিতে পারে যে একটি কাস্টমাইজড অ্যানিমেশন বা ইনপুট কলব্যাক প্রসেসিংয়ে অতিরিক্ত সময় নিচ্ছে। একটি LazyColumn বা LazyRow স্ক্রল করার সময় স্টেট ক্যালকুলেশন এবং ডেটা ম্যাপিংও সাধারণত এই অংশেই ঘটে থাকে এবং এই অংশে গতি হ্রাসের এটি একটি সাধারণ কারণ। | |
| বিবিধ সময় / ভি-সিঙ্ক বিলম্ব | এটি দুটি পরপর ফ্রেমের মধ্যবর্তী সময়ে অ্যাপটি বিভিন্ন অপারেশন সম্পাদনে যে সময় ব্যয় করে, তা নির্দেশ করে। এটি UI থ্রেডে অতিরিক্ত প্রসেসিং হওয়ার একটি সূচক হতে পারে, যা অন্য কোনো থ্রেডে স্থানান্তর করা যেতে পারে। |
সারণি ১. অ্যান্ড্রয়েড ৬.০ এবং উচ্চতর সংস্করণে কম্পোনেন্ট বার।
প্রোফাইলিং টুল দ্বারা প্রদত্ত তথ্য কীভাবে ব্যাখ্যা করতে হয় সে সম্পর্কে আরও জানতে, "প্রোফাইল জিপিইউ রেন্ডারিং দিয়ে বিশ্লেষণ" পড়ুন।