On Tue, 21 Jun 2005, Marc Santhoff wrote:
> Hi, > > in an application of mine occurs a lot of string separation and > re-concatenation. Since it is using masses of ANSI strings this is some > performance problem. > > The strings get stored and loaded from TStringList's and concatenated > by simply using '+' and separated with the function copy(). > > What I'd like to know is: What's are fastest ways of handling ANSI > strings? It's hard to say in general; You would have to supply some example code. if you're doing things like For I:=X to Y do S:=S+L[i]; // S string, L list. then It might be better to do Len:=0; For I:=X to Y do Inc(Len,Length(L[i])); // S string, L list. SetLength(S,Len); P:=1; For I:=X to Y do begin T:=L[i]; Len:=Length(T); Move(T[1],S[P],Len); inc(P,Len) end; This will avoid a lot of calls to uniquestring, get/setlength etc. Also, keep in mind that getting the I-th string from a list is an expensive operation. So it is better to do T:=L[i]; S:=Copy(T,X,Length(T)-X); than to do S:=Copy(L[i],X,Length(L[i])-X); The first option will call GetString only once, the second will call it twice. This is the kind of thing you should pay attention to. Michael. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal