SORU
9 AĞUSTOS 2008, CUMARTESİ


String.Format StringBuilder kadar verimli

C bir stringbuilder yoktur sanırım işe yarar bu:

StringBuilder sb = new StringBuilder();
string cat = "cat";
sb.Append("the ").Append(cat).(" in the hat");
string s = sb.ToString();

verimli ya da sahip olarak daha verimli olacağını:

string cat = "cat";
string s = String.Format("The {0} in the hat", cat);

Eğer öyleyse, neden?

EDİT

Bazı ilginç cevaplar sonra ben muhtemelen benim sorduğum şey biraz daha net olması gerektiğini fark ettim. Çok bitiştirmek bir dize de hızlı oldu, ama en hızlı olan bir istek değildienjektebaşka bir dize.

Her iki durumda da yukarıda önceden tanımlanmış bir şablon dize ortasına bir veya daha fazla dize enjekte etmek istiyorum.

Karışıklık için özür dilerim

CEVAP
9 AĞUSTOS 2008, CUMARTESİ


String.Format dahili StringBuilder kullanır:

public static string Format(IFormatProvider provider, string format, params object[] args)
{
    if ((format == null) || (args == null))
    {
        throw new ArgumentNullException((format == null) ? "format" : "args");
    }
    StringBuilder builder = new StringBuilder(format.Length   (args.Length * 8));
    builder.AppendFormat(provider, format, args);
    return builder.ToString();
}

Yukarıdaki kod soru mscorlib bir parçacık, "StringBuilder.AppendFormat() StringBuilder.Append() daha hızlı"?

Kıyaslama olmadan muhtemelen yukarıdaki kod örneğini daha hızlı .Append() kullanarak aday olacağını söyleyebilirim. Ama sanırım, kıyaslama denemek ve bir ya da iki doğru bir karşılaştırma için profil oluşturma/.

Bu adam, Jerry Dixon, bazı kıyaslama yaptı

http://jdixon.dotnetdevelopersjournal.com/string_concatenation_stringbuilder_and_stringformat.htm

Güncelleme:

Ne yazık ki yukarıdaki bağlantı vefat etti. Ancak hala Geri dönüş Yolunu Makinede bir kopyası vardır:

http://web.archive.org/web/20090417100252/http://jdixon.dotnetdevelopersjournal.com/string_concatenation_stringbuilder_and_stringformat.htm

Sonunda gün değişir, ister bir dize biçimlendirme olacak denilen, sürekli olarak, yani yaptığını ciddi bir metin işleme üzerinde 100 megabayt metin, ya da yok olmak diye bir kullanıcı tıklama bir düğme şimdi ve tekrar. Bazı büyük toplu işlem iş yapmadıktan sonra Dize ile ilgileniyorum.Biçim, kod okunabilirliği yardımcı olur. Eğer performans sorunu şüpheleniyorsanız o zaman kodunuzu bir profiler sopa ve gerçekten nerede olduğunu görmek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNNMoney

    CNNMoney

    16 Kasım 2006
  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013