2013-05-04 12 views
15

एक परीक्षण के रूप में मैंने डेल्फी 4, 5, 6, 7, 2005, 2010 और XE3 का उपयोग करके डेल्फी में एक सरल "हैलो वर्ल्ड" ऐप बनाने का निर्णय लिया। ऐप एक TForm से अधिक कुछ नहीं है, एक ऑनबिक ईवेंट वाला एक टीबटन जो शोमेसेज ('हैलो वर्ल्ड') कहता है।डेल्फी XE3 EXE फ़ाइल का आकार डेफी 7 से 25 गुना बड़ा है

नीचे डिबगिंग के साथ प्रत्येक अंतिम EXE का परिणाम बंद:

File sizes of EXEs

कोई व्याख्या कर सकते हैं क्यों XE3 संस्करण 26 बार डेल्फी के पिछले संस्करणों की औसत से भी बड़ा है?

यहाँ XE3 के लिए अपने प्रोजेक्ट सेटिंग्स हैं:

Settings 1

Settings 2

+0

टिप्पणियों पर एक नजर डालें और इस सवाल का जवाब: http://stackoverflow.com/questions/9167938/difference-between-delphi-7 -और-डेल्फी -2010-निष्पादन योग्य आकार –

+0

repro नहीं कर सकता। मेरे लिए यह 2230 केबी है। –

+0

@DaleM शायद सच है, लेकिन आकार के 2x और आकार के 25 गुना के बीच एक बड़ा अंतर है। इसके अलावा यह 2010 है। यह एक्सई 3 है। –

उत्तर

10

आप 'रिलीज' विन्यास को बदलने के बाद एक ही एक संकलन किया है हो सकता है। पुनर्निर्माण करने की कोशिश करें (पुन: संकलित नहीं)। यह वास्तव में निष्पादन योग्य पर रिलीज कॉन्फ़िगरेशन को सक्रिय करेगा, और शायद एक छोटा फ़ाइल आकार।

मुझे (डेल्फी XE2) के लिए, आकार एक ही एप्लिकेशन (रिलीज़ विन्यास) के लिए Windows द्वारा की सूचना दी है:

1,52 एमबी (1,600,512 बाइट्स)

+1

स्थापित करने का सुझाव देता हूं डेल्फी वास्तव में बड़ी निष्पादन योग्य फाइलें उत्पन्न करता है। मुझे विश्वास नहीं है कि आरटीटीआई कारण है। कंपाइलर इस विषय पर अक्षम है जैसे कि यह अनुकूलन पर है। बस Embarcadero निष्पादन योग्य आकार की परवाह नहीं करता है। लेकिन यह विशेष रूप से मोबाइल एप्लिकेशन के लिए एक बड़ी समस्या है जिसमें सीमित संसाधन हैं। –

+1

@ बेसपॉन्टर आरटीटीआई का मतलब है कि स्मार्ट लिंकर अप्रयुक्त कार्यों को नहीं हटा सकता है। बड़े निष्पादन योग्यों के लिए कोई भी कारण नहीं है, लेकिन नई शैली आरटीटीआई शायद सबसे बड़ा कारक है। डेस्कटॉप पर, निष्पादन योग्य का बड़ा आकार रनटाइम पर कोई फर्क नहीं पड़ता। इंस्टॉलर डाउनलोड करने के लिए यह केवल एक मुद्दा है। –

0

खैर .. वहाँ कई हैं चीजें जो पुरानी डेल्फी रिलीज और नई के बीच अंतर को समझाती हैं .. महत्वपूर्ण बात यूनिकोड (डी 200 9 .. डीएक्सई 4) का समर्थन है, यूनिकोड एलोक 2 बाइट्स में सभी वर्ण (डी 1, डी 2, डी 3, डी 7 में ... वे केवल एक बाइट आवंटित करते हैं)

+9

नहीं, यह वास्तव में बड़ा मुद्दा नहीं है। प्रत्येक रिलीज में हमेशा अधिक कोड होता है। लेकिन बड़ा बदलाव नई शैली आरटीटीआई है जो वीसीएल इकाइयों के आकार को काफी बढ़ाता है। लेकिन इस मामले में यह एक साधारण डीबग बनाम रिलीज है। –

+3

'महत्वपूर्ण बात'? वास्तव में? लेकिन यह केवल 2 से अधिक नहीं के कारक द्वारा एक बदलाव की व्याख्या करेगा। –

+0

डेविड: मेरे अनुभव में एक्सई आकार 2007-> 200 9 से सबसे महत्वपूर्ण रूप से दोगुना हो गया, संभवतः क्योंकि यूनिकोड के कारण आरटीएल का पुनः लिखना। आरटीटीआई के कारण डी 2010 फिर से बढ़ गया, लेकिन यदि आप इसे अधिकतर बंद कर देते हैं, तो यह 2007-> 200 9 की तुलना में कम है। –

5

मुझे समस्या का पता चला। इस तथ्य को चॉकलेट करें कि जब मैं विकसित करता हूं तो मैं डेल्फी 7 99% समय का उपयोग करता हूं, और एक्सई 3 मेरे लिए नया है। हालांकि मैंने परियोजना विकल्पों के तहत "रिलीज" चुना था और वहां मेरे बदलाव किए थे, यह पता चला है कि बस "रिलीज" चुनने से परियोजना को रिलीज मोड में नहीं रखा जाता है।

This isn't enough

कौन सोचा होगा कि मैं भी आदेश रिलीज मोड में परियोजना लगाने के लिए "रिलीज़" मद पर परियोजना प्रबंधक पैनल और डबल क्लिक करें का इस्तेमाल किया था?

Solution

अगर कोई उत्सुक है, अंतिम EXE अब 2,229 KB, जो केवल 5 बार व्यय का आकार पहले डेल्फी 2010

+0

क्या आप जानते हैं कि आप जितनी चाहें उतनी कॉन्फ़िगरेशन बना सकते हैं? मान लें कि आपके पास 20 अलग-अलग बिल्ड कॉन्फ़िगरेशन हैं, और आप उनमें से एक पर काम कर रहे हैं। जब आप उस कॉन्फ़िगरेशन को डीबग करने के लिए जाते हैं, तो क्या आप वास्तव में उन सभी को संकलित करना चाहते हैं? मेरा मतलब है, इसमें 20 गुना लंबा लगेगा। तो दूसरे शब्दों में, हाँ, आपको इसे यहां बदलने की जरूरत है। –

+4

नहीं, मुझे यह नहीं पता था। शायद एम्बरकेडेरो को डेल्फी 7 और नीचे का उपयोग करने वाले सभी कोडर के लिए "21 वीं शताब्दी में आपका स्वागत है" त्वरित स्टार्ट व्हाइटपेपर की आवश्यकता है, यह बताते हुए कि नया और महत्वपूर्ण क्या है। :-) – user1527613

+8

कृपया @ स्टीव के उत्तर को स्वीकार करें। और आईडीई वैसे ही व्यवहार कर रहा है जैसा अपेक्षा की जा सकती है। यह पूरी तरह से उचित है कि विभिन्न कॉन्फ़िगरेशन विकल्पों के लिए सेटिंग्स को सक्रिय कॉन्फ़िगरेशन को बदले बिना संपादित किया जा सकता है। –

0

है बस अपने .dpr फ़ाइल में इन पंक्तियों डाल है , यह

20% विंडोज का उपयोग करता है के द्वारा exe आकार कम कर देता

{$ O +} {$ SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}

+1

लेकिन यह केवल ** exe ** फ़ाइल के लिए करें! –

+0

डेल्फी 10.1 बर्लिन, '[dcc32 त्रुटि] FinalFrontier.dpr (4): E2003 अविकसित पहचानकर्ता: 'IMAGE_FILE_RELOCS_STRIPPED' –

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