Thema: Delphi Code Optimierung

Einzelnen Beitrag anzeigen

Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#1

Code Optimierung

  Alt 21. Jul 2008, 17:02
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.
  Mit Zitat antworten Zitat