Re: Keine dynamischen Arrays vom Typ TStringList möglich?
Ich glaube kaum, dass der Compiler so dumm ist, dass er das nicht wegoptimiert. Die zwei Möglichkeiten sollten also genau gleich lang brauchen. Allerdings wird die high-Methode bei statischen Arrays, die nicht 0-basiert sind, überhaupt nicht funktionieren und bei dynamischen Arrays, wie dem hier, oder statischen, 0-basierten Arrays zumindest die Lesbarkeit vermindern.
|
Re: Keine dynamischen Arrays vom Typ TStringList möglich?
hmmm... ich hab mal nen test gemacht^^
also ich hab jeweils 99999999 mal Dummy := High(Array) bzw Dummy := Length(Array) aufgerufen und siehe da... High braucht ca 200 ms länger |
Re: Keine dynamischen Arrays vom Typ TStringList möglich?
Da hast du sicher eine Menge Messungenauigkeit durch das Multitasking mit drin...
EDIT: Ich hab mir mal den erzeugten Assembler-Code angesehen. Bei length(a)+1 ist es (vereinfacht) das:
Delphi-Quellcode:
Bei high(a)+2 das:
call @DynArrayLength
inc eax
Delphi-Quellcode:
@DynArrayHigh sieht so aus:
call @DynArrayHigh
add eax, 2
Delphi-Quellcode:
Man sieht also: Die length-Methode ist um ein paar Anweisungen kürzer. Das fällt natürlich überhaupt nicht ins Gewicht, da die length-Methode aber darüber hinaus auch verständlicher ist, würde ich diese bevorzugen.
call @DynArrayLength
dec eax |
Re: Keine dynamischen Arrays vom Typ TStringList möglich?
Zitat:
Es ist ja auch wartbarer:
Delphi-Quellcode:
Statt:
Type
TMyArray = Array [0..1234] of TFoobar; ... Var A : TMyArray; Begin For i:=Low (A) To High(A) Do A[i] := .. ...
Delphi-Quellcode:
...
Begin For i:= 0 to 1234 Do A[i] := ... ... Zitat:
|
Re: Keine dynamischen Arrays vom Typ TStringList möglich?
Ich dachte an das mit dem SetLength. Gerade ist mir aber aufgefallen, dass man die Länge von statischen Arrays gar nicht ändern kann. :lol:
Für einen For-Durchlauf ist high geeigneter (lesbarer und für statische Arrays geeignet), für Längenveränderung length. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz