ভিজ্যুয়াল স্টুডিওতে প্রোফাইল-গাইডেড অপ্টিমাইজেশন কনফিগার করা

প্রোফাইল-গাইডেড অপ্টিমাইজেশান সমর্থন AGDE সংস্করণ 22.2.71 এ চালু করা হয়েছিল।

PGO সেটিংস সনাক্ত করা হচ্ছে

সমাধান এক্সপ্লোরার থেকে আপনার প্রকল্প সেটিংস খুলুন।

বর্তমান প্রকল্পের জন্য ভিজ্যুয়াল স্টুডিও সলিউশন এক্সপ্লোরার বৈশিষ্ট্য মেনু।

চিত্র 1: ভিজ্যুয়াল স্টুডিও সলিউশন এক্সপ্লোরার উইন্ডো।

নিশ্চিত করুন যে আপনার প্ল্যাটফর্মটি একটি Android কনফিগারেশনে সেট করা আছে (উদাহরণস্বরূপ, Android-arm64-v8a )।

বাম দিকের প্যানেলে, কনফিগারেশন বৈশিষ্ট্য > সাধারণ নির্বাচন করুন। PGO নামক সম্পত্তি গ্রুপের জন্য দেখুন।

দেখানো সাধারণ বৈশিষ্ট্য সহ প্রকল্প বৈশিষ্ট্য ডায়ালগ, এবং PGO সেটিংস হাইলাইট করা হয়েছে

চিত্র 2: প্রকল্প বৈশিষ্ট্য ডায়ালগ।

প্রকল্পে PGO-ইনস্ট্রুমেন্টেড বিল্ডগুলি সক্ষম করুন৷

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

প্রপার্টি পেজ ডায়ালগে কনফিগারেশন ম্যানেজার… এ ক্লিক করুন।

প্রপার্টি পেজ ডায়ালগের শীর্ষে, সক্রিয় সমাধান কনফিগারেশন এবং প্ল্যাটফর্ম ড্রপ-ডাউন এবং কনফিগারেশন ম্যানেজার বোতাম দেখাচ্ছে

চিত্র 3: কনফিগারেশন ম্যানেজার ডায়ালগ।

কনফিগারেশন ম্যানেজার ডায়ালগে, সক্রিয় সমাধান কনফিগারেশন ড্রপ-ডাউন নির্বাচন করুন এবং <নতুন…> নির্বাচন করুন।

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

চিত্র 4: একটি নতুন বিল্ড কনফিগারেশন তৈরি করা হচ্ছে।

… এবং একটি নতুন PGO-ইনস্ট্রুমেন্টেড কনফিগারেশন তৈরি করুন।

নতুন সমাধান কনফিগারেশন ডায়ালগ, বিদ্যমান রিলিজ বিল্ড কনফিগারেশনের উপর ভিত্তি করে একটি নতুন পিজিও-ইনস্ট্রুমেন্টেড বিল্ড কনফিগারেশন তৈরি করছে

চিত্র 5: নতুন সমাধান কনফিগারেশন ডায়ালগ।

PGO-ইনস্ট্রুমেন্টেড মোডে বিল্ডিং সক্ষম করতে, যাতে আপনি আপনার গেমের জন্য একটি প্রোফাইল তৈরি করতে পারেন, প্রোফাইল-গাইডেড অপ্টিমাইজেশন মোড সেটিং এর বিকল্পগুলির তালিকা থেকে ইনস্ট্রুমেন্টেড নির্বাচন করুন।

প্রজেক্ট প্রোপার্টি ডায়ালগ, সাধারণ সেটিংসে খোলা হয়েছে, যেখানে PGO সেটিংস দেখানো হয়েছে এবং প্রোফাইল গাইডেড অপ্টিমাইজেশান মোড ইনস্ট্রুমেন্টে সেট করা হয়েছে।

চিত্র 6: প্রকল্প বৈশিষ্ট্য ডায়ালগ, PGO সেটিংস হাইলাইট করে।

প্রোফাইল গাইডেড অপ্টিমাইজেশান প্রোফাইল সেটিং-এর জন্য, আপনার অ্যান্ড্রয়েড ডিভাইসে কাঁচা আউটপুট প্রোফাইল ডেটা ফাইলটি লেখার জন্য ফোল্ডারের পথটি প্রবেশ করান৷ সাধারণত এই মানটি /data/data/<package name>/cache/ এর মত কিছু হওয়া উচিত – যেখানে <package name> আপনার APK-এর সম্পূর্ণ প্যাকেজ নাম – উদাহরণস্বরূপ, com.google.sample.tunnel

এটি কীভাবে কাজ করে সে সম্পর্কে আরও গভীর তথ্যের জন্য, ক্ল্যাং ডকুমেন্টেশন দেখুন।

আপনার ডিভাইসে PGO-ইনস্ট্রুমেন্টেড প্রোফাইল ডেটা লেখা হচ্ছে

PGO ডেটা সাধারণত PGO ইন্সট্রুমেন্টেশন সিস্টেম দ্বারা ডিভাইসে লেখা হয় যখন একটি প্রক্রিয়া প্রস্থান হয়। অ্যান্ড্রয়েডে, অ্যাপ্লিকেশানগুলি প্রস্থান করে না - সেগুলি সর্বদা বন্ধ হয়ে যায়৷ এর মানে ডিফল্ট "ডিস্কে লিখুন" কার্যকারিতা কখনই ট্রিগার করে না, আপনার অ্যাপকে পিজিও ডেটা ম্যানুয়ালি লিখতে হবে।

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

#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif

এই ফাংশনটি কল করা আপনার আগে উল্লেখ করা ফোল্ডারে প্রোফাইল ডেটা লেখে।

একটি প্রোফাইল রান সঞ্চালন

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

এই মুহুর্তে, কম্পাইলার দ্বারা ব্যবহারের জন্য ডিভাইসের বাইরে প্রোফাইলগুলি অনুলিপি করুন।

কম্পাইলার দ্বারা ব্যবহারের জন্য প্রোফাইল ডেটা প্রস্তুত করা হচ্ছে

আইসোলেশনে ব্যবহার করা হলে, অ্যান্ড্রয়েড এনডিকে-তে ক্ল্যাং/এলএলভিএম-এর অংশ হিসেবে পাঠানো কমান্ড-লাইন টুল llvm-profdata একটি বিল্ডের প্রোফাইল-গাইডেড অপ্টিমাইজেশনের সময় কম্পাইলার দ্বারা ব্যবহারের জন্য প্রোফাইল ডেটা ফাইল প্রস্তুত করতে ব্যবহৃত হয়।

AGDE স্বয়ংক্রিয়ভাবে আপনার জন্য এই পদক্ষেপটি আপনার প্রোজেক্টে যোগ করা যেকোন প্রোফাইল ডেটা ফাইলগুলিকে একত্রিত করে এবং প্রোজেক্ট প্রোপার্টি পৃষ্ঠাগুলিতে প্রোফাইল-গাইডেড অপ্টিমাইজেশান মোড সেটিং অপ্টিমাইজে সেট করা হলে সেগুলি ব্যবহার করে।

প্রোফাইল-গাইডেড অপ্টিমাইজেশন সক্ষম করে আপনার প্রকল্প তৈরি করা

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

আপনার PGO-অপ্টিমাইজড বিল্ডের জন্য একটি নতুন প্রোজেক্ট কনফিগারেশন তৈরি করুন যাতে আপনি শুধুমাত্র এই মোডে তৈরি করতে পারেন যখন এটি প্রয়োজন হয়।

নতুন সমাধান কনফিগারেশন ডায়ালগ রিলিজ বিল্ডের উপর ভিত্তি করে একটি বিল্ড কনফিগারেশন তৈরি করে, কিন্তু এবার নতুন বিল্ড কনফিগারেশন নাম হিসাবে PGO-অপ্টিমাইজ করা হয়েছে।

চিত্র 7: একটি নতুন PGO-অপ্টিমাইজড বিল্ড কনফিগারেশন তৈরি করা হচ্ছে।

প্রোজেক্ট প্রোপার্টি পৃষ্ঠাগুলিতে প্রোফাইল-গাইডেড অপ্টিমাইজেশান মোড সেটিং অপ্টিমাইজে সেট করুন।

প্রজেক্ট প্রোপার্টি ডায়ালগ, সাধারণ সেটিংসে খোলা হয়েছে, যেখানে PGO সেটিংস দেখানো হয়েছে এবং প্রোফাইল গাইডেড অপ্টিমাইজেশন মোড অপ্টিমাইজে সেট করা হয়েছে

চিত্র 8: PGO অপ্টিমাইজেশান মোডকে অপ্টিমাইজে সেট করা।

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

আপনি ADB ব্যবহার করে বা Android ডিভাইস এক্সপ্লোরার ব্যবহার করে ডিভাইস থেকে আপনার প্রোজেক্টে প্রোফাইল ডেটা ফাইল কপি করতে পারেন।

AGDE এর বাইরে প্রোফাইল-গাইডেড অপ্টিমাইজেশন ব্যবহার করা

আপনি যদি এমন একটি বিল্ড সিস্টেম ব্যবহার করেন যা AGDE দ্বারা সমর্থিত নয় তাহলে আপনাকে সরাসরি আপনার বিল্ড সম্পাদনা করতে হতে পারে। ক্ল্যাং-এর ডকুমেন্টেশন প্রয়োজনীয় সুইচগুলিকে কভার করে – -fprofile-generate , এবং -fprofile-use .

আপনি যদি আপনার গেমের জন্য একটি মিডলওয়্যার ইঞ্জিন ব্যবহার করেন তবে কীভাবে PGO সক্ষম করবেন তা দেখতে আপনার ইঞ্জিনের ডকুমেন্টেশন দেখুন (যদি এটি সমর্থিত হয়)।