2009-05-11 16 views
26

एक नई कंपनी से शुरू होने के बाद से मैंने देखा है कि वे हमारे अधिकांश समाधान के लिए एकता सीपीपी फाइलों का उपयोग करते हैं, और मैं सोच रहा था कि कोई मुझे एक निश्चित कारण दे सकता है कि क्यों और कैसे यह प्रक्रिया की गति को गति देता है ? मैंने सोचा होगा कि एकता फाइलों में एक सीपीपी फ़ाइल को संपादित करने से उन सभी के पुनर्मूल्यांकन को मजबूर कर दिया जाएगा। यहाँएकता के लाभ/नुकसान बनाता है?

+4

ध्यान रखें कि एकता निर्माण अर्थशास्त्र को बदलता है, क्योंकि बहुत सी चीजें हैं जो एक अनुवाद इकाई की सीमाओं पर निर्भर करती हैं। –

उत्तर

26

बहुत समान प्रश्न और अच्छा जवाब: #include all .cpp files into a single compilation unit?

सारांश है कि कम आई/ओ भूमि के ऊपर प्रमुख लाभ है लगता है।

उपरोक्त प्रश्न में भी जुड़े हुए The Magic Of Unity Builds को भी देखें।

+0

उत्कृष्ट उत्तर, आपकी मदद के लिए बहुत बहुत धन्यवाद, उन लिंक को पढ़ने के बाद भी मैं बुद्धिमान नहीं हूं अगर यूनिट सीपीपी के भीतर फाइलों को संपादित करना पूरे स्रोत का पूर्ण पुनर्मूल्यांकन, इस बारे में कोई विचार है? – Stowelly

+0

हां, यह होगा। चाहे वह एक बुरी बात है या नहीं, इस पर निर्भर करता है कि आपको कितनी बार एक पूर्ण पुनर्निर्माण करना है। –

+2

यदि कोई फ़ाइल बदलती है, तो किसी भी सभ्य बिल्ड सिस्टम में एक बदली निर्भरता दिखाई देगी और बहुत कुछ पुन: संकलित होगा। आप उत्कृष्ट सीसीएसी जैसे कंपाइलर कैश के साथ उस समय में से कुछ को कम करने में सक्षम हो सकते हैं - http://ccache.samba.org/ – akent

6

ली वाइन्डर अपने अनुभवों को पोस्ट एकता के साथ बनाता है - The Evils of Unity Builds

उनका निष्कर्ष है:

एकता बनाता है। मुझे उन्हें पसंद नहीं है।

+0

बहुत उपयोगी लेख। मैं हाल ही में ध्यान दे रहा हूं कि समाधान के भीतर कई परियोजनाओं में फाइलों में कई बदलाव करने में आधे घंटे तक का समय लग सकता है (यहां तक ​​कि अविश्वसनीय के साथ भी) लेकिन स्क्रैच से समाधान और भवन की सफाई में लगभग 5 मिनट लगते हैं, इसलिए निश्चित रूप से बहुत मान्य है वहाँ अंक! – Stowelly

+1

लिंक अब [यहां] पाया जा सकता है (http://engineering-game-dev.com/2009/12/15/the-evils-of-unity-builds/)। – imallett

+0

@imallett लिंक भी टूटा हुआ है। – glauxosdever

2

ऐसा इसलिए है क्योंकि यह अनावश्यक काम बचाता है। निर्भरता के लिए अनावश्यक पार्सिंग और संकलन। लिंकिंग भी अधिक जटिल है - आपके पास या तो एक ऑब्जेक्ट (या कुछ) में आपके निर्यात हैं, या यह लक्ष्य की ऑब्जेक्ट फ़ाइलों में से अधिकांश में अलग-अलग अनावश्यक निर्यात है। कम वस्तुओं के परिणामस्वरूप I/O कम हो गया और लिंक समय कम हो गया। आपके सेटअप के आधार पर, समावेशन एक समस्या हो सकती है - "एकता निर्माण" प्रणाली पर मैं उपयोग करता हूं, निर्माण अंत में CPU और/या स्मृति बाध्य है।

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