2012-07-11 18 views
7

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

मैं जानना चाहता हूं कि अधिक लागत क्या होगी: एक बड़ी वस्तु जो कि पहले से मौजूद है, एक तर्क के रूप में पास करने के लिए, या केवल एक छोटी वस्तु है जिसमें मुझे आवश्यक गुणों की आवश्यकता होती है और उसे पास किया जाता है?

उत्तर

14

तुम सिर्फ एक विधि के लिए एक तर्क के रूप में यह गुजर रहे हैं, "बड़े" वस्तु गुजर "सस्ता" है - आप केवल ऑब्जेक्ट संदर्भ की एक प्रति, जो सिर्फ एक सूचक के आकार है गुजर रही होगी (जब तक ऑब्जेक्ट एक स्ट्रक्चर प्रकार का न हो, तब तक पूरे "ऑब्जेक्ट" को स्टैक में कॉपी किया जाता है)। यदि आप एक नई वस्तु बनाना चाहते थे, भले ही यह छोटा हो, तो आप उस आवंटन की कीमत का भुगतान कर रहे होंगे और उस पर संपत्तियों की प्रतिलिपि बना रहे होंगे, जो आपके पास नहीं है यदि आप "बड़ी" ऑब्जेक्ट पास करते हैं।

यदि आप इसे इस तरह से पारित कर रहे हैं कि इसे क्रमबद्ध करने की आवश्यकता है (यानी, अनुप्रयोगों में, एक वेब सेवा के लिए कॉल में), तो छोटी वस्तु (अनिवार्य रूप से एक डीटीओ, डेटा ट्रांसफर ऑब्जेक्ट)) पसंद है।

+0

धन्यवाद कार्लोस। जानकर खुशी हुई। – Steve

2

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

चूंकि आप प्रदर्शन से चिंतित हैं, इसलिए मैं सीखने की सलाह दूंगा कि पॉइंटर्स और मेमोरी प्रबंधन सी में कैसे काम करता है। एक बार जब आप इसे समझ लेंगे, तो आपको समझने में एक आसान समय होगा कि कैसे उच्च स्तर की भाषाओं में उनके सारित संस्करण प्रदर्शन को प्रभावित करते हैं।

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