इस विशेष मामले में, IEnumerable<T>
फ़ॉर्म का उपयोग करके अधिक कुशल होगा, क्योंकि आप केवल को गिनती जानने की आवश्यकता है। यदि आपको आवश्यकता नहीं है तो डेटा को स्टोर करने, बफर आदि का आकार बदलने में कोई बात नहीं है।
यदि आपको किसी भी कारण से परिणामों का फिर से उपयोग करने की आवश्यकता है, तो List<T>
फ़ॉर्म अधिक कुशल होगा।
ध्यान दें कि दोनों Count()
विस्तार विधि और Count
संपत्ति Count()
चेकों के कार्यान्वयन के रूप में अगर लक्ष्य अनुक्रम ICollection<T>
लागू करता है और यदि ऐसा है तो Count
संपत्ति का उपयोग करता है देखने के लिए List<T>
के लिए योग्य होंगे।
एक अन्य विकल्प जो होना चाहिए भी अधिक कुशल (हालांकि सिर्फ), जो एक प्रतिनिधि लेता Count
का अधिभार कॉल करने के लिए होगा:
private int GetProviderCount(Type type)
{
return _objectProviders.Count(provider =>
(provider.Key.IsAssignableFrom(type)
|| type.IsAssignableFrom(provider.Key))
&& provider.Value.SupportsType(type));
}
यही द्वारा किए गए indirections के अतिरिक्त स्तर से बचने जाएगा Where
और Select
खंड।
(मार्क कहते हैं, डेटा की थोड़ी मात्रा के लिए प्रदर्शन अंतर शायद वैसे भी नगण्य हो जाएगा।)
स्रोत
2009-07-31 09:20:58
सभी का जवाब "जो तेज़ है?" प्रश्न समान हैं: इसे दोनों तरीकों से आजमाएं। एक स्टॉपवॉच प्राप्त करें। तो आप जान लेंगे। –