पर अधिक जानकारी दें मान लें कि आप जिस विधि को कॉल कर रहे हैं उसे तर्क प्रकार के बारे में पता है। यदि ऐसा है, तो आप उन्हें .NET 4 से उपयुक्त Tuple
प्रकार में पैक कर सकते हैं, और ऑब्जेक्ट के रूप में इस विधि को (उदाहरण के लिए ट्यूपल संदर्भ प्रकार) पास कर सकते हैं (क्योंकि सभी टुपल्स के लिए कोई सामान्य आधार नहीं है)।
यहां मुख्य समस्या यह है कि मुक्केबाजी/अनबॉक्सिंग के बिना इस विधि के अंदर तर्कों को संसाधित करना आसान नहीं है, और संभवतः यहां तक कि प्रतिबिंब के बिना भी। सोचने की कोशिश करें कि निकालने के लिए क्या किया जाना चाहिए, मान लें, मुक्केबाजी के बिना एनएच तर्क। आप समझने के साथ समाप्त हो जाएंगे कि आपको या तो शब्दकोश लुकअप (ओं) से निपटना होगा (या तो नियमित Dictionary<K,V>
या internal dictionaries सीएलआर द्वारा उपयोग किया जाना चाहिए), या मुक्केबाजी के साथ। जाहिर है, शब्दकोश लुकअप अधिक महंगा है।
मैं क्योंकि वास्तव में हम बहुत समान समस्या के लिए एक समाधान विकसित इस लिख रहा हूँ: हम मुक्केबाजी के बिना our own Tuples साथ काम करने में सक्षम होना चाहिए - मुख्य रूप से तुलना करने और उन्हें deserialize (tuples को डेटाबेस इंजन हम विकसित द्वारा उपयोग किया जाता है, तो प्रदर्शन किसी भी बुनियादी संचालन के हमारे मामले में वास्तव में आवश्यक है)।
लेकिन:
- हम बहुत जटिल समाधान के साथ खत्म। एक नज़र डालें उदा। TupleComparer पर।
- मुक्केबाजी की अनुपस्थिति का प्रभाव वास्तव में उतना अच्छा नहीं है जितना हम उम्मीद करते हैं: प्रत्येक मुक्केबाजी/अनबॉक्सिंग ऑपरेशन को एक सरणी इंडेक्सिंग और कुछ वर्चुअल विधि कॉल द्वारा प्रतिस्थापित किया जाता है, दोनों तरीकों की लागत लगभग समान होती है।
हमारे द्वारा विकसित दृष्टिकोण का एकमात्र लाभ यह है कि हम कचरे से Gen0 "बाढ़" नहीं करते हैं, इसलिए Gen0 संग्रह बहुत अधिक होता है। चूंकि जेन 0 संग्रह लागत "लाइव" ऑब्जेक्ट्स द्वारा आवंटित स्थान के लिए आनुपातिक है और उनकी गिनती के लिए, यह ध्यान देने योग्य लाभ लाता है, अगर अन्य आवंटन एल्गोरिदम के निष्पादन (या बस होता है) के साथ इंटरमीक्स करते हैं तो हम इस तरह से अनुकूलित करने का प्रयास करते हैं।
परिणाम: इस अनुकूलन के बाद हमारे सिंथेटिक परीक्षण 0% से 200-300% प्रदर्शन वृद्धि करने के लिए दिखा रहे थे; दूसरी तरफ, डेटाबेस इंजन के सरल प्रदर्शन परीक्षण ने बहुत कम प्रभावशाली सुधार दिखाया है (लगभग 5-10%)। उपरोक्त परतों पर बहुत समय बर्बाद हो गया था (वहां एक सुंदर जटिल ओआरएम भी है), लेकिन ... इसी तरह की चीजों को लागू करने के बाद आप वास्तव में देखेंगे।
संक्षेप में, मैं आपको कुछ और पर ध्यान केंद्रित करने की सलाह देता हूं। यदि यह पूरी तरह से स्पष्ट होगा कि यह आपके आवेदन में एक प्रमुख प्रदर्शन समस्या है, और इसे हल करने के कोई अन्य अच्छे तरीके नहीं हैं, ठीक है, आगे बढ़ें ... अन्यथा आप समय से पहले अपने ग्राहक से या अपने आप से स्टीलिंग कर रहे हैं अनुकूलन।
स्रोत
2009-12-11 22:13:41
हाँ, लेकिन यह केवल एक प्रकार के लिए पूरी तर्क सूची के प्रकार को सीमित करता है ... – DxCK
आप ओवरलोड के साथ मिश्रण और मिलान कर सकते हैं ... –
मैंने यहां अधिक जानकारी जोड़ने के लिए संपादित किया है ... –