Re: Was ist schneller TComboBox oder TStringlist?
Was mich jetzt wundert:
Warum brauchen die StringList, etc. mit BeginUpdate und EndUpdate länger, als ohne? |
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.
|
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. |
Re: Was ist schneller TComboBox oder TStringlist?
Zitat:
Ob Recrd.Int oder Int in beiden Fällen stehen die Adressen der Variablen eindeutig fest. |
Re: Was ist schneller TComboBox oder TStringlist?
Zitat:
Greetz alcaeus |
Re: Was ist schneller TComboBox oder TStringlist?
Zitat:
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. |
Re: Was ist schneller TComboBox oder TStringlist?
Also, so sehen die Zeilen aus.
Delphi-Quellcode:
Warennummer, Bezeichnung, Preis.
2210019000009;Feingetriebe AS5;179,00
|
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 |
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) |
Re: Was ist schneller TComboBox oder TStringlist?
verkehrt
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 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