Gcc (2.8 इत्यादि) के शुरुआती दिनों में और egcs के समय में, और 2.96-O3 को कभी-कभी काफी छोटा कर दिया जाता था। लेकिन यह एक दशक पहले खत्म हो चुका है, और -ओ 3 अन्य स्तरों के अनुकूलन (बगियापन) से बहुत अलग नहीं है।
हालांकि यह उन मामलों को प्रकट करने के लिए है जहां लोग नियमों पर और अधिक सख्ती से भरोसा करने के कारण अपरिभाषित व्यवहार पर भरोसा करते हैं, और विशेष रूप से कोने के मामलों में, भाषा का।
एक व्यक्तिगत नोट के रूप में, मैं -O3 के साथ कई वर्षों से वित्तीय क्षेत्र में उत्पादन सॉफ्टवेयर चला रहा हूं और अभी तक एक बग का सामना नहीं किया है जो कि -O2 का उपयोग करने पर नहीं होता।
लोकप्रिय मांग से, यहाँ एक अतिरिक्त:
-O3 और विशेष रूप से अतिरिक्त झंडे जैसे -funroll-loops (-O3 द्वारा सक्षम नहीं) कभी-कभी अधिक मशीन कोड उत्पन्न हो सकता है। कुछ परिस्थितियों में (उदाहरण के लिए, छोटे L1 इंस्ट्रक्शन कैश के साथ सीपीयू पर) यह सभी कोड के कारण मंदी का कारण बन सकता है जैसे कि कुछ आंतरिक लूप अब एल 1 आई में फिटिंग नहीं करते हैं। आमतौर पर जीसीसी इतना कोड न उत्पन्न करने के लिए काफी कोशिश करता है, लेकिन चूंकि यह आमतौर पर सामान्य मामले का अनुकूलन करता है, इसलिए ऐसा हो सकता है। विकल्प विशेष रूप से इसके लिए प्रवण होते हैं (जैसे लूप अनरोलिंग) आम तौर पर -O3 में शामिल नहीं होते हैं और उन्हें मैनपेज के अनुसार चिह्नित किया जाता है। जैसे कि आम तौर पर तेज कोड उत्पन्न करने के लिए -O3 का उपयोग करना एक अच्छा विचार है, और जब उचित हो तो केवल -O2 या -O (जो कोड आकार के लिए ऑप्टिमाइज़ करने की कोशिश करता है) में वापस आते हैं (उदाहरण के लिए जब कोई प्रोफाइलर L1I मिस करता है)।
यदि आप अनुकूलन को चरम में लेना चाहते हैं, तो आप कुछ अनुकूलन के साथ जुड़े लागतों को - सीआरएम के माध्यम से जीसीसी में ट्विक कर सकते हैं। इसके अतिरिक्त ध्यान दें कि gcc में अब इन कार्यों के लिए अनुकूलन सेटिंग्स को नियंत्रित करने वाले कार्यों में विशेषताएँ डालने की क्षमता है, इसलिए जब आप पाते हैं कि आपको एक फ़ंक्शन में -O3 के साथ समस्या है (या बस उस फ़ंक्शन के लिए विशेष झंडे आज़माना चाहते हैं), आपको O2 के साथ संपूर्ण फ़ाइल या संपूर्ण प्रोजेक्ट संकलित करने की आवश्यकता नहीं है।
ऐसा लगता है कि ओट का उपयोग करते समय ध्यान रखा जाना चाहिए, जो बताता है:
-Ofast सभी -O3 अनुकूलन को सक्षम करता है। यह उन अनुकूलन को भी सक्षम करता है जो सभी मानक अनुपालन कार्यक्रमों के लिए मान्य नहीं हैं।
जो मुझे निष्कर्ष निकालता है कि -O3 पूरी तरह से मानकों का अनुपालन करने का इरादा है।