Registriert seit: 8. Jan 2007
472 Beiträge
|
AW: Substrings Extract Delimited Values
2. Nov 2023, 23:15
Fällt Euch etwas ein, um die EXtraktion hier zu beschleunigen? Macht es Sinn mit Pchar zu arbeiten?
Laufzeit ca. 4 Millisekunden:
Delphi-Quellcode:
const
MAX_COUNT = 100000;
function GetNextItem( const pmcDelimiter: Char; pmSrcPos: PChar; out pmNextPos: PChar): String;
var
pStart: PChar;
begin
if pmSrcPos = Nil then
begin
pmNextPos := pmSrcPos;
Exit(' '); //=>
end;
while pmSrcPos^ in [#9, ' '] do Inc(pmSrcPos); // Trim left
pStart := pmSrcPos;
repeat
if pmSrcPos^ = #0 then
begin
pmNextPos := Nil;
Break; //=>
end
else if pmSrcPos^ = pmcDelimiter then
begin
pmNextPos := pmSrcPos + 1;
Break; //=>
end
else
Inc(pmSrcPos);
until False;
while (pmSrcPos > pStart) and (pmSrcPos[-1] in [#9, ' ']) do Dec(pmSrcPos); // Trim right
SetString(Result, pStart, pmSrcPos - pStart);
end;
var
p: PChar;
src: String;
timer: TPrecisionTimer;
begin
for var i: Integer := 1 to MAX_COUNT do
src := src + i.ToString + ' ,';
Delete(src, Length(src), 1);
var sList := TStringList.Create;
try
timer.Start;
p := PChar(src);
while p <> Nil do
sList.Add(GetNextItem(' ,', p, p));
ShowMessage(Format(' Count: %d, Time: %s', [sList.Count, timer.Stop]));
finally
sList.Free;
end;
Ohne Gewähr!
Bis bald...
Thomas
|
|
Zitat
|