Profile-guided optimization
پروفائل گائیڈڈ آپٹیمائزیشن (پی جی او، جسے بعض اوقات پوگو بھی کہا جاتا ہے)، جسے پروفائل ڈائریکٹڈ فیڈ بیک (پی ڈی ایف) بھی کہا جاتا ہے، اور فیڈ بیک ڈائریکٹڈ آپٹیمائزیشن (ایف ڈی او) کمپیوٹر پروگرامنگ میں ایک مرتب کرنے والی اصلاح کی تکنیک ہے جو پروگرام رن ٹائم کی کارکردگی کو بہتر بنانے کے لیے پروفائلنگ کا استعمال کرتی ہے۔ سورس کوڈ کے جامد پروگرام کے تجزیے پر مبنی طریقہ کار کو بہتر بنانے کی تکنیکیں دراصل پروگرام کو انجام دیے بغیر کوڈ کی کارکردگی میں بہتری پر غور کرتی ہیں۔ کوئی متحرک پروگرام تجزیہ نہیں کیا جاتا ہے۔ تجزیہ لوپس کے اندر کوڈ پر بھی غور کر سکتا ہے جس میں لوپ کو چلانے کی تعداد بھی شامل ہے، مثال کے طور پر لوپ انرولنگ میں۔ تمام رن ٹائم معلومات کی عدم موجودگی میں، جامد پروگرام تجزیہ اس بات کو مدنظر نہیں رکھ سکتا کہ اس کوڈ سیکشن کو اصل میں کتنی بار انجام دیا جاتا ہے۔ پہلا اعلی سطحی مرتب، جسے 1957 میں فورٹرن آٹومیٹک کوڈنگ سسٹم کے طور پر متعارف کرایا گیا، نے کوڈ کو بلاکس میں توڑ دیا اور فریکوئنسی کا ایک ٹیبل وضع کیا جس میں ہر بلاک کو مونٹی کارلو انداز میں کوڈ کے مصنوعی نفاذ کے ذریعے انجام دیا جاتا ہے جس میں مشروط منتقلی کا نتیجہ (جیسا کہ آئی ایف قسم کے بیانات کے ذریعے) ایک بے ترتیب نمبر جنریٹر کے ذریعے طے کیا جاتا ہے جس کا مناسب وزن پروگرامر کے ذریعے فراہم کردہ FREQUENCY بیانات سے ہوتا ہے۔ پروگرامر کے ذریعہ فراہم کردہ تعدد کی معلومات کے بجائے، پروفائل گائیڈڈ آپٹیمائزیشن حتمی تیار کردہ کوڈ کو بہتر بنانے کے لیے انسٹرومینٹڈ پروگرام کے پروفائلنگ ٹیسٹ رن کے نتائج کا استعمال کرتی ہے۔ مرتب کرنے والا نمائندہ ان پٹ سیٹ میں پروگرام کے نمونے سے پروفائل ڈیٹا تک رسائی حاصل کرتا ہے۔ نتائج سے پتہ چلتا ہے کہ پروگرام کے کون سے علاقوں کو زیادہ کثرت سے انجام دیا جاتا ہے، اور کون سے علاقوں کو کم کثرت سے انجام دیا جاتا ہے۔ تمام اصلاحات پروفائل گائیڈڈ فیڈ بیک سے فائدہ اٹھاتی ہیں کیونکہ تالیف کے فیصلے کرتے وقت ان کا ہیورسٹکس پر انحصار کم ہوتا ہے۔ تاہم، انتباہ یہ ہے کہ پروفائلنگ مرحلے کے دوران پروگرام کو فراہم کردہ ڈیٹا کا نمونہ استعمال کے عام منظرناموں کا شماریاتی طور پر نمائندہ ہونا چاہیے ؛ بصورت دیگر، پروفائل گائیڈڈ فیڈ بیک میں حتمی تعمیر کی مجموعی کارکردگی کو بہتر بنانے کے بجائے نقصان پہنچانے کی صلاحیت ہوتی ہے۔ جسٹ ان ٹائم تالیف زیادہ موثر مقامی کوڈ تیار کرنے کے لیے عمل میں لائے گئے کوڈ کے حصوں کو متحرک طور پر دوبارہ مرتب کرنے کے لیے رن ٹائم معلومات کا استعمال کر سکتی ہے۔ اگر عمل کے دوران متحرک پروفائل تبدیل ہوتا ہے، تو یہ پچھلے مقامی کوڈ کو غیر فعال کر سکتا ہے، اور نئے پروفائل سے معلومات کے ساتھ ایک نیا کوڈ تیار کر سکتا ہے۔ پی جی او کا استعمال کرتے ہوئے فائر فاکس بنانے کے لیے سپورٹ موجود ہے۔ اگرچہ پی جی او موثر ہے، اس کے تکلیف دہ دوہری تالیف ماڈل کی وجہ سے اسے سافٹ ویئر پروجیکٹس نے بڑے پیمانے پر اپنایا نہیں ہے۔ ہارڈ ویئر پرفارمنس کاؤنٹرز کا استعمال کرتے ہوئے پروفائل جمع کرکے آلات کے بغیر پی جی او انجام دینا بھی ممکن ہے۔ نمونے لینے پر مبنی اس نقطہ نظر کا اوور ہیڈ بہت کم ہے اور اس کے لیے خصوصی تالیف کی ضرورت نہیں ہے۔ ہاٹ اسپاٹ جاوا ورچوئل مشین (جے وی ایم) متحرک طور پر مقامی کوڈ تیار کرنے کے لیے پروفائل گائیڈڈ آپٹیمائزیشن کا استعمال کرتی ہے۔ نتیجے کے طور پر، ایک سافٹ ویئر بائنری کو موصول ہونے والے اصل بوجھ کے لیے بہتر بنایا جاتا ہے۔ اگر لوڈ تبدیل ہوتا ہے، تو انکولی اصلاح چل رہے سافٹ ویئر کو نئے لوڈ کے لیے بہتر بنانے کے لیے متحرک طور پر دوبارہ مرتب کر سکتی ہے۔ اس کا مطلب یہ ہے کہ ہاٹ اسپاٹ جے وی ایم پر چلائے گئے تمام سافٹ ویئر مؤثر طریقے سے پروفائل گائیڈڈ آپٹیمائزیشن کا استعمال کرتے ہیں۔ پی جی او کو گوگل کروم کے مائیکروسافٹ ونڈوز ورژن میں اپنایا گیا ہے۔ پی جی او کو کروم کے 64 بٹ ایڈیشن میں فعال کیا گیا تھا جو 32 بٹ ایڈیشن کے لیے ورژن 53 اور ورژن 54 سے شروع ہوتا ہے۔ گوگل نے ایک مقالہ شائع کیا جس میں ایک سسٹم (آٹو ایف ڈی او) کی وضاحت کی گئی ہے جو تعمیر کی رہنمائی کے لیے پروڈکشن پروفائلز کے استعمال کے لیے استعمال ہوتا ہے جس کے نتیجے میں کارکردگی میں 10 فیصد تک بہتری آتی ہے۔ نفاذ پی جی او کو نافذ کرنے والے مرتب کرنے والوں کی مثالیں یہ ہیں: انٹیل سی + + مرتب کرنے والا اور فورٹرن مرتب کرنے والا جی این یو مرتب کرنے والا مجموعہ مرتب کرنے والا اوریکل سولارس اسٹوڈیو (جسے پہلے سن اسٹوڈیو کہا جاتا تھا) مائیکروسافٹ ویژول سی + + مرتب کرنے والا کلانگ آئی بی ایم ایکس ایل سی/سی + + گرایل وی ایم انٹرپرائز ایڈیشن۔ نیٹ جے آئی ٹی مرتب کرنے والا گو بھی دیکھیں انکولی اصلاح متحرک ڈیڈ کوڈ کا خاتمہ عالمی اصلاح ہاٹ اسپاٹ (کمپیوٹر پروگرامنگ) انٹرپروسیڈورل اصلاح لنک ٹائم اصلاح (ایل ٹی او) صرف وقت پر تالیف حوالہ جات مرتب کرنے کی اصلاح کا سراغ لگانا