चेक करने का सबसे अच्छा तरीका लूप में दोनों विधियों को आजमाकर, लगभग 100,000 प्रत्येक कोशिश कर रहा है। प्रत्येक 100,000 पुनरावृत्तियों को लेने और उनकी तुलना करने की मात्रा को मापें। मुझे नहीं लगता कि इसमें बहुत अंतर है। लेकिन हालांकि, एक छोटा सा अंतर है। पहले उदाहरण में पुनरावृत्तियों की संख्या के रूप में कई चर होंगे। दूसरे उदाहरण में सिर्फ एक चर है। कंपाइलर यहां कुछ अनुकूलन करने के लिए पर्याप्त स्मार्ट है, इसलिए आपको गति सुधार दिखाई नहीं देगा। हालांकि, यदि आप दोबारा लूप के बाहर होने के बाद लूप के अंदर उत्पन्न अंतिम वस्तु का उपयोग नहीं करना चाहते हैं, तो पहला समाधान बेहतर होगा। दूसरे समाधान में, कचरा कलेक्टर बनाई गई अंतिम वस्तु को मुक्त करने में कुछ समय लगेगा। पहले उदाहरण में, कचरा कलेक्टर ऑब्जेक्ट को मुक्त करने में थोड़ा तेज़ होगा। यह शेष कोड पर निर्भर करता है लेकिन यदि आप इस स्ट्रिंगबिल्डर ऑब्जेक्ट में बहुत अधिक डेटा संग्रहीत करते हैं तो दूसरा उदाहरण इस स्मृति को बहुत अधिक समय तक रख सकता है, इस प्रकार लूप छोड़ने के बाद आपके कोड के प्रदर्शन को कम कर देता है!
फिर, यदि ऑब्जेक्ट्स 100 केबी खाती हैं और आपके मशीन में 16 जीबी है, तो कोई भी परवाह नहीं करता है ... कचरा कलेक्टर अंततः इसे फिर से मुक्त कर देगा, शायद जैसे ही आप इस लूप वाले विधि को छोड़ दें।
स्रोत
2010-08-02 14:23:10
http://stackoverflow.com/questions/2447475/best-practice-for-creating-objects-used-in-for-foreach-loops –
की तरह एक असंबंधित त्रुटि यह है कि दूसरा संस्करण शून्य करने के लिए प्रारंभ करना चाहिए अतिरिक्त आवंटन से बचने के लिए। –