Monday 15 March 2010

c# - I need to iterate and count. What is fastest or preferred: ToArray() or ToList()? -


संभव डुप्लिकेट:

मेरे पास कोड है:

  शून्य फ़ोबार (स्ट्रिंग [] arr, डिक्शनरी & lt; स्ट्रिंग, स्ट्रिंग [] & gt;) {var t = arr.Intersect (dic.Keys)। ); //। Or ToArray ()? विदेशी मुद्रा (टी में विभिन्न आइटम) {..} var j = t.Count; // मुझे यह भी चाहिए}  

किस पद्धति को पसंद किया गया है?

मैं बिना किसी के भी जा सकता हूं लेकिन मुझे आकार जानने की आवश्यकता है और मैं कॉल नहीं करना चाहता हूं एन्युमेरेबल.काउंट & lt; T & gt; () - ऐसा लगता है कि अधिक कार्य करते हैं तो ऐरे & lt; T & gt; आकार या सूची & lt; T & gt; .Count । वास्तव में, वर्तमान एमएस कार्यान्वयन में गणना (IEnumerable) में एक शॉर्टकट की तलाश है अगर यह सही है? IEnumerable एक ICollection है और इस पर कॉल की गणना। इसलिए प्रदर्शन को गिनती करने वाले तत्वों के लिए तुलनीय होना चाहिए।

ToList और ToArray कुछ समान हैं। यदि IEnumerable एक ICollection है, तो CopyTo विधि के बजाय कहा जाता है, जो थोड़ा तेज है।

इसलिए, चुनें कि आपका कोड सबसे अधिक पठनीय और आपके उपयोग के मामले के लिए बेंचमार्क एक निश्चित उत्तर ।

अपडेट: मैंने एक भोली बेंचमार्क किया है।

एक ऐरे के साथ शुरू करना: var items = Enumerable.Range (1,1000)। ToArray ();

  • कॉलिंग टूलाइस्ट (): 25 एमएमएस / 10000
  • टूआरे को बुलाओ (): 23 एमएस / 10000

    एक IEnumerable के साथ शुरू करना : var आइटम = अनमोर। श्रेणी (1,1000);

    • कॉलिंग टूलाइस्ट (): 168ms / 10000
    • कॉलिंग टूअरे (): 171 एमएस / 10000

    इसलिए मूल रूप से आपको तुलनीय प्रदर्शन मिलता है।


No comments:

Post a Comment