Cách hiệu quả nhất để nối chuỗi?
StringBuilder
các trường hợp sử dụng có thể được tìm thấy ở đây .
String.Format
trên steroid. Mà, hiệu suất khôn ngoan, chậm hơn một chút ở một lớp lót so với +
và String.Concat
, nhưng tốt hơn nhiều so với những cái đó, mặc dù chậm hơn so với StringBuilder
, ở nhiều cuộc gọi. Thực tế mà nói, sự khác biệt về hiệu năng là như vậy, nếu tôi phải chọn chỉ một cách để nối, tôi sẽ chọn phép nội suy chuỗi bằng cách sử dụng $
... Nếu hai cách, sau đó thêm StringBuilder
vào hộp công cụ của tôi. Với hai cách bạn đã đặt.
String.Join
trả lời dưới đây không thực +
sự công bằng và thực tế mà nói, là một cách tồi để nối chuỗi, nhưng đó là hiệu suất nhanh đáng ngạc nhiên. Câu trả lời tại sao thú vị. String.Concat
và String.Join
cả hai có thể hành động trên mảng, nhưng String.Join
thực sự nhanh hơn. Rõ ràng, String.Join
khá phức tạp và được tối ưu hóa hơn String.Concat
, một phần vì nó hoạt động tương tự như StringBuilder
ở chỗ nó tính toán độ dài chuỗi trước và sau đó xây dựng chuỗi được hưởng lợi từ kiến thức này bằng UnSafeCharBuffer.
String.Join
cũng yêu cầu xây dựng một mảng có vẻ không hiệu quả về tài nguyên phải không? ... Hóa ra điều đó +
và String.Concat
xây dựng các mảng cho các thành phần của chúng. Do đó, tự tạo ra một mảng và nuôi nó để String.Join
là tương đối nhanh hơn ... Tuy nhiên, StringBuilder
vẫn còn nhanh hơn so với String.Join
trong khoảng mọi phương diện thực tiễn trong khi $
chỉ hơi chậm hơn và nhanh hơn nhiều tại các chuỗi dài ... chưa kể rằng đó là vụng về và xấu xí để sử dụng String.Join
nếu bạn có để tạo một mảng cho nó tại chỗ.