Dizeleri birleştirmenin en etkili yolu nedir?
StringBuilderkullanım durumları hakkında daha ayrıntılı bilgiyi burada bulabilirsiniz .
String.Formatsteroidlerde olduğu gibi . Hangi, performans açısından, bir daha gömlekleri bir nebze daha yavaştır +ve String.Concatolsa 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 StringBuilderaraç kutuma ekle . Ayarladığınız bu iki yolla.
String.Joincevap, +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.Concatve String.Joinher ikisi de diziler üzerinde etkili olabilir, ancak String.Joinaslında daha hızlıdır. Görünüşe String.Joingöre String.Concat, kısmen StringBuilderilk ö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.Joinaynı zamanda kaynak verimsiz görünen bir dizi oluşturmayı gerektiriyor mu? ... Bunu ortaya koyuyor +ve String.Concatyine de kendi bileşenleri için diziler oluşturuyor. Sonuç olarak, manuel olarak bir dizi oluşturmak ve onu beslemek String.Joinnispeten daha hızlıdır ... ancak, StringBuilderyine de String.Joinher pratik yoldan daha iyi performans gösterirken $, uzun dizelerde sadece biraz daha yavaş ve çok daha hızlıdır ... String.Joinvarsa , kullanmanın garip ve çirkin olduğunu belirtmemek gerekir. yerinde bir dizi oluşturmak için.