Entwickler-Ecke
Sonstiges (Delphi) - Übergabe von StringList an Funktion bremst aus?
AScomp - Do 12.01.12 16:42
Titel: Übergabe von StringList an Funktion bremst aus?
Hallo,
habe momentan ein etwas kurioses Problem und sehe eigentlich fast nur eine mögliche Ursache:
Mein Programm enthält eine Funktion, die eine Datei kopiert. Bisher war die Funktionsdeklaration wie folgt:
MyCopyFile(Source, Target: PChar): Boolean;
Aufgrund einer Änderung braucht die neue Funktion allerdings noch eine Stringlist, in der alle kopierten Dateien enthalten sind:
MyCopyFile(Source, Target: PChar; CopiedFiles: TStringList): Boolean;
Kann es sein, dass der blose Funktionsaufruf von MyCopyFile (wird mehrere Tausend Mal aufgerufen, da es sich für gewöhnlich um sehr viele Dateien handelt) mit Übergabe der TStringList deutlich langsamer wird - vor allem dann, wenn CopiedFiles viele Einträge enthält?
Habe testhalber schon alles, was mit CopiedFiles innerhalb der MyCopyFile passiert, auskommentiert. Die Frage ist also, ob allein durch Übergabe der StringList eine starke Verlangsamung eintreten kann.
Danke und Gruß
Andy
jaenicke - Do 12.01.12 16:49
Da werden nur ein paar Assemblerbefehle mehr ausgeführt. Alleine durch die Übergabe des zusätzlichen Pointers darf die Geschwindigkeit eigentlich nicht signifikant abnehmen.
AScomp - Do 12.01.12 16:54
Okay, dann kann es das wohl auch nicht sein - danke dir!
-> if (ProgOptions.FollowLinks = true) or ((ProgOptions.FollowLinks = false) and (SearchRec.Attr and faSymLink = 0)) then begin
Das ist noch eine neue Zeile, die erst in der neuen Version kam. Allerdings ist es doch so, dass der zweite Teil gar nicht mehr überprüft wird, wenn bereits der erste Teil (ProgOptions.FollowLinks = true) wahr ist, oder täusche ich mich?
Tranx - Do 12.01.12 18:12
Das hängt davon ab, ob Du die Option "Boolesche Ausdrücke vollständig" unter ProjektOptionen->Compiler aktiviert hast oder nicht. Bei Aktivierung werden solche Abfragen vollständig abgearbeitet, wenn nicht, nur solange, bis das Ergebnis eindeutig ist (FALSE).
AScomp - Do 12.01.12 18:27
Alles klar, danke!
Die Option ist bei mir nicht aktiviert, also alles so, wie ich es gewohnt bin und wie es von mir gewünscht ist.
Dann muss ich das Problem anderswo suchen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!