Jump to content

String ? - Stringbuilder ?


wmismail

Recommended Posts

string ? - StringBuilder ?

Merhaba Arkadaşlar uzun zamandır vakit bulup yazamadım. Gerçi buda pek uzun olmayacak ama gene işinize yarıyacağını düşündüğüm ufak bir bilgi paylaşmak istedim sizinle.

Performans takıntısı olanlara sesleniyorum, eğer yazcağınız kod içerisinde çok fazla string birleştirme kullanacak iseniz performansınız için size strinbuilder kullanmanızı tavsiye ediyorum. Neden mi ?

örneğin;

string metin =”";

metin = “performans”;

metin += “için”;

metin += “string”;

metin+=”birleştirmede”;

metin += ” stringbuilder”;

metin += “daha”;

metin += “iyidir”;[/CODE]

bu değişkenin son hali oluşturulana kadar her seferinde sistem eskisini ucurup yenisi oluşturmaya çalışıyor ve sonuç 3-5 birleştirmede değil fakat daha uzun birletirmelerde performans kaybına yol açıyor.

StringBuilder kullanıldığında ise bellekte belli bir boyutta alan açıp sonra içeriğini doldurmamızı sağlıyor. Her seferinde bir öncekini ucurup yenisini oluşturmaya uğraşmıyor en sonunda ise oluşturduğumuz stringbuilder nesnesini toString() medotu ile son haline ulaşabiliyoruz.

Link to comment
Share on other sites

performans olarak ne farkı var onu da ben acıklayım hemen string ramda sabit uzunlukta bir yer tutar diyelim

string mahmut ="deneme"; yazdınız "deneme" nın değeri kadar yer tutar sonra sız bir ekleme yaptınız diyelim

mahmut+= "1"; ramde "deneme" nin yanına 1 eklenmez onun yerine string yeniden tanımlanır ramden yer isteniz "deneme 1" reme yerlestirlir yani

stringe her her ekleme değiştirme yaptırdığınızda yeniden stringi ramde tanımlıyor bunu ister += ile yapın ister mahmut=mahmut + "asda";

seklinde hiç farketmez.

kucuk stringleri birlestirirken belki sorun olmayabilir ancak cok sayıda databaseden gelen ntext alanı birlestiriyorsanız bu ciddi performans farkı sağlar

ancak stringbuilder nesnesi dinamikde ramde yer kaplıyor sabit olarak değil. YANİ HER EKlemede gidip ramde nesneyi tanımalnıyor ekleme yapıyor.

yazılmıcı ekmeğini kazandıüı işte sürekli tercihler ve secimleriçerisindedir. ve uzman olmak bu tercihleri neden yaptığımızı bilmek ile oluyor.

Link to comment
Share on other sites

performans olarak ne farkı var onu da ben acıklayım hemen string ramda sabit uzunlukta bir yer tutar diyelim

string mahmut ="deneme"; yazdınız "deneme" nın değeri kadar yer tutar sonra sız bir ekleme yaptınız diyelim

mahmut+= "1"; ramde "deneme" nin yanına 1 eklenmez onun yerine string yeniden tanımlanır ramden yer isteniz "deneme 1" reme yerlestirlir yani

stringe her her ekleme değiştirme yaptırdığınızda yeniden stringi ramde tanımlıyor bunu ister += ile yapın ister mahmut=mahmut + "asda";

seklinde hiç farketmez.

kucuk stringleri birlestirirken belki sorun olmayabilir ancak cok sayıda databaseden gelen ntext alanı birlestiriyorsanız bu ciddi performans farkı sağlar

ancak stringbuilder nesnesi dinamikde ramde yer kaplıyor sabit olarak değil. YANİ HER EKlemede gidip ramde nesneyi tanımalnıyor ekleme yapıyor.

yazılmıcı ekmeğini kazandıüı işte sürekli tercihler ve secimleriçerisindedir. ve uzman olmak bu tercihleri neden yaptığımızı bilmek ile oluyor.

Teşekkür ederim doğru söylemişsin.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...