Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Dize birleştirme Visual C# içinde performansı nasıl artırılır

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:306822
Bu makalenin Microsoft Visual JScript .NET sürümü için bkz: 306823.
Bu makalenin Microsoft Visual Basic .NET sürümü için bkz: 306821.

Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanına başvurulmaktadır:
  • System.Text

Bu görevde

Özet
Bu adım adım makalede, geleneksel bir birleştirme teknikleri StringBuilder sınıfı kullanmanın faydaları gösterir. .NET Framework'de sabit dizeleridir (yani, başvurulan metin sonra ilk tahsisat salt okunur durumdadır). Bu işlem, pek çok performans kazançları sunar ve C/C++ dize işleme teknikler için adresini olan geliştiriciler için bazı zorlukları oluşturur.

Dizeler, .NET Framework'ün açıklaması

Dize birleştirme strcat(), Visual C/C++ üzerinden artırmanın tek bir büyük bir karakter dizisi bir arabellek ve kopya dize veri arabellek ayırmak üzere tekniğidir. .NET Framework, dize sabit; yerde değiştirilemez. C# + da birleşik bağ kümeleri işleci, yeni bir dize oluşturur ve, çok miktarda metin birleştirir, nedenler, performans sınırlı.

.NET Framework, ancak dize birleşik bağ kümeleri için en iyi duruma getirilmiş bir StringBuilder sınıfı bulunur. Bu, C/C++ içinde bir karakter dizisi kullanarak yanı sıra uzunluğu, izleme ve arabellek boyutu, (gerekirse) otomatik olarak büyüyen aynı yararı sağlar. Bu makaledeki örnek uygulama StringBuilder sınıfı kullanımını gösterir ve birleştirme için performans karşılaştırır.

Oluþturmak ve bir tanıtım uygulama Çalıştır

  1. Visual Studio'yu başlatın ve sonra yeni bir Visual C# konsol uygulaması oluşturun.
  2. Aşağıdaki kod, 5.000 concatenations 30 karakter her zaman += birleştirme işleci ve StringBuilder sınıfını kullanır. Bu kod, ana yordama ekleyin.
    const int sLen=30, Loops=5000;DateTime sTime, eTime;int i;string sSource = new String('X', sLen);string sDest = "";// // Time string concatenation.// sTime = DateTime.Now;for(i=0;i<Loops;i++) sDest += sSource;eTime = DateTime.Now;Console.WriteLine("Concatenation took " + (eTime - sTime).TotalSeconds + " seconds.");// // Time StringBuilder.// sTime = DateTime.Now;System.Text.StringBuilder sb = new System.Text.StringBuilder((int)(sLen * Loops * 1.1));for(i=0;i<Loops;i++) sb.Append(sSource);sDest = sb.ToString();eTime = DateTime.Now;Console.WriteLine("String Builder took " + (eTime - sTime).TotalSeconds + " seconds.");// // Make the console window stay open// so that you can see the results when running from the IDE.// Console.WriteLine();Console.Write("Press Enter to finish ... ");Console.Read();					
  3. Uygulama kaydedin. Derleme ve sonra da uygulamayı çalıştırmak için F5 tuşuna basın. Konsol pencereleri, aşağıdakine benzer bir çıktı görüntülenmelidir:
    Birleştirme 6.208928 saniye sürdü.
    Dize Oluşturucusu 0 saniye sürdü.

    Bitirmek için ENTER tuşuna basın...
  4. Uygulama çalışmıyor ve konsol penceresi kapatmak için ENTER'E basın.

SORUN GİDERME

  • Veri akışı destekleyen bir ortam varsa, gibi ASPX Web Form oluşturma veya uygulama verileri, disk birleştirme veya StringBuilder arabelleği yükü önleme dikkate almanız için yazma ve verileri, doğrudan akış için Response.Write yöntemini veya söz konusu akış için uygun yöntemi yazın.
  • Varolan StringBuilder sınıfı yeniden yerine bir gereksinim duyduğunuz her zaman tahsis deneyin. Bu öbek, büyüme sınırlar ve çöp toplama azaltır. Her iki durumda da, kullanımına kıyasla daha verimli kullanılmasını sağlayan öbek StringBuilder sınıfını kullanarak yapar +.
Referanslar
StringBuilder sınıfı, bu makalede açıklanan pek çok diğer yöntemler için yerinde dize işleme içerir. Daha fazla bilgi için çevrimiçi Yardım içindeki "StringBuilder" arayın.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 306822 - Son İnceleme: 07/14/2008 23:48:49 - Düzeltme: 3.0

Microsoft Visual C# 2005, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# 2008 Express Edition

  • kbmt kbsweptvs2008 kbhowtomaster kbperformance KB306822 KbMttr
Geri bildirim