วิธีที่มีประสิทธิภาพมากที่สุดในการเชื่อมสตริงคืออะไร
String.Format
เตียรอยด์ ซึ่งประสิทธิภาพที่ชาญฉลาดนั้นจะช้ากว่านิดหน่อยที่หนึ่ง liners +
และ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
ถ้าคุณมี เพื่อสร้างอาร์เรย์สำหรับมันในจุดที่