1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| implementation
{$R *.dfm}
uses System.RegularExpressions, System.Diagnostics;
function CountLSpace(const aStr: string): Integer;
var I, L: Cardinal;
PB: PByte;
begin
PB := @aStr[1];
L := SizeOf(Char);
Result := 0;
while (Pb^ <> $0) and (Pb^ = $20) do begin
Inc(Result);
Inc(Pb, L);
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
var aStr: string;
St: TStopwatch;
I: Integer;
begin
aStr := 'Test';
Memo1.Lines.BeginUpdate;
try
st := TStopwatch.Create;
St.Start;
for I:= 0 to 10000 do begin
Memo1.Lines.Add(CountLSpace(aStr).ToString);
aStr := ' ' + aStr;
end;
finally
Memo1.Lines.EndUpdate;
end;
St.Stop;
Memo1.Lines.Add(St.Elapsed.ToString);
end;
procedure TForm2.Button2Click(Sender: TObject);
var aStr: string;
St: TStopwatch;
I: Integer;
begin
aStr := 'Test';
Memo1.Lines.BeginUpdate;
try
st := TStopwatch.Create;
St.Start;
for I:= 0 to 10000 do begin
Memo1.Lines.Add(TRegEx.Create('^\s*').Match(aStr).length.ToString);
aStr := ' ' + aStr;
end;
finally
Memo1.Lines.EndUpdate;
end;
St.Stop;
Memo1.Lines.Add(St.Elapsed.ToString);
end;
end. |
Partager