Thema: Delphi Code Optimierung

Einzelnen Beitrag anzeigen

Benutzerbild von Diamondback2007
Diamondback2007

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

Re: Code Optimierung

  Alt 21. Jul 2008, 17:40
Zitat von Apollonius:
Falls das Array vor der Schleife die Länge 0 hat, hat es danach höchstens so lang wie die Stringliste vor der Schleife. Also kannst du die Länge vor der Schleife auf diese obere Schranke setzen, in der Schleife dann mit einer Variablen mitzählen und nachher dann anpassen. Das sind dann nur noch zwei SetLength-Aufrufe.

Des Weiteren würde ich empfehlen, getrennte Daten getrennt zu speichern (z.B. in Records - das spart die Copy-Aufrufe) und eine Zahl auch als Zahl zu speichern.
Auf die Daten an sich habe ich leider keinen Einfluss, die muss ich nehmen wie sie kommen.
Und wo speichere ich eine zahl nicht als Zahl? eher andersherum Einen string als Zahl

Das Setzen von SetLength vor der Schleife hat bei 100.000 Sätzen noch nicht wirklich was gebracht, aber ich denke bei mehr sollten das was bringen.

Zitat von nahpets:
High(IDArray) wird ziemlich oft ermittelt, speicher den Wert einmal in einer Variabel und benutze diese, dürfte immer Length(IDArray) + 1 sein (?), muss dann nur einmal pro Schleifendurchlauf der äußeren Schleife ermittelt werden.

Ändert sich die Größe des Arrays während der Laufzeit?

Ist sl sortiert? Wenn ja, dann müsstest Du einen Algorhythmus finden können, der ohne sl.delete(0) auskommt.

Eventuell ist ein sl.sort und dann sequentiell abarbeiten schneller.

Kannst Du die zu erwartende Größe des Array vorher bestimmen, dann musst Du sie nur einmal setzen. (Könnte ein Nebeneffekt des Sortierens sein, dass die Ermittlung vereinfacht wird. (= Anzahl der ID's?))
Also sl ist nicht sortiert und die Größe ändert sich eigentlich auch nicht wenn ich das vorher mache.
Fabian E.
  Mit Zitat antworten Zitat