बॉक्सिंग एक मान प्रकार को ऑब्जेक्ट प्रकार में परिवर्तित करता है। या जैसा कि एमएसडीएन इसे रखता है, मुक्केबाजी एक "प्रबंधित ढेर पर एक संदर्भ प्रकार वस्तु के अंदर संरचना को लपेटने का संचालन है।"सी # - क्या पूल बॉक्स करना संभव है?
लेकिन यदि आप आईएल कोड को देखकर उसमें ड्रिल करने का प्रयास करते हैं, तो आप केवल जादू शब्द "बॉक्स" देखते हैं। अपने आस्तीन एक public T Value
संपत्ति के साथ Box<T>
की तरह, है, और एक पूर्णांक मुक्केबाजी
अटकलें, मुझे लगता है क्रम में किसी प्रकार का है कि जेनरिक आधारित गुप्त वर्ग ऊपर दिखाई देगा:
int i = 5;
Box<int> box = new Box<int>;
box.Value = 5;
पूर्णांक बॉक्स से निकालना होगा बहुत सस्ता हो: return box.Value;
दुर्भाग्य से, मेरा प्रदर्शन-भूखा सर्वर एप्लिकेशन मुक्केबाजी का एक उचित हिस्सा है, विशेष रूप से decimals। इससे भी बदतर, ये बक्से अल्पकालिक हैं, जो मुझे संदेह करता है कि मैं दो बार भुगतान करता हूं, एक बार बॉक्स को तेज करने के लिए और उसके बाद फिर से कचरे के लिए बॉक्स को इकट्ठा करने के बाद।
अगर मैं स्वयं इस स्मृति को पूरी तरह से कर रहा था, तो मैं यहां एक ऑब्जेक्ट पूल का उपयोग करने पर विचार करता हूं। लेकिन चूंकि वास्तविक वस्तु निर्माण आईएल में एक जादू शब्द के पीछे छिपा हुआ है, तो मेरे विकल्प क्या हैं?
मेरे विशिष्ट प्रश्न:
- वहाँ क्रम एक पूल से बक्से लेने के लिए उत्प्रेरण के बजाय उन्हें instanciating के लिए एक मौजूदा तंत्र है?
- मुक्केबाजी के दौरान बनाए गए उदाहरण का प्रकार क्या है? क्या मुक्केबाजी प्रक्रिया को मैन्युअल रूप से नियंत्रित करना संभव है, फिर भी अभी भी अनबॉक्सिंग के साथ संगत हो सकता है?
कि आखिरी सवाल अजीब लगता है, मैं क्या मतलब है कि मैं अपने ही Box<T>
या DecimalBox
वर्ग, बॉक्स/Unbox मैन्युअल रूप से बनाते यह पूल, और कर सकता है। लेकिन मैं उस कोड में विभिन्न स्थानों को जाना और संशोधित नहीं करना चाहता हूं जो बॉक्स किए गए मान (उर्फ अनबॉक्स) का उपभोग करते हैं।
तुम सिर्फ जेनरिक/कस्टम वस्तुओं आदि का उपयोग/द्वारा बॉक्सिंग के संचालन को कम करने के विचार किया है।? 'बॉक्स 'निर्देश जानबूझकर अपारदर्शी है, हालांकि आप इसे अपने' बॉक्स 'उपरोक्त वर्ग के माध्यम से नकल कर सकते हैं। –
dlev
"मेरा आवेदन मुक्केबाजी का एक उचित हिस्सा है"। एक अजीब खेल, एकमात्र जीतने वाला कदम खेलना नहीं है। –
"इससे भी बदतर, ये बक्से अल्पकालिक हैं, जो मुझे संदेह करता है कि मैं दो बार भुगतान करता हूं, एक बार बॉक्स को तेज करने के लिए और उसके बाद फिर से कचरे के लिए बॉक्स को इकट्ठा करने के बाद।" तुमने प्रोफाइल किया, है ना? यानी आप जानते हैं कि जीसी आपके आवेदन में एक बाधा है क्योंकि आपने अनुमान लगाया है, और इसलिए नहीं कि आपने अनुमान लगाया है। जीसी बाध्य होने में एकमात्र बार मैं बड़े बाइट एरे आवंटित कर रहा था। यदि Gen0 संग्रह एक बाधा है तो आपको अपने डिजाइन पर पुनर्विचार करना चाहिए। – CodesInChaos