Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Was ist schneller TComboBox oder TStringlist? (https://www.delphipraxis.net/42480-ist-schneller-tcombobox-oder-tstringlist.html)

phXql 19. Mär 2005 14:30

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von smart
Vielen Dank für Eure Antworten. Ich glaube die Sache mit den Array’s ist die schnellste. Kann man aber Array’s setzen wenn vorher nicht bekannt ist wie viel man braucht ?
@stefan2005 natürlich Du hast Recht.

Ja, dynamische Arrays.. Dann musst du es aber immer um eins vergrößern, und das braucht wieder zeit...

Luckie 19. Mär 2005 14:30

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von phXql
Dann musst du es aber immer um eins vergrößern, und das braucht wieder zeit...

Wieso denn das? Ich kann doch Delphi-Referenz durchsuchensetlenght mit jedem beliebeighne Wert aufrufen. :gruebel:

phXql 19. Mär 2005 14:32

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von phXql
Dann musst du es aber immer um eins vergrößern, und das braucht wieder zeit...

Wieso denn das? Ich kann doch Delphi-Referenz durchsuchensetlenght mit jedem beliebeighne Wert aufrufen. :gruebel:

nein, nicht wegen dem 1s, sondern, wenn man ein array verlängert, wird das ganze array im speicher kopiert, und das braucht seine zeit...

Luckie 19. Mär 2005 14:33

Re: Was ist schneller TComboBox oder TStringlist?
 
Dann muss man eben etwas schätzen und das Arry so dimensionieren, dass man es nicht so oft machen muss.

smart 19. Mär 2005 14:40

Re: Was ist schneller TComboBox oder TStringlist?
 
Gibt es bei den Array’s eigendlich eine Grenze (wieviel man erzeugen kann)?

JasonDX 19. Mär 2005 14:48

Re: Was ist schneller TComboBox oder TStringlist?
 
du kannst dein array füllen bis der speicher voll ist oder (falls das kleiner ist): grenzwert des Integers (2^31 - 1)
falls du das mit erstellen meinst...

maynard 19. Mär 2005 14:56

Re: Was ist schneller TComboBox oder TStringlist?
 
Tach...

Ich weiß nicht ab welcher Delphiversion es Int64 gibt ... aber da bleiben dir dann 2^63 - 1 Elemente ... und wenn das nicht reicht müsstest du dir eine eigene Klasse zur Behandlung von Zahlen schreiben bzw. da gibts schon fertige und eine eigene Containerklasse wo du dann am besten die Speicherverwaltung selbst übernimmst und es nicht alles mit SetLentgh machst. Aber ich denke mal soviel Aufwand wird in deinem Fall nicht nötig sein!

MfG

smart 19. Mär 2005 15:05

Re: Was ist schneller TComboBox oder TStringlist?
 
Nein, so eine Größe brauche ich natürlich nicht. Die Liste die ich einlesen muss ist so um die 50.000 Zeilen lang und kann erweitert werden. Ich habe eben nach einer Möglichkeit gesucht, diese schnell einzulesen und zu sortieren.

Binärbaum 19. Mär 2005 19:55

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von smart
Nein, so eine Größe brauche ich natürlich nicht. Die Liste die ich einlesen muss ist so um die 50.000 Zeilen lang und kann erweitert werden. Ich habe eben nach einer Möglichkeit gesucht, diese schnell einzulesen und zu sortieren.

Dann kann man ja vor dem Einlesen die Länge des Arrays auf 50.000 setzen und dann beim Einlesen stets eine Variable hochzählen lassen, die die bisher gelesenen Zeilen zählt. Wenn die Zahl dann 50.000 erreicht hat, kann man die Arraygröße ja nochmal erhöhen. Man müsste aber auch nach dem Einlesen das Array wieder verkleinern, wenn nicht die vollen 50.000 Zeilen benutzt wurden. Das ist dann auf alle Fälle schneller, als wenn man für jede Zeile SetLength aufrufen muss.

MfG
Binärbaum

Hansa 20. Mär 2005 00:40

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von Luckie
Dann muss man eben etwas schätzen und das Arry so dimensionieren, dass man es nicht
so oft machen muss.

Ist das Dein Ernst ? :shock: Nene, so gehts nicht. Bzw. kann man eine solche Vorgehensweise keinem empfehlen. @Luckie : das hat jetzt mit Dir nichts zu tun, aber schätzen, das geht nicht bei 50.000 Einträgen. Und irgendwas auf false zu setzen (wer war das ? :mrgreen: ) und zweckentfremdet einzusetzen ist es auch nicht.

Deshalb stellen sich erst mal folgende Fragen :

1. ist die Zahl 50.000 nahezu konstant ? Sagen wir mal, zwischen 45.000 und 50.200 ? Falls ja, dann muß man eben nur 5.700 mal ein dynamisches Array abändern oder den Speicher gleich unnötig hoch verbruzeln.

2. Wo kommen die 50.000 Zeilen her ? Von Hand eingegeben wohl nicht. 8) Muß das etwa zeilenweise von der Platte gelesen werden ? Dann bräuchte man sich nicht zu wundern, wenn es dauert.

Deshalb : für so was sind dynamische Datenstrukturen gemacht (verkettete Listen -> Zeiger). Genau für solche Fälle. Fügt man immer nur das ein, was tatsächlich gebraucht wird und schreibt man allgemeingültige Prozeduren dafür, dann ist es fast egal ob es sich um 100 oder 500.000 Einträge handelt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.
Seite 2 von 4     12 34      

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