Hallo zusammen,
ich habe hier einen ganz kleinen Algorithmus den ich gerne noch etwas optimieren würde, da er sehr zeitkritisch ist.
Hier mal die interessanten Stellen:
Delphi-Quellcode:
while sl.Count > 0 do
begin
SetLength(IDArray, Length(IDArray) + 1);
IDArray[High(IDArray)].ID := Copy(sl.Strings[0], 0, Pos(';', sl.Strings[0]) - 1);
IDArray[High(IDArray)].Sum := IDArray[High(IDArray)].Sum + StrToInt32_JOH_IA32_7_a(ExtractPZN(sl.Strings[0]));
sl.Delete(0);
for i := sl.Count - 1 downto 0 do
begin
if IDArray[High(IDArray)].ID = ExtractID(sl.Strings[i]) then
begin
IDArray[High(IDArray)].Sum := IDArray[High(IDArray)].Sum + StrToInt32_JOH_IA32_7_a(ExtractPZN(sl.Strings[i]));
sl.Delete(i);
end;
end;
end;
Delphi-Quellcode:
function ExtractPZN(const Value: string): string; inline;
begin
Result := Copy(Value, 9, 7);
{$MESSAGE Warn 'Methode geht von einer konstanten Länge der PZN aus.'}
end;
function ExtractID(const Value: string): string; inline;
begin
Result := Copy(Value, 0, 7);
{$MESSAGE Warn 'Methode geht von einer konstanten Länge der ID aus.'}
end;
Es geht darum durch diesen Algo knapp 13 Millionen Zeilen zu jagen
Momentan braucht er für 100.000 Sätze knapp 24 Sekunden.
Kann man das noch schneller machen?
Achja die seltsamen IntToStr-Methoden sind Replacements vom FastCodeprojekt und haben schon ziemlich viel gebracht
Fabian E.