Dizeleri birleştirmenin en etkili yolu nedir?
StringBuilder
kullanım durumları hakkında daha ayrıntılı bilgiyi burada bulabilirsiniz .
String.Format
steroidlerde olduğu gibi . Hangi, performans açısından, bir daha gömlekleri bir nebze daha yavaştır +
ve String.Concat
olsa daha yavaş, fakat çok daha iyi daha StringBuilder
, birden çok sesli arama at. Pratik olarak, performans farklılıkları öyle ki, birleştirmek için sadece bir yol seçmek zorunda kalsaydım, kullanarak dize enterpolasyonlarını seçerdim $
... İki yol varsa, o zaman StringBuilder
araç kutuma ekle . Ayarladığınız bu iki yolla.
String.Join
cevap, +
adalet yapmaz ve pratik olarak, dizeleri birleştirmek için kötü bir yoldur, ancak şaşırtıcı derecede hızlı performans açısından akıllıcadır. Cevabı neden ilginç. String.Concat
ve String.Join
her ikisi de diziler üzerinde etkili olabilir, ancak String.Join
aslında daha hızlıdır. Görünüşe String.Join
göre String.Concat
, kısmen StringBuilder
ilk önce dize uzunluğunu hesapladığı ve daha sonra UnSafeCharBuffer kullanarak bu bilgiden yararlanan dize oluşturduğu için benzer şekilde çalıştığı için oldukça sofistike ve daha optimize edilmiştir .
String.Join
aynı zamanda kaynak verimsiz görünen bir dizi oluşturmayı gerektiriyor mu? ... Bunu ortaya koyuyor +
ve String.Concat
yine de kendi bileşenleri için diziler oluşturuyor. Sonuç olarak, manuel olarak bir dizi oluşturmak ve onu beslemek String.Join
nispeten daha hızlıdır ... ancak, StringBuilder
yine de String.Join
her pratik yoldan daha iyi performans gösterirken $
, uzun dizelerde sadece biraz daha yavaş ve çok daha hızlıdır ... String.Join
varsa , kullanmanın garip ve çirkin olduğunu belirtmemek gerekir. yerinde bir dizi oluşturmak için.