Forum: Programmieren allgemein
Delphi
by Sir Rufo,
22. Aug 2015
10.000 Elemente in der Startliste
+5.000 Elemente in der Zielliste
5.000 Elemente kopieren
-5.000 Elemente in der Startliste
Zwischenzeitlich brauche ich 5.000x SizeOf( TMyData ) mehr und am Ende werden 5.000x SizeOf( TMyData ) wieder freigegeben. Und es werden 5.000x SizeOf( TMyData ) kopiert.
Und das dein Vorschlag durchaus eine Verbesserung der Geschwindigkeit bringt habe ich schon...
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
22. Aug 2015
Das macht das zwar schneller aber nicht so schnell wie es gehen könnte, denn hier wird eben immer noch Unmengen an Speicher angefordert und wieder freigegeben.
Ungeachtet der Geschwindigkeit habe ich während des Kopiervorgangs auch noch alle zu kopierende Elemente doppelt im Speicher liegen. Ist in diesem Testszenario noch nicht kritisch, aber wir kennen nicht das Speicherprofil der gesamten...
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
21. Aug 2015
Wenn TMyData keine Klasse werden darf, dann geht das wohl nicht ...
oder etwa doch?
TMyDataContainer = class
private
FMyData : TMyData;
public
constructor Create( MyData: TMyData );
property MyData : TMyData read FMyData;
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
21. Aug 2015
Doch, das kann so lange dauern.
Schliesslich wird hier 2 x 5000 x 2732 Bytes Speicher angefordert und auch wieder freigegeben. Das dauert eben seine Zeit.
Das var in der GetFirstItems ist natürlich Unfug, weil du in der Methode keine neue Liste erzeugst und somit dem Parameter auch keinen Wert zuweist.
Und if Assigned( aFirstList ) kannst du dir auch schenken, denn die Methode wird so...