Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Vergleich von Suchverfahren mit Beispielen (https://www.delphipraxis.net/55493-vergleich-von-suchverfahren-mit-beispielen.html)

alzaimar 21. Okt 2005 19:55


Vergleich von Suchverfahren mit Beispielen
 
Liste der Anhänge anzeigen (Anzahl: 1)
In Anbetracht der häufig gestellten Fragen nach 'Suchen in einer Liste' und Ähnlichem hab ich mal vier Verfahren verglichen:
- Stringlist
- AVL-Baum
- Skiplist
- Hashlist

Das Testprogramm fügt zunächst Werte in die jeweilige Datenstruktur ein und sucht sie anschließend wieder. Beim Einfügen wird sichergestellt, das der Eintrag nicht schon in der Liste ist.

Ich würde mich freuen, wenn Jemand einen schnelleren Algorithmus/Datenstruktur findet oder die vorhandenen verbessert. Falls jemand andere schnelle Verfahren hat, dann kann er sie hier posten bzw. das Testprogramm erweitern.

[edit] Update: Auf Nachfrage wurde die THashedStringList aus IniFiles von Borland mit aufgenommen. Neu ist auch, das man angeben kann, ab welcher Dauer eine Reihe während des Messlaufes nicht weiter verfolgt werden soll. Das Laufzeitverhalten einiger Listen degeneriert bei grossen N. Wenn also die Messung des Einfügens einen bestimmten Wert, wird das Verfahren nicht weiter berücksichtigt: Damit man sich keinen Wolf wartet [/edit]

[edit] Update: THashedStringlist wurde mit 'Sorted := True' instantiiert und dadurch unnötig langsam[/edit]

jfheins 21. Okt 2005 21:58

Re: Vergleich von Suchverfahren mit Beispielen
 
Nett .. wenn du jetzt nochmal die Verfahren kurz erklären würdest (Dictionary = Stringlist ???)

Was mir aufgefallen ist: Warum hat die blaue Kurve so Zacken, als wäre sie z.B. mit 500.000 langsamer als mit 1.000.000 ? :gruebel:

alzaimar 21. Okt 2005 22:55

Re: Vergleich von Suchverfahren mit Beispielen
 
Stringlist= Delphi TStringlist mit Sorted := True und Duplicates := dupIgnore, Suchen per binary search
AVL - Tree: AVL-Baum (Binärer ausgeglichener Baum)
Skiplisten: Verkettete Listen mit zusätzlichen Pointern auf weiter entfernte Elemente (Skip list)
Directories : Hash tabellen (Nein. Nicht zum Rauchen)

Zitat:

Zitat von jfheins
Was mir aufgefallen ist: Warum hat die blaue Kurve so Zacken, als wäre sie z.B. mit 500.000 langsamer als mit 1.000.000 ? :gruebel:

Wenn Hashtabellen voll sind, werden sie erweitert. Due Größe der vergrößerten Tabelle eine Primzahl, die ungefähr doppelt so gross ist, wie die ursprüngliche Tabelle. Es scheinen 'gute' und 'schlechte' Größen zu geben. Einige sind 'mies'. Warum das so ist, weiss ich nicht.

Der_Unwissende 22. Okt 2005 17:44

Re: Vergleich von Suchverfahren mit Beispielen
 
Hey,
was ich ein wenig vermisse ist die gute THashedStringlist. Gab es da einen guten Grund sie nicht mit zu berücksichtigen? Also sonst würde mich die auch noch in deinem Test interessieren, zumal die echt gut schneller ist als die TStringlist und ich würde mal denken, dass da Borland für sorgt, dass immer gute Werte für's Hashen benutzt werden.
Ansonsten nettes Programm!

Gruß Der Unwissende

alzaimar 22. Okt 2005 18:33

Re: Vergleich von Suchverfahren mit Beispielen
 
Hi,
Danke für den Tip. Ich hab sie mal eingebaut Im 1.Posting kann man die neue Version laden. Sie misst nun auch nur das Suchen.

stoxx 9. Dez 2005 18:05

Re: Vergleich von Suchverfahren mit Beispielen
 
zu den Skiplisten ... hier eine richtig geile Seite mit Vorlesungs Videos !
wow .. da tut sich was an den Unis :-)

http://electures.informatik.uni-frei...2004&chapter=7

mschaefer 6. Aug 2007 10:03

Re: Vergleich von Suchverfahren mit Beispielen
 
Moin, moin,

Das ist eine schöne Gegenüberstellung, die einem
viel Arbeit in die falsche Richtung ersparen kann.

Grüße nach Berlin

hathor 24. Okt 2007 21:17

Re: Vergleich von Suchverfahren mit Beispielen
 
Hi,

Dictionary ist deutlich am Besten!

Kennt jemand die Media Library von WINAMP?
Da gibt es MAIN.IDX und MAIN.DAT (und einige andere) - gibt es einen DELPHI-Sourcecode, mit dem man auf die Datenbank zugreifen kann?
Mit welchem Datenbankmodell ist sie vergleichbar?

Danke für jede Hilfe!

abrosda 10. Dez 2007 14:02

Re: Vergleich von Suchverfahren mit Beispielen
 
Der AVL Tree wird erheblich schneller, wenn nicht jedesmal vor dem einfügen geprüft wird, ob der Key schon im Baum vorhanden ist.
Das setzt natürlich eindeutige Werte voraus.

Dezipaitor 10. Dez 2007 14:20

Re: Vergleich von Suchverfahren mit Beispielen
 
wo ist der B(*/+)-Baum ? :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr.
Seite 1 von 5  1 23     Letzte »    

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