Profile-guided optimization
প্রোফাইল-নির্দেশিত অপ্টিমাইজেশন (পি. জি. ও, কখনও কখনও পোগো হিসাবে উচ্চারিত হয়), যা প্রোফাইল-নির্দেশিত প্রতিক্রিয়া (পি. ডি. এফ) নামেও পরিচিত, এবং প্রতিক্রিয়া-নির্দেশিত অপ্টিমাইজেশন (এফ. ডি. ও) হল কম্পিউটার প্রোগ্রামিংয়ের একটি সংকলক অপ্টিমাইজেশন কৌশল যা প্রোগ্রামের রানটাইম কর্মক্ষমতা উন্নত করতে প্রোফাইলিং ব্যবহার করে। সোর্স কোডের স্ট্যাটিক প্রোগ্রাম বিশ্লেষণের উপর ভিত্তি করে পদ্ধতি অপ্টিমাইজেশান কৌশলগুলি আসলে প্রোগ্রামটি কার্যকর না করেই কোড পারফরম্যান্সের উন্নতি বিবেচনা করে। কোনও গতিশীল প্রোগ্রাম বিশ্লেষণ করা হয় না। বিশ্লেষণ এমনকি লুপগুলির মধ্যে কোড বিবেচনা করতে পারে যার মধ্যে লুপটি কতবার কার্যকর হবে, উদাহরণস্বরূপ লুপ আনরোলিং-এ। সমস্ত রানটাইম তথ্যের অনুপস্থিতিতে, স্ট্যাটিক প্রোগ্রাম বিশ্লেষণ বিবেচনা করতে পারে না যে সেই কোড বিভাগটি আসলে কত ঘন ঘন কার্যকর করা হয়। 1957 সালে ফোরট্রান অটোমেটিক কোডিং সিস্টেম হিসাবে প্রবর্তিত প্রথম উচ্চ-স্তরের সংকলক কোডটিকে ব্লকে বিভক্ত করে এবং প্রতিটি ব্লকের ফ্রিকোয়েন্সির একটি টেবিল তৈরি করে যা মন্টে কার্লো ফ্যাশনে কোডের সিমুলেটেড এক্সিকিউশনের মাধ্যমে কার্যকর করা হয় যেখানে শর্তাধীন স্থানান্তরের ফলাফল (আইএফ-টাইপ স্টেটমেন্টের মাধ্যমে) একটি র্যান্ডম নম্বর জেনারেটর দ্বারা নির্ধারিত হয় যা প্রোগ্রামার দ্বারা প্রদত্ত যে কোনও ফ্রিকুয়েন্সি স্টেটমেন্ট দ্বারা উপযুক্তভাবে ওজন করা হয়। প্রোগ্রামার-সরবরাহকৃত ফ্রিকোয়েন্সি তথ্যের পরিবর্তে, প্রোফাইল-নির্দেশিত অপ্টিমাইজেশন চূড়ান্ত উত্পন্ন কোডকে অনুকূল করতে যন্ত্রযুক্ত প্রোগ্রামের প্রোফাইলিং পরীক্ষার ফলাফল ব্যবহার করে। সংকলক একটি প্রতিনিধি ইনপুট সেট জুড়ে প্রোগ্রামের একটি নমুনা রান থেকে প্রোফাইল ডেটা অ্যাক্সেস করে। ফলাফলগুলি নির্দেশ করে যে প্রোগ্রামের কোন ক্ষেত্রগুলি আরও ঘন ঘন কার্যকর করা হয় এবং কোন ক্ষেত্রগুলি কম ঘন ঘন কার্যকর করা হয়। সমস্ত অপ্টিমাইজেশান প্রোফাইল-নির্দেশিত প্রতিক্রিয়া থেকে উপকৃত হয় কারণ সংকলনের সিদ্ধান্ত নেওয়ার সময় তারা অনুসন্ধানের উপর কম নির্ভরশীল। তবে, সতর্কবার্তাটি হল যে প্রোফাইলিং পর্যায়ে প্রোগ্রামে দেওয়া তথ্যের নমুনা অবশ্যই সাধারণ ব্যবহারের পরিস্থিতিগুলির পরিসংখ্যানগতভাবে প্রতিনিধি হতে হবে; অন্যথায়, প্রোফাইল-নির্দেশিত প্রতিক্রিয়া চূড়ান্ত নির্মাণের সামগ্রিক কার্যকারিতা উন্নত করার পরিবর্তে ক্ষতি করার সম্ভাবনা রাখে। জাস্ট-ইন-টাইম সংকলন রানটাইম তথ্য ব্যবহার করে কার্যকর কোডের অংশগুলিকে গতিশীলভাবে পুনরায় কম্পাইল করতে পারে যাতে আরও দক্ষ নেটিভ কোড তৈরি করা যায়। যদি কার্যকর করার সময় গতিশীল প্রোফাইল পরিবর্তন হয়, তবে এটি পূর্ববর্তী নেটিভ কোডটিকে অপ্টিমাইজ করতে পারে এবং নতুন প্রোফাইল থেকে তথ্যের সাথে অনুকূলিত একটি নতুন কোড তৈরি করতে পারে। পি. জি. ও ব্যবহার করে ফায়ারফক্স তৈরি করার জন্য সমর্থন রয়েছে। যদিও পি. জি. ও কার্যকর, তবুও এর ক্লান্তিকর দ্বৈত-সংকলন মডেলের কারণে এটি সফ্টওয়্যার প্রকল্পগুলির দ্বারা ব্যাপকভাবে গৃহীত হয়নি। হার্ডওয়্যার পারফরম্যান্স কাউন্টার ব্যবহার করে একটি প্রোফাইল সংগ্রহ করে যন্ত্রপাতি ছাড়াই পি. জি. ও সম্পাদন করাও সম্ভব। এই নমুনা-ভিত্তিক পদ্ধতির ওভারহেড অনেক কম এবং এর জন্য কোনও বিশেষ সংকলনের প্রয়োজন হয় না। হটস্পট জাভা ভার্চ্যুয়াল মেশিন (জেভিএম) গতিশীলভাবে নেটিভ কোড তৈরি করতে প্রোফাইল-নির্দেশিত অপ্টিমাইজেশন ব্যবহার করে। ফলস্বরূপ, একটি সফ্টওয়্যার বাইনারি এটি গ্রহণ করছে প্রকৃত লোড জন্য অনুকূলিত করা হয়। যদি লোড পরিবর্তন হয়, অভিযোজিত অপ্টিমাইজেশন গতিশীলভাবে চলমান সফ্টওয়্যারটিকে নতুন লোডের জন্য অপ্টিমাইজ করতে পারে। এর অর্থ হ 'ল হটস্পট জেভিএম-এ সম্পাদিত সমস্ত সফ্টওয়্যার কার্যকরভাবে প্রোফাইল-নির্দেশিত অপ্টিমাইজেশনের ব্যবহার করে। পি. জি. ও গুগল ক্রোমের মাইক্রোসফ্ট উইন্ডোজ সংস্করণে গৃহীত হয়েছে। 32-বিট সংস্করণের জন্য সংস্করণ 53 এবং সংস্করণ 54 দিয়ে শুরু হওয়া ক্রোমের 64-বিট সংস্করণে পি. জি. ও সক্ষম করা হয়েছিল। গুগল একটি গবেষণাপত্র প্রকাশ করেছে যা একটি সিস্টেম (অটোএফডিও) বর্ণনা করে যা বিল্ডগুলিকে গাইড করার জন্য প্রোডাকশন প্রোফাইল ব্যবহার করার জন্য ব্যবহৃত হয় যার ফলে 10 শতাংশ পর্যন্ত কর্মক্ষমতার উন্নতি হয়। বাস্তবায়ন পি. জি. ও বাস্তবায়িতকারী সংকলকদের উদাহরণগুলি হলঃ ইন্টেল সি + + সংকলক এবং ফোরট্রান সংকলক জি. এন. ইউ কম্পাইলার সংগ্রহ সংকলক ওরাকল সোলারিস স্টুডিও (পূর্বে সান স্টুডিও নামে পরিচিত) মাইক্রোসফ্ট ভিজ্যুয়াল সি + + সংকলক ক্ল্যাং আই. বি. এম এক্স. এল সি/সি + + গ্রালভি. এম এন্টারপ্রাইজ সংস্করণ। নেট জে. আই. টি সংকলক গো অ্যাডাপটিভ অপ্টিমাইজেশন ডায়নামিক ডেড কোড এলিমিনেশন গ্লোবাল অপ্টিমাইজেশন হট স্পট (কম্পিউটার প্রোগ্রামিং) ইন্টারপ্রোসেডুরাল অপ্টিমাইজেশন লিঙ্ক-টাইম অপ্টিমাইজেশন (এল. টি. ও) জাস্ট-ইন-টাইম কম্পাইলেশন রেফারেন্স কম্পাইলার অপ্টিমাইজেশন ট্রেসিং