Profile-guided optimization
प्रोफाइल-निर्देशित अनुकूलन (पी. जी. ओ., जिसे कभी-कभी पोगो के रूप में उच्चारण किया जाता है), जिसे प्रोफाइल-निर्देशित प्रतिक्रिया (पी. डी. एफ.) के रूप में भी जाना जाता है, और प्रतिक्रिया-निर्देशित अनुकूलन (एफ. डी. ओ.) कंप्यूटर प्रोग्रामिंग में एक संकलक अनुकूलन तकनीक है जो प्रोग्राम रनटाइम प्रदर्शन को बेहतर बनाने के लिए प्रोफाइलिंग का उपयोग करती है। स्रोत कोड के स्थिर प्रोग्राम विश्लेषण पर आधारित विधि अनुकूलन तकनीकें वास्तव में प्रोग्राम को निष्पादित किए बिना कोड प्रदर्शन में सुधार पर विचार करती हैं। कोई गतिशील कार्यक्रम विश्लेषण नहीं किया जाता है। विश्लेषण लूप के भीतर कोड पर भी विचार कर सकता है जिसमें लूप कितनी बार निष्पादित होगा, उदाहरण के लिए लूप अनरोलिंग में। सभी रन टाइम जानकारी के अभाव में, स्थिर प्रोग्राम विश्लेषण इस बात को ध्यान में नहीं रख सकता है कि उस कोड अनुभाग को वास्तव में कितनी बार निष्पादित किया जाता है। पहला उच्च-स्तरीय संकलक, जिसे 1957 में फोरट्रान स्वचालित कोडिंग प्रणाली के रूप में पेश किया गया था, ने कोड को ब्लॉकों में तोड़ दिया और आवृत्ति की एक तालिका तैयार की जिसमें प्रत्येक ब्लॉक को मोंटे कार्लो शैली में कोड के नकली निष्पादन के माध्यम से निष्पादित किया जाता है जिसमें सशर्त हस्तांतरण का परिणाम (आई. एफ.-प्रकार के बयानों के माध्यम से) एक यादृच्छिक संख्या जनरेटर द्वारा निर्धारित किया जाता है जो प्रोग्रामर द्वारा प्रदान किए गए किसी भी FREQUENCY बयानों द्वारा उपयुक्त रूप से भारित होता है। प्रोग्रामर द्वारा आपूर्ति की गई आवृत्ति जानकारी के बजाय, प्रोफ़ाइल-निर्देशित अनुकूलन अंतिम उत्पन्न कोड को अनुकूलित करने के लिए इंस्ट्रूमेंटेड प्रोग्राम के प्रोफाइलिंग टेस्ट रन के परिणामों का उपयोग करता है। संकलक एक प्रतिनिधि इनपुट सेट में कार्यक्रम के एक नमूने से प्रोफ़ाइल डेटा तक पहुँचता है। परिणाम इंगित करते हैं कि कार्यक्रम के किन क्षेत्रों को अधिक बार निष्पादित किया जाता है, और किन क्षेत्रों को कम बार निष्पादित किया जाता है। सभी अनुकूलन प्रोफ़ाइल-निर्देशित प्रतिक्रिया से लाभान्वित होते हैं क्योंकि वे संकलन निर्णय लेते समय शोध पर कम निर्भर होते हैं। हालांकि, चेतावनी यह है कि प्रोफाइलिंग चरण के दौरान कार्यक्रम को दिए गए डेटा का नमूना विशिष्ट उपयोग परिदृश्यों का सांख्यिकीय रूप से प्रतिनिधि होना चाहिए; अन्यथा, प्रोफ़ाइल-निर्देशित प्रतिक्रिया में इसे सुधारने के बजाय अंतिम निर्माण के समग्र प्रदर्शन को नुकसान पहुंचाने की क्षमता है। जस्ट-इन-टाइम संकलन अधिक कुशल देशी कोड उत्पन्न करने के लिए निष्पादित कोड के कुछ हिस्सों को गतिशील रूप से पुनः संकलित करने के लिए रनटाइम जानकारी का उपयोग कर सकता है। यदि निष्पादन के दौरान गतिशील प्रोफ़ाइल बदलती है, तो यह पिछले मूल कोड को निष्क्रिय कर सकता है, और नई प्रोफ़ाइल से जानकारी के साथ अनुकूलित एक नया कोड उत्पन्न कर सकता है। गोद लेना पी. जी. ओ. का उपयोग करके फ़ायरफ़ॉक्स बनाने के लिए समर्थन है। भले ही पी. जी. ओ. प्रभावी है, लेकिन इसके थकाऊ दोहरे संकलन मॉडल के कारण इसे सॉफ्टवेयर परियोजनाओं द्वारा व्यापक रूप से नहीं अपनाया गया है। हार्डवेयर प्रदर्शन काउंटरों का उपयोग करके एक प्रोफ़ाइल एकत्र करके उपकरण के बिना पी. जी. ओ. करना भी संभव है। इस नमूना-आधारित दृष्टिकोण में बहुत कम भार होता है और इसके लिए विशेष संकलन की आवश्यकता नहीं होती है। हॉटस्पॉट जावा वर्चुअल मशीन (जेवीएम) गतिशील रूप से देशी कोड उत्पन्न करने के लिए प्रोफ़ाइल-निर्देशित अनुकूलन का उपयोग करती है। नतीजतन, एक सॉफ्टवेयर द्विआधारी को प्राप्त होने वाले वास्तविक भार के लिए अनुकूलित किया जाता है। यदि भार बदलता है, तो अनुकूली अनुकूलन गतिशील रूप से चल रहे सॉफ़्टवेयर को नए भार के लिए अनुकूलित करने के लिए पुनः संकलित कर सकता है। इसका मतलब है कि हॉटस्पॉट जेवीएम पर निष्पादित सभी सॉफ्टवेयर प्रभावी रूप से प्रोफ़ाइल-निर्देशित अनुकूलन का उपयोग करते हैं। गूगल क्रोम के माइक्रोसॉफ्ट विंडोज संस्करण में पी. जी. ओ. को अपनाया गया है। पी. जी. ओ. को क्रोम के 64-बिट संस्करण में सक्षम किया गया था जो 32-बिट संस्करण के लिए संस्करण 53 और संस्करण 54 से शुरू होता है। गूगल ने एक पेपर प्रकाशित किया जिसमें निर्माण का मार्गदर्शन करने के लिए उत्पादन प्रोफाइल का उपयोग करने के लिए उपयोग की जाने वाली प्रणाली (ऑटोएफडीओ) का वर्णन किया गया है जिसके परिणामस्वरूप प्रदर्शन में 10 प्रतिशत तक सुधार हुआ है। कार्यान्वयन पी. जी. ओ. को लागू करने वाले संकलकों के उदाहरण हैंः इंटेल सी + + संकलक और फोरट्रान संकलक जी. एन. यू. संकलक संग्रह संकलक ओरेकल सोलारिस स्टूडियो (पूर्व में सन स्टूडियो कहा जाता था) माइक्रोसॉफ्ट विजुअल सी + + संकलक क्लैंग आई. बी. एम. एक्स. एल. सी/सी + + ग्रैलवी. एम. उद्यम संस्करण. नेट जे. आई. टी. संकलक गो भी देखें अनुकूली अनुकूलन गतिशील मृत कोड उन्मूलन वैश्विक अनुकूलन हॉट स्पॉट (कंप्यूटर प्रोग्रामिंग) अंतर-प्रक्रियात्मक अनुकूलन लिंक-टाइम अनुकूलन (एल. टी. ओ.) समय-समय संकलन संदर्भ संकलन अनुकूलन का पता लगाना