piątek, 4 października 2013

W każdej aplikacji gdzie następuje konieczność sklejania wielu stringów należy użyć obiektu StringBuilder. StringBuilder jest o wiele bardziej wydajny ze względu na posiadanie wewnętrznego bufora, co eliminuje problem powstawania bardzo dużej ilości nowych tymczasowych obiektów typu string, które dodatkowo muszą zostać obsłużone przez GC - jest to masa dodatkowej nikomu niepotrzebnej roboty.

Zamiast pisać:
string text = "";  
  for (int i = 0; i < 10000; i++)    
    text += "str" + i + " ";

o wiele lepiej jest napisać::

var sb = new StringBuilder("");
for (int i = 0; i < 10000; i++)
{
  sb.Append("str");
  sb.Append(i);
  sb.Append(" ");
}

W ZAŁĄCZNIKU znajduje się kod z przeprowadzonymi testami wydajnościowymi przy użyciu Analyze -> Launch Performance Wizard...

z których wynika jasno, że System.String.Concat(obcject[]) generuje o wiele większe zużycie procesora, zajęcie pamięci podręcznej oraz wykonuje się o wiele wolniej od System.Text.StringBuilder.Append(string) oraz od System.Text.StringBuilder.Append(Int32). PRINT SCREEN'Y Z WYNIKÓW TESTÓW...

POBIERZ PRZYKŁAD...

0 komentarze :

Prześlij komentarz