![]() |
Stringlist mit 80.000 Einträgen schnell durchsuchen
Hallo zusammen,
ich habe eine Stringlist mit ca. 80.000 Einträgen, die ich während eines Datenimports je nach Anzahl der Datensätze zwischen 5000 und 20.000 mal durchsuchen muss. Pro Datensatz dauert der Test etwa 0,5 - 0,8 Sekunden. Gibt es eine Lösung, um das Vorhandensein eines Eintrags schneller zu prüfen als so .... ?
Delphi-Quellcode:
function IstGesperrt(SL:TStringlist;SuchString:String):Boolean;
begin if sl.IndexOf(Suchstring)>-1 then result:=true else result:=false; end // Verwendung While not ImportDataset.eof do begin if not IstGesperrt(ImportDataset.fieldbyname('Stringfeld')) then ... Machwas; ImportDataset.next; end; Schöne Grüße, Jens :hi: |
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
Hilft es vielleicht, die StringList.Sorted := true zu setzen. Vielleicht ist Delphi ja schlau genug, bei sortierten Listen einen ertwas kleveren Suchalgo zu verwenden.
|
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
Enorm.
Jetzt geht das genauso schnell wie ohne die zusätzliche Überprüfung. :spin2: Danke :hi: |
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
Noch besser (vor allem wenn noch viel mehr Einträge werden):
![]() |
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
|
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
es gibt da noch in delphi eine hashed stringlist.
vieleicht ist die schneller? |
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
Zitat:
|
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
Und in dem Thread, welcher alzaimar zur Erschaffung dieser Demo veranlasst hat, gibt es auch noch einige Diskusionen, wenn eventuell was besser ist.
Denn es kommt Teilweise auch mit darauf an wie mit der Liste gearbeitet wird. Also ob da öfters was an der Liste verändert und wie oft gesucht wird... Ansonsten gibt es zumindestens noch ein paar weitere Tipps dort zu finden ^^ ![]() |
Re: Stringlist mit 80.000 Einträgen schnell durchsuchen
Das sieht wirklich interessant aus.
Die Liste wird nur einmal beim Start des Importvorgangs aus einer Textdatei eingelesen. Anschließend wird sie sehr oft durchsucht. Bei Alzaimars TestlistSpeed wären die Skiplist und das Dictionary gute Alternativen zur Sorted List. Ich werde heute Abend mal ein paar Versuche starten. :coder: Danke an alle ... :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz