Datakent Ana Sayfa
Anasayfa Anasayfa > Diğer bölümler > C# & ASP.NET
  Aktif Konular Aktif Konular RSS: String ve StringBuilder
  Yardım Yardım  Hızlı Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

String ve StringBuilder

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: String ve StringBuilder
    Gönderim Zamanı: 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

Düzenleyen murat turan - 02.Ocak.2013 Saat 21:04
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Menü Göster



Bu Sayfa 0,262 Saniyede Yüklendi. [power by : WebWiz]