Sayfayı Yazdır | Pencereyi Kapat

String ve StringBuilder

Nereden Yazdırıldığı: Datakent
Kategori: Diğer bölümler
Forum Adı: C# & ASP.NET
Forum Tanımlaması: C# ve ASP.NET ile ilgili soru / sorun ve paylaşım bölümü
URL: http://forum.datakent.com/forum_posts.asp?TID=2479
Tarih: 08.Mayis.2024 Saat 05:05


Konu: String ve StringBuilder
Mesajı Yazan: murat turan
Konu: String ve StringBuilder
Mesaj Tarihi: 02.Ocak.2013 Saat 20:46
Metinsel işlemlerde yoğun text işlemleri yapılacak ise (mesela bir rapor çıktısını HTML olarak vereceksiniz ve 100 Bin karakter üzeri text içeren bir blog düşünün) Bu işlemde String ve StringBuilder kullanımında performans olarak çok ciddi bir fark oluşmaktadır.

Aşağıdaki örneği ele alalım;

//Bu örneğin sonuçlanması zaman olarak: 00:00:14.4020954
String sx = "";
for (int i = 0; i < 50000; i++)
{
sx += "XXXXXXXXXXXXXXX";
}


aynı işlemi, aşağıdaki şekilde yaptığımızda ise süre 00:00:00.0020013 olmaktadır;
StringBuilder sx = new StringBuilder();

for (int i = 0; i < 50000; i++)
{
sx.Append("XXXXXXXXXXXXXXX");
}

.Append yerine AppendLine kullanırsanız süre dahada düşüyor ve 00:00:00.0020003 oluyor. Fakat AppendLine 'da, nesne .toString() ile dönüştürüldüğünde satırların ayrışımı için \r\n eklenmektedir. HTML türü bir dönüşümde bunu göz önüne aldığınızda Append kullanmak daha iyidir.

Sebep, String'in immutable (Değişmez) olması ve StringBuilder'ın mutable (Değişken) olması.

Ve Bu tür bir durumda, String tipindeki performans sorununun kaynağı, String değişkeninin değiştirilemez olması ve her bir değişim veya eklemede yeniden yaratılıyor olması. Yukarıdaki döngüye bakarsan 50 Bin defa String değişkeninin yeniden yaratılmasını hayal ediniz :) Baya vahim bir durum.


String ve StringBuilder arasındaki performans ölçümünü test eden arkadaşım Aziz Alkurt

-------------
http://www.kasatakip.com - Kasa Takip  |  http://www.caritakip.com - Cari Takip  |  http://www.evraktakip.com - Evrak Takip  |  http://www.etasqlmobil.com - ETA SQL Mobil



Sayfayı Yazdır | Pencereyi Kapat