2009-03-10 14 views
18

एक बड़े वीएस समाधान (200 वीसी परियोजनाओं) में इस स्विच के उपयोग से लाभ उठाने के लिए क्या है?फ़ंक्शन-लेवल लिंकिंग (/ वीसी ++ में जीई स्विच) - यह किसके लिए अच्छा है?

जो मैं समझता हूं उससे मुख्य रूप से परिणामस्वरूप द्विआधारी के आकार को प्रभावित करता है; लेकिन छोटी बाइनरी से अलग, क्या एफएलएल परियोजनाओं के बीच निर्भरताओं को कम करने में भी मदद कर सकता है?

FLL आमतौर पर बिल्ड समय को कैसे प्रभावित करता है?

मैं वीसी में एफएलएल पर एक शिक्षित स्पष्टीकरण की भी सराहना करता हूं। MSDN की व्याख्या बहुत संक्षिप्त है।

+1

mwigdahl की उत्कृष्ट पोस्ट में जोड़ने के लिए: [यहां] (https://ribosome.helixcommunity.org/2005/devdocs/FuncLevelLinking) 'एक लिंक जो बताता है कि जी ++ के लिए FLL कैसे प्राप्त करें - यह आपको कुछ अतिरिक्त दे सकता है अंतर्दृष्टि। – dirkgently

उत्तर

26

जब से तुम MSDN के विवरण जुड़ा हुआ है, आप जानते हैं कि/Gy सुनिश्चित करता है कि सभी कार्यों के लिए अपने स्वयं COMDAT में पैक कर रहे हैं। इसका मुख्य लाभ यह है कि यदि आपके समान कार्य हैं तो लिंकर उन्हें कोड के एक वास्तविक टुकड़े ("COMDAT तह") में गिरा सकता है। जब आपके पास कई समान कार्य होते हैं, तो इसका बहुत बड़ा प्रभाव हो सकता है, जो अक्सर तब होता है जब आप आधुनिक सी ++ लिखते हैं जो टेम्पलेट्स पर भारी होता है।

निष्पादन जिसके परिणामस्वरूप के छोटे आकार के अलावा COMDAT तह और unreferenced COMDATs के उन्मूलन की वजह से, वहाँ की/Gy कोई अन्य प्रभाव है। विशिष्ट होने के लिए, यह इंटरप्रोजेक्ट निर्भरताओं को कम करने में मदद नहीं करता है।

लागत संकलन समय (अन्य अनुकूलक झंडे के समान) में मामूली वृद्धि हुई है। आमतौर पर ऐसा कुछ नहीं जिसे आप नोटिस करेंगे।

+0

आवेदन एक को संदर्भित करता है, तो बी में एक समारोह F2 के साथ एक ही COMDAT खंड में स्थिर पुस्तकालय बी, जो (बिना/Gy) रहता है में एक समारोह एफ 1 का संदर्भ देता है प्रतीक F3 सी में, यह ए और सी के बीच एक निर्भरता बनाता है जो अन्यथा नहीं होता जरूरत हो। ए और बी एक परियोजना निर्भरता पर सी परिभाषित नहीं है, तो, एक भी संकलन होगा नहीं एक से कोई कोड पथ का संदर्भ हालांकि F3, और इस/Gy से रोका जा जाएगा। क्या यह गलत है? –

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