Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

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)

Die Muhkuh 20. Mär 2005 08:31

Re: Was ist schneller TComboBox oder TStringlist?
 
Was mich jetzt wundert:

Warum brauchen die StringList, etc. mit BeginUpdate und EndUpdate länger, als ohne?

SirThornberry 20. Mär 2005 08:37

Re: Was ist schneller TComboBox oder TStringlist?
 
weil bei LoadFromFile/LoadFromStream intern schon ein Beginupdate/Endupdate ausgeführt wird. Und wenn man dann zusätzlich noch ein Beginupdate/Endupdate um das ganze schreibt sind das paar Anweisungen mehr.

smart 20. Mär 2005 09:07

Re: Was ist schneller TComboBox oder TStringlist?
 
Guten Morgen!
Zunächst mal vielen Dank, dass Ihr euch so eine Mühe gebt. Die Liste hat tatsächlich 50.000 Einträge. Es können sogar noch welche hinzukommen. Dabei handelt es sich um eine Warenliste. Natürlich gibt es Wege so etwas besser zu lösen(Datenbank), aber das Programm das diese Liste erzeugt ist ein Fremdes Programm.

Das Beispiel von Binärbaum habe ich mal getestet. Das Sortieren und/oder Vergleichen erscheint mir bei Arrays einfacher. Allerdings bin ich noch Delphi- Anfänger und kenne noch nicht viele Lösungswege.

Jens Schumann 20. Mär 2005 09:09

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von stefan2005
hi,
ja es wird sicher auch die schnellere Wahl sein, weil sowas:
Delphi-Quellcode:
type
  TRecrd = record
    Int : Integer
  End;
var Recrd : TRecrd;
...
Recrd.Int := 1;
ist ja auf keinen Fall schneller wie sowas:
Delphi-Quellcode:
var Int : Integer
...
Int := 1
:wink:
cu,
stefan2005

Das halte ich für ein Gerücht. Beide Fälle müssen gleich schnell sein.
Ob Recrd.Int oder Int in beiden Fällen stehen die Adressen der Variablen eindeutig fest.

alcaeus 20. Mär 2005 09:18

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von smart
Das Beispiel von Binärbaum habe ich mal getestet. Das Sortieren und/oder Vergleichen erscheint mir bei Arrays einfacher.

Folgender Test: Zahlen von 50000 bis 1 zeilenweise in Datei schreiben, dann in StringList laden. Anschliessend habe ich die Liste mit .Sort sortiert (WorstCase, da genau umgekehrte Reihenfolge). Die Zeit fuer beide Aktionen betrug grad mal 551 ms (im vergleich zu nur Laden=60ms). Jetzt kommt es natuerlich auf die Laenge jeder Zeit an. Es waere vielleicht hilfreich, wenn du eine "Durchschnittszeile" aus der Datei zeigen koenntest, dann koennen wir mal sehn wie lange das mit den Zeilen braucht.

Greetz
alcaeus

Jens Schumann 20. Mär 2005 09:18

Re: Was ist schneller TComboBox oder TStringlist?
 
Zitat:

Zitat von smart
... Das Sortieren und/oder Vergleichen erscheint mir bei Arrays einfacher. Allerdings bin ich noch Delphi- Anfänger und kenne noch nicht viele Lösungswege.

Wenn Du die Daten in ein Array einlesen möchtest bleibt Dir nur die Wahl eines dyn. Array's.
Jetzt musst Du aber aufpassen. Wenn Du die Daten "direkt" im Array speicherst werden die Daten selbst beim Sortieren im Array hin und her kopiert. Das kann bei Strings ziemlich lange dauern. Deshalb solltest Du im Array lediglich Zeiger auf die Daten speichern. Beim Sortieren werden dann nur die Zeiger kopiert. Das geht schon wesentlich schneller. Wenn Du das alles implementiert hast, hast Du ungefähr die Funktionalität von TList nachgebildet. Deshalb empfehle ich Dir nimm TList. Mit der Methode TList.Sort bekommst Du eine Sortierfunktion dazu.

Wenn Du es so schnell wie möglich haben möchtest müsstest Du auf verkette Listen ausweichen.

smart 20. Mär 2005 09:26

Re: Was ist schneller TComboBox oder TStringlist?
 
Also, so sehen die Zeilen aus.

Delphi-Quellcode:
2210019000009;Feingetriebe AS5;179,00
Warennummer, Bezeichnung, Preis.

alcaeus 20. Mär 2005 09:36

Re: Was ist schneller TComboBox oder TStringlist?
 
Ich hab grad mal die Zeile bei den Zahlen angehaengt (also so: 35924 2210019000009;Feingetriebe AS5;179,00), und das Laden und sortieren hat grad mal 1 Sekunde gedauert. Ich schaetze das ist eine vertretbare Zeit... ComboBox und ListBox habe ich nicht getestet, aber das wird wahrscheinlich viel laenger dauern. Wichtig ist aber, zuerst die Elemente zu laden, und anschliessend zu sortieren. Wenn ich naemlich Sorted auf True setze, und anschliessend lade, dann dauert die Story ganze 4.5 Sekunden.

Greetz
alcaeus

Hansa 20. Mär 2005 13:41

Re: Was ist schneller TComboBox oder TStringlist?
 
eure Ergebnisse sind echt verblüffend. Insbesondere das mit dem Visible. Vor einiger Zeit hatte ich folgenden Effekt (allerdings bei einem Stringgrid) : 9 Felder aus 2500 Datensätze in 9 Spalten einlesen : 115 Sek. Diese Zeit wäre sogar noch fast egal gewesen, weil es nur um einen Ausdruck ging.

Trotzdem kam es mir zu langsam vor und ich habe folgendes gemacht : vor Lesen der Daten Stringgrid.Hide und danach Stringgrid.Show. Alles andere blieb gleich. Und sieh an, das dauerte noch ganze 1,2 Sek. :shock: 99 % der Zeit wurden also im ersten Fall nur für die Anzeige im Stringgrid gebraucht ! Und es kam mir so vor, als hänge das ganze hauptsächlich von der Menge der auszugebenden Zeichen ab. Denn bei gleichen Daten hatte ich nur eine Spalte befüllt und direkt angezeigt und das dauerte ca. 10-20 Sek. Bei 50.000 Zeilen muß das doch mehr ausmachen, als ein paar Millisek. Unterschied, ob sichtbar oder nicht ? Bei Alcaeus war das sichtbare ja einmal sogar schneller. 8)

Hallo_Thomas 1. Mai 2005 22:14

Re: Was ist schneller TComboBox oder TStringlist?
 
verkehrt


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.
Seite 4 von 4   « Erste     234   

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