da helfen keine Defrag-Programme. Da hilft die Verwendung eines anderen Speichermanager oder besser, die Verwendung eines algorythmus der das beachtet.
Zum Beispiel anstelle tausend mal an einen String etwas anzuhängen kann man vorher die benötigte Länge berechnen, 1 mal die Länge des Strings setzen und dann in diesen String (also in den Speicherbereich des Strings) die Daten rein kopieren.
negativ Beispiel:
Delphi-Quellcode:
var
lCount : Integer;
lquelle,
lzeile : String;
begin
lQuelle := 'abc';
lZiel := '';
for lCount := 0 to 999 do
begin
lZiel := lZiel + lQuelle;
end;
besser:
Delphi-Quellcode:
var
lCount,
lLenQuelle : Integer;
lquelle,
lzeile : String;
begin
lQuelle := 'abc';
lLenQuelle := Length(lQuelle);
SetLength(lZiel, 1000 * lLenQuelle);
for lCount := 0 to 999 do
begin
move(lQuelle[1], lZiel[1 + lCount * lLenQuelle], lLenQuelle);
end;