तारों को समतल करने का सबसे कुशल तरीका क्या है?
String.Format
स्टेरॉयड पर पसंद है। जो, प्रदर्शन के लिहाज से, एक लाइनर की तुलना में एक छोटा सा धीमा है +
और String.Concat
, लेकिन उन लोगों की तुलना में बहुत बेहतर है StringBuilder
, कई कॉलों की तुलना में धीमा है । व्यावहारिक रूप से, प्रदर्शन अंतर ऐसे होते हैं, अगर मुझे सहमति देने के लिए केवल एक ही रास्ता चुनना होता है, तो मैं स्ट्रिंग प्रक्षेपों का उपयोग करके चुनूंगा $
... यदि दो तरीके हैं, तो StringBuilder
मेरे टूलबॉक्स में जोड़ें । उन दो तरीकों से आप सेट हो गए हैं।
String.Join
नीचे इस सवाल का जवाब क्या करता है नहीं +
न्याय और, है व्यावहारिक रूप से बोल रहा है, CONCATENATE तार करने के लिए एक बुरी तरह से है, लेकिन यह बुद्धिमान आश्चर्यजनक रूप से तेजी से प्रदर्शन है। जवाब क्यों दिलचस्प है। String.Concat
और String.Join
दोनों सरणियों पर कार्य कर सकते हैं, लेकिन String.Join
वास्तव में तेज है। जाहिरा तौर पर, String.Join
बहुत परिष्कृत और String.Concat
आंशिक रूप से अनुकूलित है , क्योंकि यह इसी तरह से संचालित होता StringBuilder
है कि यह पहले स्ट्रिंग की लंबाई की गणना करता है और फिर UnSafeCharBuffer का उपयोग करके इस ज्ञान से लाभ होने वाले स्ट्रिंग का निर्माण करता है।
String.Join
यह भी एक सरणी जो लगता संसाधन अक्षम सही निर्माण की आवश्यकता है? ... कि बाहर कर देता है +
और String.Concat
उनके घटक के लिए निर्माण सरणियों वैसे भी। नतीजतन, मैन्युअल रूप से एक सरणी बनाने और इसे खिलाने के लिए String.Join
तुलनात्मक रूप से तेज़ है ... हालांकि, StringBuilder
अभी भी String.Join
हर व्यावहारिक तरीके से बेहतर प्रदर्शन करते हैं $
, जबकि लंबे स्ट्रिंग्स में केवल थोड़ा धीमा और बहुत तेज़ है ... यह उल्लेख करने के लिए नहीं कि आपके पास यह उपयोग करने के लिए अजीब और बदसूरत String.Join
है। मौके पर इसके लिए एक सरणी बनाने के लिए।