में ओवरहेड मैं सोच रहा हूं कि ओवरहेड आपके कोड में अप्रयुक्त कार्यों का क्या है।अप्रयुक्त कोड
उदाहरण के लिए कहें कि आपके पास कुछ डिबग लॉगिंग है, और फिर आप अपनी अधिकांश ऑब्जेक्ट्स को ToString() फ़ंक्शन देते हैं जिसका उपयोग डीबग लॉग में किया जा रहा है।
रिलीज में डिबग लॉगिंग का उपयोग नहीं किया जा रहा है। क्या यह उन ToString() फ़ंक्शंस के स्रोत कोड को हटाने के लायक है? (उदाहरण के लिए मैक्रो के माध्यम से?)
या क्या वे निष्पादन योग्य मामूली रूप से बड़े होते हैं और अन्यथा प्रदर्शन को प्रभावित नहीं करते हैं? जैसे कोई गति प्रभाव नहीं? या यदि संकलक या लिंकर संभवतः फ़ंक्शंस को हटा देता है तो उनका उपयोग नहीं किया जाता है? यदि कंपाइलर या लिंकर कोड को नहीं हटाता है, तो क्या होगा यदि ToString() फ़ंक्शंस इनलाइन परिभाषित किए गए हों? संभवतः यह कोड को रेखांकित करने का प्रयास करेगा, और जब से समारोह कभी नहीं कहा जाता है, तो यह गायब हो जाएगा?
मुझे लगता है कि प्रत्येक कार्य को एक स्थिर lib में बनाए रखा जाना चाहिए, लेकिन एक बार निष्पादन योग्य के लिए संकलित किया गया है, निश्चित रूप से लिंकर द्वारा बहुत सारी चीज़ें अनदेखा की जाती हैं?
एक और नोट पर जो लगभग समान है, यदि कंपाइलर इनलाइन फ़ंक्शन को इनलाइन करने के लिए चुनता है, ताकि इनलाइन फ़ंक्शन को कई संकलन इकाइयों में फ़ंक्शन के रूप में परिभाषित किया गया हो, तो लिंकर अनावश्यक परिभाषाओं को दूर कर देगा और केवल एक को लिंक करेगा अंत में उन्हें?
धन्यवाद
यह कंपाइलर पर निर्भर हो सकता है और इसका उपयोग किस अनुकूलन पर निर्भर करता है। – soandos
"समयपूर्व अनुकूलन सभी बुराइयों की जड़ है" - डोनाल्ड नुथ –
मैं समयपूर्व अनुकूलन मंत्र से बहुत थक गया हूं। हां आपकी मदद के लिए धन्यवाद। इसके अलावा: "आप जो कर रहे हैं उसे समझने से आप इसे अच्छी तरह से करने में मदद कर सकते हैं।" या आप असहमत हैं? निश्चित रूप से संकलक और लिंकर्स की समझ खराब नहीं है। लेकिन आपके इनपुट के लिए धन्यवाद। – Cookie