Lm th? no ? c?i thi?n hi?u su?t n?i chu?i trong Visual C#

D?ch tiu ? D?ch tiu ?
ID c?a bi: 306822 - Xem s?n ph?m m bi ny p d?ng vo.
Bung t?t c? | Thu g?n t?t c?

? Trang ny

TM T?T

Bi vi?t t?ng b?c ny cho b?n th?y nh?ng l?i ch c?a vi?c s? d?ng cc StringBuilder l?p h?c hn k? thu?t truy?n th?ng n?i. Chu?i trong cc.NET Framework l b?t bi?n (c ngh?a l, cc vn b?n tham chi?u l ch?-?c sau khi vi?c phn b? ban ?u). i?u ny cung c?p nhi?u hi?u su?t l?i ch v ?t ra m?t s? thch th?c cc nh pht tri?n nh?ng ng?i l quen v?i C/c ++ chu?i thao tc k? thu?t.

M t? v? b? dy cc.NET Framework

M?t k? thu?t ? c?i thi?n chu?i n?i qua strcat() trong Visual C/c ++ l c?p pht m?t m?ng l?n nhn v?t nh l m?t ?m, copy chu?i d? li?u vo b? ?m. Trong cc.NET Framework, m?t chu?i l b?t bi?n; n khng th? s?a ?i t?i ch?. Cc C# + n?i nh i?u hnh xy d?ng m?t chu?i m?i v nguyn nhn gi?m hi?u su?t khi n concatenates m?t l?ng l?n cc vn b?n.

Tuy nhin, cc.NET Framework bao g?m m?t StringBuilder l?p t?i u ha cho chu?i n?i. N cung c?p cc l?i ch tng t? nh cch s? d?ng m?t m?ng nhn v?t trong C/c + +, c?ng nh t? ?ng ngy cng tng kch th?c b? ?m (n?u c?n) v theo d?i chi?u di cho b?n. ?ng d?ng m?u trong bi vi?t ny minh ch?ng vi?c s? d?ng cc StringBuilder l?p h?c v so snh hi?u su?t ? n?i.

Xy d?ng v ch?y m?t ?ng d?ng tr?nh di?n

  1. B?t ?u Visual Studio, v sau t?o ra m?t ?ng d?ng Visual C# giao di?n i?u khi?n m?i.
  2. Cc m? sau y s? d?ng cc nh i?u hnh n?i += v cc StringBuilder l?p ? th?i gian 5.000 concatenations c?a 30 k? t? m?i. Thm m? ny vo cc th? t?c chnh.
    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. Lu cc ?ng d?ng. Nh?n F5 ? bin d?ch v sau ch?y cc ?ng d?ng. Cc c?a s? giao di?n i?u khi?n nn hi?n th? ?u ra tng t? nh sau:
    N?i m?t 6.208928 giy.
    Chu?i Builder m?t 0 giy.

    Nh?n ENTER ? k?t thc...
  4. H?y b?m ENTER ? ng?ng ch?y ?ng d?ng v ng c?a s? giao di?n i?u khi?n.

Gi?i p th?c m?c

  • N?u b?n ang ? trong m?t mi tr?ng h? tr? streaming cc d? li?u, ch?ng h?n nh trong m?t m?u Web ASPX ho?c ?ng d?ng c?a b?n b?ng vn b?n cc d? li?u vo ?a, h?y xem xt trnh overhead ?m n?i ho?c cc StringBuilder, v vi?t d? li?u tr?c ti?p ?n cc lu?ng thng qua cc Response.write phng php ho?c cc phng php thch h?p cho cc d?ng trong cu h?i.
  • C? g?ng ti s? d?ng hi?n t?i StringBuilder l?p hn l ti phn b? m?i khi b?n c?n n. i?u ny h?n ch? s? tng tr?ng c?a heap v lm gi?m b? su t?p rc. Trong c? hai tr?ng h?p, b?ng cch s? d?ng cc StringBuilder l?p h?c lm cho vi?c s? d?ng hi?u qu? hn heap ny hn b?ng cch s? d?ng cc + nh i?u hnh.

THAM KH?O

Cc StringBuilder l?p c nhi?u phng php khc ? thao tc chu?i t?i ch? m khng ?c m t? trong bi vi?t ny. ? bi?t thm chi ti?t, t?m ki?m cho "StringBuilder" trong tr? gip tr?c tuy?n.

Thu?c tnh

ID c?a bi: 306822 - L?n xem xt sau cng: 27 Thang Tam 2011 - Xem xt l?i: 2.0
p d?ng
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
T? kha:
kbsweptvs2008 kbhowtomaster kbperformance kbmt KB306822 KbMtvi
My d?ch
QUAN TRONG: Bi vi?t ny ?c d?ch b?ng ph?n m?m d?ch my c?a Microsoft ch? khng ph?i do con ng?i d?ch. Microsoft cung c?p cc bi vi?t do con ng?i d?ch v c? cc bi vi?t do my d?ch ? b?n c th? truy c?p vo t?t c? cc bi vi?t trong C s? Ki?n th?c c?a chng ti b?ng ngn ng? c?a b?n. Tuy nhin, bi vi?t do my d?ch khng ph?i lc no c?ng hon h?o. Lo?i bi vi?t ny c th? ch?a cc sai st v? t? v?ng, c php ho?c ng? php, gi?ng nh m?t ng?i n?c ngoi c th? m?c sai st khi ni ngn ng? c?a b?n. Microsoft khng ch?u trch nhi?m v? b?t k? s? thi?u chnh xc, sai st ho?c thi?t h?i no do vi?c d?ch sai n?i dung ho?c do ho?t ?ng s? d?ng c?a khch hng gy ra. Microsoft c?ng th?ng xuyn c?p nh?t ph?n m?m d?ch my ny.
Nh?p chu?t vo y ? xem b?n ti?ng Anh c?a bi vi?t ny:306822

Cung cp Phan hi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com