String ve StringBuilder |
Yanıt Yaz |
Yazar | |
murat turan
Üye Profili
Özel Mesaj Yolla
Bu kullanıcıya ait mesajları bul
Üyenin Web Sitesie Git
Arkadaş Listeme Ekle
Admin Group Datakent Kayıt Tarihi: 01.Ekim.2003 Bulundugu Yer: Turkey Online: Sitede Değil Gönderilenler: 1798 |
Alıntı Cevapla
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 |
|
Yanıt Yaz |
Forum Atla | Forum İzinleri Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |