के सदस्य के लिए ऑर्डर बी(), मैंने खुद को कुछ पुराने 3.5 फ्रेमवर्क विरासत कोड के माध्यम से वापस चला पाया है, और कुछ बिंदुएं हैं जहां पूरी तरह से हैं सूचियों और शब्दकोशों का समूह जो सिंक्रनाइज़ फैशन में अपडेट किया जाना चाहिए। मैंने यह निर्धारित किया है कि मैं इन प्रक्रियाओं को नए कस्टम वर्गों के कस्टम कंटेनर कक्षाओं में परिवर्तित करके उपयोग और समझने के लिए असीम रूप से आसान बना सकता हूं। कुछ बिंदु हैं, हालांकि, जहां मैं इन नए कंटेनर कक्षाओं की सामग्री को एक विशिष्ट आंतरिक संपत्ति द्वारा व्यवस्थित करने के साथ चिंताओं पर आया था। उदाहरण के लिए, एक वर्ग की आईडी संख्या संपत्ति द्वारा सॉर्ट करना।सूची की उपयोगिता <T> .Sort() बनाम सूची <T>। कस्टमर कंटेनर क्लास
कंटेनर कक्षाएं मुख्य रूप से एक सामान्य सूची वस्तु के आधार पर आधारित होती हैं, मेरी पहली प्रवृत्ति आईसीओम्पेर्बल के साथ आंतरिक कक्षाएं लिखना था, और गुणों की तुलना करने वाली तुलनात्मक विधि लिखना था। इस तरह, मैं सॉर्टिंग का आह्वान करना चाहता हूं, तो बस items.Sort()
पर कॉल कर सकता हूं।
हालांकि, मैं इसके बजाय items = items.OrderBy(Func)
का उपयोग करने के बारे में सोच रहा हूं। अगर मुझे किसी अन्य संपत्ति द्वारा सॉर्ट करने की ज़रूरत है तो इस तरह यह अधिक लचीला है। पठनीयता भी बेहतर है, क्योंकि सॉर्टिंग के लिए उपयोग की जाने वाली संपत्ति को आईसीओपरपेरबल कोड को देखने के बजाय सॉर्ट कॉल के साथ ऑनलाइन सूचीबद्ध किया जाएगा। परिणामस्वरूप समग्र कार्यान्वयन क्लीनर महसूस करता है।
मुझे समयपूर्व या सूक्ष्म अनुकूलन की परवाह नहीं है, लेकिन मुझे स्थिरता पसंद है। मुझे उचित रूप से कई मामलों के लिए एक तरह के कार्यान्वयन के साथ चिपकना सबसे अच्छा लगता है, और यह आवश्यक है कि विभिन्न कार्यान्वयन का उपयोग करें। List.Sort का उपयोग करने के बजाय LINQ ऑर्डरबी का उपयोग करने के लिए मेरे कोड को परिवर्तित करना उचित है? क्या इन कस्टम कंटेनरों के लिए आईसीओम्परेबल कार्यान्वयन के साथ चिपकने का यह बेहतर अभ्यास है? क्या किसी भी पथ द्वारा प्रस्तावित कोई महत्वपूर्ण यांत्रिक लाभ है कि मुझे निर्णय का वजन करना चाहिए? या उनकी अंतिम कार्यक्षमता इस बिंदु के बराबर है कि यह सिर्फ कोडर की वरीयता बन जाती है?
ठीक है, आपके मानक द्वारा संकेतित मात्रा बोलती है ... वॉल्यूम्स।इस तरह की दरों पर, मैं उस बिंदु को प्रतिस्थापित करने के लिए 3 प्रकारों में निचोड़ भी कर सकता हूं, मैंने 3 ऑर्डरबिज का इस्तेमाल किया था, और बेहतर प्रदर्शन प्राप्त किया था अगर मैंने केवल एक ऑर्डरबी का उपयोग किया था! क्रमबद्ध करें() यह है! –
आपकी त्वरित गणना के आधार पर एक त्वरित अनुवर्ती ... क्या इसका यह भी अर्थ होगा कि 'आइटम। पहला() 'आइटम [0]' से काफी धीमा है? –
नहीं, 'प्रथम() '' IList 'कार्यान्वयन के लिए अनुकूलित किया गया है और' सूची [0]' वापस कर देगा। मुझे उम्मीद है कि प्रदर्शन समान होगा। यहां तक कि अगर यह सीधे गणना का उपयोग कर रहा था, फिर भी यह फिर से एक आइटम होगा फिर भी यह एक माइक्रो अनुकूलन होगा। –