Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi array of string und die Performance-Schraube (https://www.delphipraxis.net/110329-array-string-und-die-performance-schraube.html)

alzaimar 19. Mär 2008 14:17

Re: array of string und die Performance-Schraube
 
Stimmt. Dann bin ich ratlos....
Aber HINTEN anhängen ist wirklich schneller, VORNE einfügen hingegen ist ca. 300x langsamer als Thornberry's Methode.

SirThornberry 19. Mär 2008 17:25

Re: array of string und die Performance-Schraube
 
wenn string addition schneller ist hängt es bei dir wo anders. Dann hast du vermutlich funktionen die Strings zurück geben oder andere Dinge die dynamsich speicher alocieren.
@alzaimar: Du hast meinen Ansatz richtig interprietiert aber ich würde nicht mehrfach Lenght aufrufen sondern eine zwischenvariable verwenden. Die Prüfung ob stemp etwas beinhaltet ist auch nicht notwendig (außer wenn jemand die Bereitchsprüfung eingeschalten hat um sein Programm zu verlangsamen) da move ja nichts macht wenn die übergebene länge = 0 ist.

alzaimar 19. Mär 2008 19:43

Re: array of string und die Performance-Schraube
 
Hi Thornberry, natürlich müsste man Length wegkürzen, aber.... Ach, ich mach einfach einen separaten Thread auf.
Delphi-Quellcode:
x:='';
For i:=0 to sList.Count-1 do x := x+sList[i];
ist nämlich wirklich ca. 30% schneller als:
Delphi-Quellcode:
n:=0;
for i:=0 to sList.Count-1 do Inc (n, Length (sList[i]);
j:=1;
SetLength (x, n);
For i:=0 To sList.Count - 1 do Begin
  sTmp := sList[i];
  l := Length (sTmp);
  Move (sTmp[1], x[j], l);
  inc (j,l);
End;
Und das verstehe ich nicht... Und deshalb: Neuer Threadowitsch


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz