DupeString nutzt intern auch eine Schleife. Ich würde Dir empfehlen auf SetLenght und FillChar auszuweichen.
Mache mal eine Leere App mit einem Button und zwei Labels und vergleiche die Ergebnisse. Hier der Button-OnClick Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Start, Stop, Freq: Int64;
R1, R2: String;
begin
QueryPerformanceCounter(Start);
R1 := DupeString('a', 10000000);
QueryPerformanceCounter(Stop);
QueryPerformanceFrequency(Freq);
Label1.Caption := Format('%n ms', [(Stop - Start) / Freq * 1000]);
QueryPerformanceCounter(Start);
SetLength(R2, 10000000);
FillChar(R2[1], 10000000, 'a');
QueryPerformanceCounter(Stop);
QueryPerformanceFrequency(Freq);
Label2.Caption := Format('%n ms', [(Stop - Start) / Freq * 1000]);
end;
...
...
P.S.: DupeString ca. 1 Sekunde; FillChar ca. 20 Millisekunden