Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

Ako zlepšiť reťazec zreťazenie výkon v Visual C#

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:306822
Pre Microsoft Visual JScript.ČISTÁ verziu tohto článku, pozri 306823.
Pre Microsoft Visual Basic.ČISTÁ verziu tohto článku, pozri 306821.

Tento článok odkazuje na nasledujúce Microsoft.Priestor názvov knižnice tried NET rámca:
  • System.text

V TEJTO ÚLOHE

SUHRN
V tomto článku vám ukáže výhody použitia StringBuilder Trieda nad tradičné zreťazenie techniky. Struny v.NET Framework sú invariantné (to sa odkazovaný text je iba na čítanie po počiatočné rozdelenie). To poskytuje mnoho výkonnostné výhody a predstavuje niektoré výzvy pre developera, ktorý je zvyknutý C/c ++ reťazec manipulácia techniky.

Popis struny v.NET Framework

Jednou z techník na zlepšenie reťazec zreťazenie nad strcat() v Visual C/c ++ je prideliť veľký znak pole ako medzipamäť a kópia reťazec údajov do medzipamäte. V.NET Framework, reťazec je nemenná; nemožno ho modifikovať na mieste. C# + Zlučovací operátor stavia nový reťazec a spôsobuje redukciu výkon pri zřetězuje veľké množstvo textu.

Však.NET Framework zahŕňa StringBuilder trieda, ktorá je optimalizovaná na reťazec zreťazenia. Poskytuje rovnaké výhody ako pomocou znaku array v C/c ++, ako aj automaticky pestovanie veľkosť medzipamäte (ak potrebné) a sledovanie dĺžky pre vás. Ukážková aplikácia v tomto článku demonštruje použitie StringBuilder Trieda a porovnáva výkon, ktorý zreťazenia.

Vybudovať a spustiť aplikáciu demonštračné

  1. Spustiť Visual Studio a potom vytvorte novú aplikáciu Visual C# konzoly.
  2. Nasledujúci kód používa += Zlučovací operátor a StringBuilder Trieda priebežne 5000 zreťazenia 30 znakov každého. Pridať tento kód do hlavného postupu.
    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. Uložiť žiadosť. Stlačením klávesu F5 zostaviť a potom spustiť aplikáciu. Okná konzoly by zobraziť výstup podobný nasledujúcemu:
    Zreťazenie trvalo 6.208928 sekúnd.
    Reťazec Builder vzal 0 sekúnd.

    Stlačením klávesu ENTER dokončiť...
  4. Stlačením klávesu ENTER zastaviť beh aplikácie a zatvorte okno konzoly.

Riešenie problémov

  • Ak ste v prostredí, ktoré podporuje streamovanie údajov, napríklad v ASPX webového formulára alebo vaša aplikácia je písanie údajov na disk, zvážte vyhnúť medzipamäte réžiu zreťazenie alebo StringBuilder, a zapisovať údaje priamo do prúdu cez Response.write metóda alebo vhodný spôsob pre sa prúd.
  • Skúste znova použiť existujúce StringBuilder Trieda skôr ako prerozdeliť zakaždým, keď budete potrebovať jednu. To obmedzuje rastu haldy a znižuje odpadky zberu. V oboch prípadoch pomocou StringBuilder Trieda využíva efektívnejšie haldy než pomocou + prevádzkovateľ.
ODKAZY
V StringBuilder trieda obsahuje mnohé iné metódy pre manipuláciu reťazec na mieste, ktoré nie sú opísané v tomto článku. Pre viac informácií, vyhľadajte "StringBuilder" v Online Pomocníkovi.

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 306822 – Posledná kontrola: 10/31/2011 09:27:00 – Revízia: 2.0

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

  • kbsweptvs2008 kbhowtomaster kbperformance kbmt KB306822 KbMtsk
Pripomienky
r="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">