Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Stringkonkatenation ist schneller als direktes Kopieren?

  Alt 19. Mär 2008, 19:42
Die ganzen Jahre predige ich, das man ständige Stringkonkatenationen vermeiden soll, und normalerweise stimmt das auch.
Aber hier nicht:
Delphi-Quellcode:
Function V1(s: TStringList): Integer;
Var
  i: Integer;
  x: String;

Begin
  x := '';
  For i := 0 To s.count - 1 Do
    x := x + s[i];
  Result := Length(x)
End;

Function V2(s: TStringList): Integer;
Var
  l, i, j, n: Integer;
  z, x: String;

Begin
  n := 0;
  For i := 0 To s.count - 1 Do
    inc(n, Length(s[i]));
  SetLength(x, n);
  j := 1;
  For i := 0 To s.count - 1 Do Begin
    z := s[i];
    l := Length(z);
    Move(z[1], x[j], l);
    inc(j, l);
  End;
 Result := Length (x);
End;
(Bitte keine Kommentare wegen der Variablennamen, ok?)

Preisfrage: Was ist schneller? V1 oder V2?

Ihr werdet's nicht glauben: Das ach so dilletantische V1.

Die Frage ist: Wieso?
Angehängte Dateien
Dateityp: rar project1_590.rar (168,7 KB, 13x aufgerufen)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat