Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Duplikate in Stringlist (https://www.delphipraxis.net/153100-duplikate-stringlist.html)

youuu 21. Jul 2010 11:39

AW: Duplikate in Stringlist
 
Super funktioniert, kostet allerdings immernoch etwas Performance statt 9-15 Sekunden, sind es nun 3 Sekunden von damals 2 - 2,6 Sekunden.

Schneller wird es nicht möglich sein oder?

mkinzler 21. Jul 2010 11:42

AW: Duplikate in Stringlist
 
Möglicherweise mit einer THashedStringList

youuu 21. Jul 2010 12:07

AW: Duplikate in Stringlist
 
Ok gerade mit größeren Datensätzen probiert mit IndexOf und bei sovielen Datensätzen wie ich in der Liste haber, dauert das 20-40 Sekunden.

Das ist einfach nicht tragbar.

Bernhard Geyer 21. Jul 2010 12:21

AW: Duplikate in Stringlist
 
Zitat:

Zitat von youuu (Beitrag 1036580)
Schneller wird es nicht möglich sein oder?

Doch. HashTree/BTree sind bei großen Datenmengen um Welten schneller.

youuu 21. Jul 2010 12:51

AW: Duplikate in Stringlist
 
Soeben mit THashedStringList probiert und das gab wirklich einen extremen Performance boost.

xZise 21. Jul 2010 14:12

AW: Duplikate in Stringlist
 
Moin,
Zitat:

Zitat von youuu (Beitrag 1036602)
Soeben mit THashedStringList probiert und das gab wirklich einen extremen Performance boost.

Weil es ein anderes Verfahren ist. In einer Liste mit 100.000 Einträgen, weißt du ja nicht sofort ob ein Eintrag bereits vorhanden ist, sondern musst im schlimmsten Fall alle Einträge überprüfen.

Eine HashedStringList (wenn das sowas ähnliches ist wie eine Hashmap ist), hingegen definiert, wo ein Wert steht, anhand des Inhalts (z.B.). Also wenn du den Text Foo hast, dann weiß er wo das so ungefähr ist.

MfG
Fabian

Sandi007 14. Jun 2015 10:51

AW: Duplikate in Stringlist
 
Zitat:

Zitat von Matze (Beitrag 1036501)
...
Delphi-Quellcode:
var
    sl.Add('a');
Ohne "Sorted := true;" geht es nicht.
...

ja, und auch nur mit .Add, mit .Append geht es auch nicht.

Dejan Vu 14. Jun 2015 16:43

AW: Duplikate in Stringlist
 
Zitat:

Zitat von alzaimar (Beitrag 1036509)
Eine Hashmap prüft das Vorhandensein eines Strings wesentlich effektiver, als das in der TStringList eingebaute 'Duplicates'. Beim Einfügen dürfte das die bei weitem schnellste Möglichkeit sein.

Du kannst Dir auch die THashedStringList aus der Unit 'IniFiles' nehmen, die hier vielleicht auch schnell genug sein könnte.

Lustig. Auch 5 Jahre alte Tipps sind immer noch gültig.

EDIT: Unnötige Bemerkung entfernt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 Uhr.
Seite 3 von 3     123   

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