2009-08-21 10 views
9

यदि मैं अंतर्निहित संकुल के साथ डेल्फी में .exe फ़ाइल संकलित करता हूं, तो यह लगभग 600kb EXE फ़ाइल उत्पन्न करता है। हालांकि अगर मैं इसे रनटाइम पैकेज के साथ संकलित करता हूं, तो आकारों का योग (.exe + सभी आवश्यक बीपीएल) लगभग 6-8 एमबी (कंपाइलर के संस्करण के आधार पर) है। अंतर इतना महत्वपूर्ण क्यों है?डेल्फी: .exe अंतर्निहित संकुल के साथ: 600kb, .exe + बाहरी बीपीएल: 6 एमबी। ऐसा क्यों है?

उत्तर

14

क्योंकि यदि आप एक सामान्य संकलन चलाते हैं, तो लिंकर डीसीयू पर "स्मार्ट लिंकिंग" कर सकता है और उस कोड को हटा सकता है जिसे आपके प्रोग्राम की कभी आवश्यकता नहीं है। लेकिन पैकेज प्रीबिल्ट हैं और सभी कोड शामिल हैं, इसलिए आप उन्हें छोटे आकार में स्मार्टलिंक नहीं कर सकते हैं।

4

मुझे लगता है कि आप मानते हैं कि जब आप बीपीएल के साथ एक प्रोग्राम उत्पन्न करते हैं तो पूरी बीपीएल फाइलें जुड़ी होती हैं। बात वह नहीं है। संकलन के अंतिम चरण में, डेल्फी कंपाइलर सब कुछ एक साथ जोड़ने में चला जाता है। वहां यह मॉड्यूल को छोड़ देता है, जो बीपीएल में हैं लेकिन आपके कार्यक्रम द्वारा प्रत्यक्ष या परोक्ष रूप से नहीं कहा जाता है।

तो, आप बहुत छोटे पदचिह्न के साथ समाप्त होते हैं, केवल अंतिम मॉड्यूल में आवश्यक मॉड्यूल ही आवश्यक हैं।

+3

न केवल पूरे मॉड्यूल। स्मार्टलिंकर एक इकाई के भीतर से व्यक्तिगत कार्यों और प्रक्रियाओं को काट सकता है अगर यह निर्धारित करता है कि उनका कभी भी उपयोग नहीं किया जाता है। –

संबंधित मुद्दे