2012-07-12 12 views
10

की तुलना में हमारे पास एक बड़ी परियोजना है,> लगभग 300 डीएलएल में कोड की 1 एम लाइनें हैं। अब तक हम वीएस 6 का उपयोग कर रहे हैं।वीएस -2008 सी ++ संकलन में विशाल ओबीजे फाइलें वीएस 6

अब मैंने सब कुछ VS2008 में परिवर्तित कर दिया है, सभी संकलन, लिंक और अधिक महत्वपूर्ण - रन!

==> हालांकि ... परिणामी संकलित ओबीजे फाइलें एक्स 10 बड़ी हैं और लिंकिंग बेहद धीमी है, लिंकर मारने के साथ> 1 जीबी मेमोरी अक्सर होती है।

निहितार्थों का एक हिस्सा यह है कि मुझे कुछ prjects/bigobj के साथ संकलित करने की आवश्यकता है।

परिणाम एक ऐसा निर्माण है जो डेस्कटॉप पर लगभग 1:45 से 3h तक चला गया। डीएलएल और एलआईबी पुराने वीएस 6 निर्माण में लगभग समान आकार के हैं।

मैंने जो कुछ भी यहां पाया वह मुझे पढ़ा है लेकिन इस समस्या का कोई उपाय नहीं मिला। यदि यह अतिरिक्त DEBUG जानकारी है - मुझे यह नहीं चाहिए। मेरे पास पहले पर्याप्त था। रिलीज में आकार बढ़ गया, लेकिन इतना नहीं ...

किसी को भी कोई विचार है? या परियोजनाओं को बहुत छोटी इकाइयों में तोड़ने का मेरा एकमात्र विकल्प है? क्या मेरी एकमात्र उम्मीद है? मैं एक Obj बनाम VS2008 VS6 द्वारा बनाई गई की DUMPBIN तुलना में किया है: निश्चित रूप से वहाँ एक गुप्त झंडा मैं याद किया ...


Edit1 (20BST 13/07/2012 12) है। 2008 में से एक जैसा दिखता है जैसे "स्थैतिक लिंकिंग"। वीएस 6 में इसमें वर्तमान डीएलएल से कुछ प्रतीक शामिल हैं। वीएस -2008 में इसमें (संभवतः) सभी पुस्तकालयों के प्रतीक शामिल हैं जो यह निर्भर है। क्रमशः वीएस 6 और वीएस -2008 के लिए डंपबिन आकार 66kb और 32,000kb हैं।


+2

प्रोजेक्ट सेटिंग्स (सी ++ शाखा) में "डीबग जानकारी" अक्षम करने का प्रयास करें। –

+7

_ "हमारे पास एक बड़ी परियोजना है,> लगभग 300 डीएलएल में कोड की 1 एम लाइनें। अब तक हम वीएस 6 का उपयोग कर रहे हैं।" _ मैं कभी भी अपनी नौकरी के बारे में शिकायत नहीं कर रहा हूं। – Luke

+0

@IvanShcherbakov - क्या यह मुझे आसानी से डिबगिंग से नहीं रोकेगा? – aabramovich

उत्तर

5

अपने डिबगिंग विकल्पों की जांच करें। /Z7 बड़ी ओबीजे फाइलें, /Zi एक ही जानकारी को एक अलग पीडीबी फ़ाइल में रखता है।

कंपाइलर विकल्प /Oi आंतरिक फ़ंक्शन को रेखांकित करके मदद कर सकता है, जिसे अब लिंक करने की आवश्यकता नहीं है। आप शायद memset डीबग करना नहीं चाहते हैं।

/Gm (वृद्धिशील पुनर्निर्माण) बंद करें ताकि आप /MP (समांतर निर्माण) चालू कर सकें। /Gy को बंद करें - जबकि यह छोटे EXE के लिए बनाता है, यह बड़ी ओबीजे फ़ाइलों और धीमे लिंकिंग का कारण बनता है।

+0

धन्यवाद @MSalters। हम/ZI का उपयोग करते हैं। हम/एमपी का उपयोग करते हैं, और जीवाई बंद है। मैंने वृद्धिशील बनाम गैर-वृद्धिशील लिंकेज के साथ भी खेला। गैर-वृद्धिशील दर्दनाक है। बहुत। जोड़ना/ओई अब - 12h – aabramovich

+0

में रिपोर्ट करेगा वृद्धिशील लिंक मेमोरी से बाहर हो जाता है और मुझे इसके चारों ओर कोई रास्ता नहीं मिल रहा है। ऑब्जेक्ट आकार में लगभग 25% की कमी आई है, लेकिन वे अभी भी विशाल हैं। मैं/3 जीबी ध्वज का उपयोग नहीं कर सकता डेवलपर्स (erm) लैपटॉप का उपयोग करते हैं जिनके पास 3 जीबी समग्र है ... मैं ओएस बदलने की कोशिश करूंगा, क्योंकि मेरे पास XP है ... – aabramovich

+1

'3 जीबी' ध्वज एक को संदर्भित करता है निष्पादन योग्य के लिए ddress space, और संकलक या लिंकर को स्वयं प्रभावित नहीं करता है। इसके अलावा, यह 3 जीबी पता स्थान है, जिसमें स्मृति-मैप की गई फ़ाइलें शामिल हैं, रैम नहीं। – MSalters