এই পৃষ্ঠাটি ব্যাখ্যা করে যে ওভারড্র কী কী, কীভাবে এটি নির্ণয় করা যায় এবং এটি নির্মূল বা প্রশমিত করার উপায়।
যখন একটি অ্যাপ একটি ফ্রেমের মধ্যে একই পিক্সেল একাধিকবার আঁকে, তখন একে বলা হয় ওভারড্র । ওভারড্র সাধারণত অপ্রয়োজনীয়, এবং এটি দূর করা ভাল। ওভারড্র একটি পারফরম্যান্স সমস্যা হয়ে দাঁড়ায় যখন এটি পিক্সেল রেন্ডার করতে GPU সময় নষ্ট করে যা ব্যবহারকারী স্ক্রিনে যা দেখে তাতে অবদান রাখে না।
ওভারড্র সম্পর্কে
ওভারড্র বলতে সিস্টেমের রেন্ডারিংয়ের একক ফ্রেমে একাধিকবার স্ক্রিনে একটি পিক্সেল অঙ্কনকে বোঝায়। উদাহরণস্বরূপ, যদি আপনার কাছে একগুচ্ছ স্ট্যাক করা UI কার্ড থাকে, তাহলে প্রতিটি কার্ড নিচের একটির একটি অংশ লুকিয়ে রাখে।
যাইহোক, সিস্টেমটিকে এখনও স্ট্যাকের মধ্যে কার্ডগুলির লুকানো অংশগুলি আঁকতে হবে। এর কারণ হল স্তুপীকৃত কার্ডগুলি পেইন্টারের অ্যালগরিদম অনুসারে রেন্ডার করা হয় -অর্থাৎ, সামনের দিকের ক্রমানুসারে। রেন্ডারিংয়ের এই ক্রমটি সিস্টেমটিকে ছায়ার মতো স্বচ্ছ বস্তুতে যথাযথ আলফা মিশ্রণ প্রয়োগ করতে দেয়।
ওভারড্র সমস্যা খুঁজুন
ওভারড্র আপনার অ্যাপের কর্মক্ষমতা প্রভাবিত করছে কিনা তা নির্ধারণ করতে প্ল্যাটফর্মটি নিম্নলিখিত সরঞ্জামগুলি অফার করে৷
ডিবাগ GPU ওভারড্র টুল
ডিবাগ জিপিইউ ওভারড্র টুল রঙ-কোডিং ব্যবহার করে দেখায় যে কতবার আপনার অ্যাপ স্ক্রিনে প্রতিটি পিক্সেল আঁকে। এই গণনা যত বেশি হবে, ওভারড্রের আপনার অ্যাপের কার্যক্ষমতাকে প্রভাবিত করার সম্ভাবনা তত বেশি।
আরও তথ্যের জন্য, ভিজ্যুয়ালাইজ GPU ওভারড্র দেখুন।
প্রোফাইল GPU রেন্ডারিং টুল
প্রোফাইল GPU রেন্ডারিং টুলটি রেন্ডারিং পাইপলাইনের প্রতিটি ধাপে একটি স্ক্রলিং হিস্টোগ্রাম হিসাবে একটি একক ফ্রেম প্রদর্শন করতে যে সময় লাগে তা প্রদর্শন করে। প্রতিটি বারের প্রসেস অংশ, কমলা রঙে নির্দেশিত, দেখায় যখন সিস্টেমটি বাফার অদলবদল করছে। এই মেট্রিক ওভারড্র সম্পর্কে গুরুত্বপূর্ণ সূত্র প্রদান করে।
কম পারফরম্যান্সপূর্ণ GPU-তে, উপলব্ধ ফিল-রেট- যে গতিতে GPU ফ্রেম বাফার পূরণ করতে পারে- কম হতে পারে। একটি ফ্রেম আঁকার জন্য প্রয়োজনীয় পিক্সেলের সংখ্যা বাড়ার সাথে সাথে, GPU নতুন কমান্ডগুলি প্রক্রিয়া করতে আরও বেশি সময় নিতে পারে এবং বাকি সিস্টেমটিকে এটি ধরা না হওয়া পর্যন্ত অপেক্ষা করতে বলে। প্রসেস বারটি দেখায় যে এই স্পাইকটি ঘটে কারণ GPU যত দ্রুত সম্ভব পিক্সেল আঁকার চেষ্টা করে অভিভূত হয়। পিক্সেলের কাঁচা সংখ্যা ব্যতীত অন্যান্য সমস্যাগুলিও এই মেট্রিকটিকে স্পাইক করতে পারে৷ উদাহরণস্বরূপ, যদি ডিবাগ জিপিইউ ওভারড্র টুলটি ভারী ওভারড্র এবং প্রসেস স্পাইক দেখায়, তাহলে ওভারড্রের সাথে একটি সমস্যা হতে পারে।
আরও তথ্যের জন্য, প্রোফাইল GPU রেন্ডারিং গতি দেখুন।
ওভারড্র ঠিক করুন
ওভারড্র কমাতে বা দূর করতে আপনি নিম্নলিখিতগুলি করতে পারেন:
- লেআউটে অপ্রয়োজনীয় ব্যাকগ্রাউন্ড সরান।
- ভিউ অনুক্রম সমতল করুন।
- স্বচ্ছতা হ্রাস করুন।
এই বিভাগে এই পদ্ধতির প্রতিটি সম্পর্কে তথ্য প্রদান করে.
লেআউটে অপ্রয়োজনীয় ব্যাকগ্রাউন্ড সরান
ডিফল্টরূপে, একটি লেআউটের কোনো ব্যাকগ্রাউন্ড থাকে না, যার মানে এটি নিজে থেকে সরাসরি কিছু রেন্ডার করে না। যাইহোক, যখন লেআউটগুলির ব্যাকগ্রাউন্ড থাকে, তখন তারা ওভারড্র করতে অবদান রাখতে পারে।
আপনি অপ্রয়োজনীয় ব্যাকগ্রাউন্ড অপসারণ করে রেন্ডারিং কর্মক্ষমতা উন্নত করতে পারেন। একটি অপ্রয়োজনীয় ব্যাকগ্রাউন্ড দৃশ্যমান নাও হতে পারে কারণ এটি অ্যাপটির উপরে আঁকা সবকিছু দ্বারা সম্পূর্ণরূপে আচ্ছাদিত। উদাহরণস্বরূপ, সিস্টেমটি সম্পূর্ণরূপে পিতামাতার পটভূমিকে কভার করতে পারে যখন এটি তার উপরে শিশুর দৃষ্টিভঙ্গি আঁকে।
আপনি কেন ওভারড্র করছেন তা জানতে, লেআউট ইন্সপেক্টর টুলে অনুক্রমটি দেখুন। আপনি ব্যাকগ্রাউন্ডগুলি সন্ধান করতে পারেন যা ব্যবহারকারীর কাছে দৃশ্যমান নয় এবং সেগুলি মুছে ফেলতে পারেন৷ আপনি অপ্রয়োজনীয় ব্যাকগ্রাউন্ড মুছে ফেলতে পারেন যেখানে একটি সাধারণ ব্যাকগ্রাউন্ডের রঙ ভাগ করে এমন অনেক কন্টেইনার আছে। আপনি আপনার অ্যাপের প্রধান পটভূমির রঙে উইন্ডোর পটভূমি সেট করতে পারেন এবং কোনও ব্যাকগ্রাউন্ড মান সংজ্ঞায়িত না করেই এর উপরে সমস্ত কন্টেইনার ছেড়ে দিতে পারেন।
ভিউ অনুক্রম সমতল করুন
আধুনিক লেআউট আপনাকে সুন্দর ডিজাইন তৈরি করতে স্ট্যাক এবং লেয়ার ভিউ করতে সাহায্য করে। যাইহোক, এটি করার ফলে ওভারড্রের ফলে কর্মক্ষমতা হ্রাস পেতে পারে, বিশেষ করে এমন পরিস্থিতিতে যেখানে প্রতিটি স্ট্যাক করা ভিউ অবজেক্ট অস্বচ্ছ, স্ক্রীনে দেখা এবং অদেখা উভয় পিক্সেলের অঙ্কন প্রয়োজন।
আপনি যদি এই সমস্যার সম্মুখীন হন, আপনি ওভারল্যাপিং UI অবজেক্টের সংখ্যা কমাতে আপনার ভিউ হায়ারার্কি অপ্টিমাইজ করে কর্মক্ষমতা উন্নত করতে পারেন। কিভাবে এটি সম্পন্ন করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, কর্মক্ষমতা দেখুন এবং শ্রেণিবিন্যাস দেখুন ।
স্বচ্ছতা হ্রাস করুন
স্ক্রিনে স্বচ্ছ পিক্সেল রেন্ডার করা, যা আলফা রেন্ডারিং নামে পরিচিত, ওভারড্র করার জন্য একটি মূল অবদানকারী। স্ট্যান্ডার্ড ওভারড্রের বিপরীতে-যখন সিস্টেমটি তাদের উপরে অস্বচ্ছ পিক্সেল অঙ্কন করে বিদ্যমান টানা পিক্সেলগুলিকে সম্পূর্ণরূপে লুকিয়ে রাখে-স্বচ্ছ বস্তুর জন্য বিদ্যমান পিক্সেলগুলিকে প্রথমে আঁকতে হবে, যাতে সঠিক মিশ্রণ সমীকরণ ঘটতে পারে।
স্বচ্ছ অ্যানিমেশন, ফেইড-আউট এবং ড্রপ শ্যাডোর মতো ভিজ্যুয়াল এফেক্ট কিছু স্বচ্ছতা জড়িত, এবং তাই ওভারড্র করতে উল্লেখযোগ্যভাবে অবদান রাখতে পারে। আপনি রেন্ডার করা স্বচ্ছ বস্তুর সংখ্যা হ্রাস করে এই পরিস্থিতিতে ওভারড্রয়ের উন্নতি করতে পারেন। উদাহরণস্বরূপ, আপনি একটি TextView
একটি স্বচ্ছ আলফা মান সেট করে কালো পাঠ অঙ্কন করে ধূসর পাঠ্য পেতে পারেন। যাইহোক, আপনি ধূসর রঙে পাঠ্য অঙ্কন করে আরও ভাল পারফরম্যান্সের সাথে একই প্রভাব পেতে পারেন।
সম্পূর্ণ অঙ্কন পাইপলাইন জুড়ে স্বচ্ছতা আরোপিত কর্মক্ষমতা খরচ সম্পর্কে আরও জানতে, স্বচ্ছতার লুকানো খরচ দেখুন।