"वृद्धिशील जोड़ने" क्या है?


105

मैंने माइक्रोसॉफ्ट के MSDN और वेब के चारों ओर देखा है, लेकिन मैं अभी भी इस बारे में बहुत अच्छा विचार नहीं कर पाया हूं कि यह क्या है।

क्या इसका मतलब है कि पूरा किया गया कार्यक्रम अपने निष्पादन के दौरान अलग-अलग समय पर DLL को लोड करता है, जैसा कि लॉन्च के समय एक बार में सभी को बताया गया था?

क्या मैं पूरी तरह से बंद हूं? :)


1
मैंने GNU ld के लिए एक उत्तर जोड़ा, लेकिन इसे हटा दिया गया, यहाँ एक समान है: stackoverflow.com/questions/29391965/…
Ciro Santilli 郝海东 GN GN 事件

इसे हटा दिया गया था क्योंकि कॉपी, पेस्ट और डायवर्ज बुरा है - कोई बात नहीं कितनी अच्छी सामग्री है en.wikipedia.org/wiki/Don%27t_repeat_yourself
MarcH

जवाबों:


122

लिंकिंग में आपके स्रोत फ़ाइलों से निर्मित सभी .obj फ़ाइलों के साथ-साथ किसी भी .lib फ़ाइलों को आपके आउटपुट (जैसे .exe या .dll) में पैकेजिंग के साथ शामिल किया गया है।

वृद्धिशील जोड़ने के बिना, यह हर बार खरोंच से किया जाना है।

वृद्धिशील लिंकिंग आपके exe / dll को एक तरह से लिंक करता है जिससे लिंकर के लिए मौजूदा exe / dll को अपडेट करना आसान हो जाता है जब आप एक छोटा सा बदलाव और पुनः संकलन करते हैं।

इसलिए, वृद्धिशील लिंकिंग केवल आपके प्रोजेक्ट को संकलित करने और लिंक करने के लिए तेज़ बनाता है।

केवल रनटाइम प्रभाव यह हो सकता है कि यह आपके exe / dll को थोड़ा बड़ा और धीमा कर सकता है, जैसा कि यहां बताया गया है:

http://msdn.microsoft.com/en-us/library/4khtbfyf.aspx

संपादित करें: जैसा कि लोगन ने उल्लेख किया है, वृद्धिशील लिंकिंग लिंक टाइम कोड पीढ़ी के साथ भी असंगत है - इसलिए एक संभावित प्रदर्शन अनुकूलन खो रहा है।

आप विकास को गति देने के लिए डिबग बिल्ड के लिए वृद्धिशील लिंकिंग का उपयोग करना चाह सकते हैं, लेकिन इसे रनटाइम प्रदर्शन को बेहतर बनाने के लिए रिलीज़ बिल्ड के लिए अक्षम करें।

विलंबित DLL हो सकते हैं जो आप सोच रहे हैं:

http://msdn.microsoft.com/en-us/library/151kt790.aspx


आह, मुझे लगा कि लिंक करने वालों ने हमेशा ऐसा किया है! तो, बंद करने से incremental linkingलिंक करने वाले को हर बार खरोंच से सब कुछ लिंक हो जाएगा?
रसेल

6
"व्यवहार में इस के प्रभाव के बारे में चिंता करने लायक नहीं है।" यह शायद ध्यान देने योग्य है कि जबकि "सामान्य" लिंकिंग और वृद्धिशील लिंकिंग के बीच का अंतर हो सकता है कि रन-टाइम में महान प्रदर्शन बुद्धिमान न हो, वृद्धिशील लिंकिंग लिंक टाइम कोड पीढ़ी के साथ असंगत है जो एक कठोर अंतर बना सकता है।
लोगान कैपल्डो

2
@ रसेल: हाँ यह होगा। @ लोगन: धन्यवाद, मैंने अपना उत्तर अपडेट कर दिया है।
सेक्सन ड्रूस

तो क्या इसका मतलब है कि हमें उत्पादन के लिए इस विकल्प को बंद कर देना चाहिए?
आरबीटी

1
@ आरबीटी, हां आपको करना चाहिए।
अजय

15

इसके अलावा, काफी महत्वपूर्ण, वृद्धिशील लिंक के लिए एक शर्त है Edit&Continue- possibily अपने कोड को संपादित करने और इसे फिर से शुरू करने पर, बिना पुनरारंभ किए।

इसलिए डिबग बिल्ड पर होना अच्छी बात है, लेकिन रिलीज बिल्ड नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.