2011-09-30 9 views
7

सृजन पर सूचियों की क्षमता निर्धारित करने का महत्व क्या है?`IList` क्षमता सेट करने का महत्व क्या है?

उदाहरण के लिए, मैं जानता हूँ कि सुनिश्चित करें कि मेरी सूची में केवल अपने जीवन भर n आइटम शामिल होंगे के लिए

उत्तर

14

List<T> के अंदर, एक सांख्यिकीय आकार का संग्रह है जो आपके आइटम रखता है। एक बार जब आप उस संग्रह की क्षमता तक पहुंच जाते हैं, तो List<T> इसे फिर से आकार देने वाला होता है जो एक प्रदर्शन हिट होता है (हो सकता है कि आपके लिए महत्वपूर्ण न हो)।

प्रारंभिक क्षमता निर्धारित करके, आप उन पुन: आकार के संचालन करने से परहेज कर रहे हैं।

7

जब भी किसी सूची को अपनी वर्तमान क्षमता से अधिक की आवश्यकता होती है, स्मृति की पुनरावृत्ति और सामान के चारों ओर घूमना आवश्यक होता है, जिसमें समय और प्रयास होता है।

यदि आप समय से पहले जानते हैं कि सूची कितनी बड़ी होगी, तो आप इससे बच सकते हैं।

3

आप थोड़ा गति करेंगे क्योंकि सूची को उगाया नहीं जाना चाहिए। एक सूची बढ़ाना ओ (एन) है जहां n तत्वों की वर्तमान संख्या है, और मानक List<> इसके वर्तमान आकार को दोगुना करके बढ़ता है। सब कुछ माना जाता है, एक सूची के अंत में एक तत्व जोड़ना अभी भी ओ (1) ऑपरेशन औसत पर है (यह इसलिए क्योंकि एन तत्वों को सम्मिलित करने के अंत में आपके पास अंत में औसत एन आवेषण होंगे (प्रत्येक एक ओ (1) ऑपरेशन) और एन प्रतिलिपि पुराने बफर और नए बफर के बीच ऑपरेशन (प्रत्येक एक ओ (1) ऑपरेशन), इसलिए प्रत्येक ऐड ओवरेज ओ (1) पर है)

3

इससे थोड़ा सुधार प्रदर्शन होगा, क्योंकि आवश्यक मेमोरी जब आप सूची बनाते हैं तो आवंटित किया जाए, और जब आप अधिक तत्व जोड़ते हैं तो सीएलआर को सूची आकार में वृद्धि नहीं करनी होगी।

ध्यान दें कि यदि आप सूची आकार निर्दिष्ट करते हैं, तो भी अगर आप अपेक्षा से अधिक तत्व जोड़ते हैं तो यह बढ़ जाएगा।

संबंधित मुद्दे