NS_INLINE की परिभाषा को देखते हुए ऐसा लगता है कि स्थिर इनलाइन पर इसका उपयोग करने का लाभ संकलक संगतता है, क्या यह सही है?
केवल कुछ हिस्सों में। आपको यहां प्रमुख टूलचेन का आकलन करना होगा, और पूछें "क्यों static inline
उपयोग नहीं किया गया था, या यह अपर्याप्त क्यों था?"। प्रमुख टूलचेन में विशेषता __attribute__((always_inline))
है। तो इसमें वास्तव में दो भाग हैं:
ए) संगतता तो यह एकाधिक कंपाइलरों के लिए संगतता जोड़ता है।
बी) प्रभावी टूलचेन में __attribute__((always_inline))
का उपयोग करें। inline
inline
पर एक सरल अनुरोध के लिए तैयार किया गया है। always_inline
के साथ, कंपाइलर अभी भी फ़ंक्शन को इनलाइन करने का अधिकार सुरक्षित रख सकता है (स्पष्ट कारणों से)। हालांकि, यह भी कहता है "मेरा विश्वास करो, मुझे यह रेखांकित करना चाहिए - कंपाइलर, यदि संभव हो तो इनलाइन करें"। यह विशेषता प्रोग्रामर को इनलाइन करने की कुछ क्षमता को पुनर्स्थापित करती है। इसका प्रदर्शन प्रदर्शन के लिए किया जा सकता है, लेकिन मुझे संदेह है (इस मामले में) कि प्रदर्शन आवश्यकताओं के बजाए निजी निर्यात किए गए कार्यों की संख्या में कमी के साथ इसे और अधिक करना है।
हमेशा उद्देश्य-सी परियोजनाओं में स्थिर इनलाइन के स्थान पर किया NS_INLINE चाहिए?
सं __attribute__((always_inline))
लोग हैं, जो अनुभव को अनुकूलित कार्यक्रमों का एक बहुत पड़ा है, और इस सुविधा के उपयोग के साथ के लिए आरक्षित किया जाना चाहिए। यह विशेषता सी फ़ंक्शंस, सी ++ विधियों और अन्य स्थिर कॉल पर लागू की जा सकती है। इसे ओबीजेसी कक्षा या उदाहरण विधियों (जो गतिशील हैं) पर लागू नहीं किया जा सकता है। मैं उल्लेख करता हूं क्योंकि संकलक, अनुकूलक, और एलटीओ वे जो करते हैं उस पर बहुत अच्छे हैं। इस बीच, इनलाइनिंग के अनुचित उपयोग में कई प्रदर्शन दंड हो सकते हैं। अपवाद (उन लोगों के लिए जिन्होंने महत्वपूर्ण समय अनुकूलन नहीं किया है) निश्चित रूप से जब कोई उस मतभेद को मापने के लिए समय लेता है।
यदि कोड अन्य लोगों द्वारा उपयोग की जाने वाली लाइब्रेरी के लिए है, तो क्या आप 'NS_INLINE' का उपयोग करने की सलाह देंगे? – keegan3d
क्या यह एप्पल के अलावा प्लेटफ़ॉर्म पर उपयोग किया जा रहा है? GnuStep या पसंद के साथ? यदि नहीं, तो नहीं। लगभग शून्य मौका है कि मैक ओएस एक्स या आईओएस के लिए विकास करना कभी भी 'स्थिर इनलाइन' के साथ असंगत होगा। –