निरंतर प्रसार जैसे अनुकूलन समान संकलन इकाई (यानी एक ही फ़ाइल) के भीतर कार्यों में संभव है।क्या संकलन इकाइयों में अनुकूलित सी/सी ++ कंपाइलर हैं?
उदाहरण के लिए:
int f(int x)
{
return 3 + x;
}
int main(void)
{
printf("%d\n", 1 + f(4));
return 0;
}
कि उदाहरण में, मुझे लगता है कि एक पर्याप्त स्मार्ट संकलक अन्य निरंतर 'के साथ पूर्णांक गणित को सुलझाने' 4 'समारोह' एफ 'के लिए निरंतर प्रचार कर सकते हैं, 3 ', और परिणाम मूल्य को वापस प्रसारित करता है इस प्रकार सब कुछ अंतिम मूल्य' 8 'में जोड़ता है।
(ठीक है, मुझे ठीक कर लें मैं गलत हूँ ..)
हालांकि, क्या हुआ अगर समारोह 'एफ' एक और संकलन इकाई में है हो रहा है। चूंकि वे दोनों इकाइयां अलग से संकलित की जाती हैं, इसलिए संकलक इस तरह अनुकूलित नहीं कर सकता है।
क्या इसका मतलब यह है कि ऑप्टिमाइज़ेशन केवल उसी संकलन इकाई के भीतर ही संभव है, या लिंक-टाइम के कुछ प्रारूप देर से अनुकूलन किए गए हैं?
साइड प्रश्न: क्या एक स्क्रिप्ट जो सभी स्रोत पेड़ से एक एकल बड़ी .c फ़ाइल को अनुकूलन संभावनाओं को बढ़ा सकती है? –
हां, सभी कोड को एक फ़ाइल में डालने के लिए अमलगामेशन - http://www.sqlite.org/amalgamation.html - और वास्तव में उस उद्देश्य के लिए उपयोग किया जाता है। – sharptooth
केवल तभी जब कोड इसका समर्थन करता है। प्रीप्रोसेसर परिभाषित करता है, स्थिर प्रति-अनुवाद-इकाई परिभाषाएं, कंपाइलर सीमाएं और अन्य चीजें रास्ते में आती हैं। ओटीओएच, यह भी काफी मजबूत बनाता है। – peterchen