2013-02-23 119 views
18

वैसे मुझे कई परिस्थितियों का सामना करना पड़ता है जहां एक आईनेमरेबल पर्याप्त नहीं है। हालांकि मैं उपर्युक्त विधि कॉल के प्रदर्शन के बारे में अनिश्चित हूं।लिंक टोलिस्ट/ToArray/ToDictionary प्रदर्शन

क्या मैं सच में पूछना चाहता हूँ है:

  1. एक हे (एन) आपरेशन जो प्रतियां एक नई सरणी/सूची के लिए IEnumerable:

    ToList/toArray के प्रदर्शन है?

  2. यदि मैंने किसी सूची पर एक लिनक्स एक्सटेन्शन विधि कहा है, तो इसमें ओ (1) प्रदर्शन होता है यदि मैं ToList को कॉल करता हूं लेकिन ओ (एन) अगर कॉलएरे को कॉल करता है (और विपरीत अगर मेरी मूल सूची एक सरणी थी)?

  3. कुछ जादू होता है और प्रदर्शन ओ (1) है?

संभवतः शब्दकोश ओ (एन) है, है ना?

उत्तर

43

की ToList/ToArray एक हे (एन) आपरेशन प्रदर्शन है जो प्रतियां एक नई सरणी/सूची को IEnumerable?

हां। ToList थोड़ा अधिक कुशल है, क्योंकि इसे पहले आंतरिक लंबाई में आंतरिक बफर को ट्रिम करने की आवश्यकता नहीं है।

मैं एक सूची पर एक LINQ विस्तार विधि कहा जाता है, यह एक हे (1) प्रदर्शन है अगर मैं ToList फोन लेकिन हे (एन) यदि कॉल toArray (और विपरीत यदि अपने मूल सूची एक सरणी था)?

नहीं दोनों कॉल के लिए, नया संग्रह हमेशा बनाया जाता है; यह मूल संग्रह की एक उथली प्रति है। ToList या ToArray पर किसी भी ICollection<T> पर IEnumerable<T> पर ICollection<T> लागू करने के लिए यह अधिक कुशल है, हालांकि संग्रह के साथ लंबाई को शुरू करने के लिए जाना जाता है। (यह निष्पादन समय पर पता चला है; आपको संकलन-समय के प्रकार के बारे में चिंता करने की आवश्यकता नहीं है।)

संभवतः शब्दकोश ओ (एन) है, है ना?

हैश मानना ​​समझदार है, यह ओ (एन) है, हाँ। असल में यह एक नया शब्दकोश बनाता है जिस तरह से आप शायद इसकी उम्मीद करेंगे।

तुम मेरे Edulinq ब्लॉग श्रृंखला में इसी पोस्ट पढ़ने के लिए चाहते हो सकता है:

+0

मैं भी अपने जवाब के लिए उस लिंक जोड़ना होगा: http: //msmvps.com/blogs/jon_skeet/archive/2011/01/01/reimplementing-linq-to-objects-part-20-tolist.aspx – MarcinJuraszek

+0

@ जोनस्केट: वाह, मैंने यह नहीं देखा कि यह आपका ब्लॉग है वहाँ पोस्ट करें :) कहना है, वास्तव में अच्छा है! – MarcinJuraszek

+0

@MarcinJuraszek हाँ, पूर्ण [Edulinq श्रृंखला] देखें (http: // msmvps।कॉम/ब्लॉग/jon_skeet/संग्रह/टैग/Edulinq/default.aspx) और ई-पुस्तक। शानदार सामान और वास्तव में लिंक, संग्रह पुनरावृत्ति, और सामान्य रूप से इसके कुछ लालित्य को समझने में मदद करता है; वास्तव में मेरी सोच का विस्तार किया। ईबुक की बात करते हुए, प्रकाशित पीडीएफ संस्करण को अपडेट/संपादित करने वाला दूसरा पास जॉन ने कोई भी योजना बनाई है? मैं पूरी तरह से पूरी तरह से पॉलिश और मुद्रित संस्करण खरीदूँगा। :) –