2012-11-22 17 views
7

में किसी भी() बनाम गणना() के लिए जेनरेट किए गए प्रश्नों के प्रदर्शन की तुलना करना मैं इकाई फ्रेमवर्क 4.1 और सी # के साथ काम कर रहा हूं।इकाई फ्रेमवर्क 4.1

कौन सा सर्वश्रेष्ठ प्रदर्शन के लिए सबसे उपयुक्त है?

यदि ऐसा है - क्यों? (अतिरिक्त रीडिंग के लिए कोई लिंक)?

bool isBoarding = invoice.Allocations.Where(a => a.Service.Key == "boarding").Count() > 0; 

या

bool isBoarding = invoice.Allocations.Any(a => a.Service.Key == "boarding"); 
+0

गिनती के बारे में एक उत्कृष्ट पद पाया 'Any' अधिक पठनीय है और सामान्य रूप से और अधिक कुशल के बाद से यह' उपयोग कर सकते हैं EXISTS' है। लेकिन लिंक-टू-एंटिटीज में आपको जेनरेट एसक्यूएल देखना चाहिए। [कभी-कभी] (http://stackoverflow.com/a/11042691/284240) 'गणना' तेज़ी से प्रतीत होता है। लिंक-टू-ऑब्जेक्ट्स के लिए [हमेशा] (http://stackoverflow.com/a/305156/284240) 'Any' का उपयोग करें। उपयोगी लिंक के लिए –

+0

धन्यवाद। – Sampath

उत्तर

8

गणना मेरा मानना ​​है कि सभी रिकॉर्ड का कारण होगा, पर दोहराया जा करने के लिए है, जबकि किसी भी पहले यह पाता है पर बंद हो जाएगा।

संपादित करें: बस बनाम किसी भी take a look here

+0

जो पोस्ट आप लिंक करते हैं वह Ienumerable के बारे में है लेकिन प्रतिक्रियाओं में यह Iqueriable और EF –

+0

के बारे में बात करता है वास्तव में, सामान्य रूप से लिनक्स का उपयोग करते समय किसी भी चीज लगभग हमेशा तेज होती है, हालांकि लिंक से इकाइयों का उपयोग करते समय गणना()> 0 तेजी से हो सकता है ऐसा लगता है कि ईएफ द्वारा उत्पन्न अक्सर घुलनशील एसक्यूएल की वजह से लगता है। –