मैं ध्यान दें कि इस
Why is String.Concat not optimized to StringBuilder.Append?
की एक सटीक डुप्लिकेट तो यह शायद बंद किया जाना चाहिए है।
लेकिन अगर, अनुमानतः, लागत को लागू करने के लिए लागत कम थी, तो क्या तर्क इसे करने से रोक देगा?
ऐसा लगता है जैसे आप एक ट्यूटोलॉजी का प्रस्ताव दे रहे हैं: यदि एक्स नहीं करने का कोई कारण नहीं है, तो क्या एक्स नहीं करने का कोई कारण है? सं।
मुझे hypothetical, counterfactual प्रश्नों के उत्तर जानने में थोड़ा महत्व दिखाई देता है।
वहाँ प्रोग्रामिंग कर रहे हैं जिन भाषाओं में इस अनुकूलन का उपयोग करें: शायद पूछने के लिए एक बेहतर सवाल एक सवाल असली दुनिया के बारे में हो सकता है?
हां। JScript.NET में, हम लूप में स्ट्रिंग कॉन्सटेनेशन का पता लगाते हैं और कंपाइलर उन्हें स्ट्रिंग बिल्डर को कॉल में बदल देता है।
तो साथ पालन किया जा सकता है कि:
JScript नेट और सी # के बीच मतभेद है कि एक भाषा में, लेकिन अन्य में नहीं अनुकूलन का औचित्य साबित में से कुछ क्या हैं?
जेस्क्रिप्ट की मूल धारणा।नेट यह है कि इसके प्रोग्रामर ज्यादातर जावास्क्रिप्ट प्रोग्रामर होने जा रहे हैं, और उनमें से कई पहले ही पुस्तकालयों का निर्माण कर चुके हैं जिन्हें ईसीएमएस्क्रिप्ट के किसी भी कार्यान्वयन में चलाना चाहिए। उन प्रोग्रामर शायद .NET ढांचे को अच्छी तरह से नहीं जानते हैं, और यदि वे ऐसा करते हैं, तो हो सकता है कि वे स्ट्रिंगबिल्डर का उपयोग अपने लाइब्रेरी कोड को गैर-पोर्टेबल बनाने के बिना नहीं कर पाएंगे। यह भी मानना उचित है कि जावास्क्रिप्ट प्रोग्रामर या तो नौसिखिया प्रोग्रामर हो सकते हैं, या प्रोग्रामर जो कंप्यूटर विज्ञान में अध्ययन के पाठ्यक्रम के बजाय व्यवसाय की अपनी लाइन के माध्यम से प्रोग्रामिंग में आए थे।
सी # प्रोग्रामर कहीं अधिक नेट ढांचे में अच्छी तरह से पता करने के लिए, पुस्तकालयों कि ढांचे के साथ काम लिखने के लिए, और अनुभवी प्रोग्रामर जो समझते हैं होने की संभावना है क्यों looped स्ट्रिंग संयोजन O (n) अनुभवहीन कार्यान्वयन में है । उन्हें इस अनुकूलन को संकलक द्वारा उत्पन्न किया गया है क्योंकि वे इसे आवश्यक मानते हैं तो वे इसे स्वयं ही कर सकते हैं।
संक्षेप में: कंपाइलर सुविधाएं ग्राहक के लिए मूल्य जोड़ने के लिए हमारे बजट खर्च करने के बारे में हैं; आप JScript.NET को फीचर जोड़कर "बैंग फॉर हिरन" प्राप्त करते हैं, इससे आप इसे सी # में जोड़ते हैं।
तकनीकी रूप से इस अनुकूलन को करने से आपको रोक नहीं रहा है, लेकिन मान लें कि दोनों परिचालन अर्थात् समकक्ष नहीं हैं। 'स्ट्रिंगबिल्डर 'का उपयोग करते समय' स्ट्रिंग 'को जोड़ना एक नई' स्ट्रिंग 'ऑब्जेक्ट देता है जो ऑपरेशन का परिणाम होता है, मौजूदा स्ट्रिंग ऑब्जेक्ट को संशोधित करेगा। कोड विश्लेषण को यह सुनिश्चित करने के लिए किया जाना चाहिए कि आप किसी भी तरह से समझौते के दुष्प्रभावों पर निर्भर नहीं हैं। ज्यादातर मामलों में आप ऐसा नहीं करते हैं, यह किसी समस्या को दूर करना असंभव नहीं है, लेकिन फिर, वास्तव में कोड को सही तरीके से लिखना मुश्किल नहीं है। –
यह भी देखें http://blogs.msdn.com/b/ericlippert/archive/2011/07/19/strings-immutability-and-persistence.aspx – SLaks
इस पोस्ट को भी देखें: http: //pranayamr.blogspot। कॉम/2011/02/क्यों-टू-यूज़र-स्ट्रिंगबिल्डर-ओवर-स्ट्रिंग.html –