Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wert [Word] in Liste/Array vorhanden (https://www.delphipraxis.net/178134-wert-%5Bword%5D-liste-array-vorhanden.html)

DeddyH 19. Dez 2013 13:04

AW: Wert [Word] in Liste/Array vorhanden
 
Ich habe kein 2009 installiert, war aber damals auf der Roadshow, wo Daniel Magin und Matthias Eißing die Generics vorgestellt haben. Von daher bin ich mir ziemlich sicher, dass es die dort gibt.

himitsu 19. Dez 2013 13:11

AW: Wert [Word] in Liste/Array vorhanden
 
Zitat:

Zitat von Alex_ITA01 (Beitrag 1240343)
Ich nutze XE4, vielleicht gibts da ja eine entsprechende Funktion?!

:-D

TiGü 19. Dez 2013 13:34

AW: Wert [Word] in Liste/Array vorhanden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von hathor (Beitrag 1240366)
Generics gibt es in meinem DELPHI2009 nicht.

Man muss schon die entsprechenden Units einbinden! :roll:

Neutral General 19. Dez 2013 14:04

AW: Wert [Word] in Liste/Array vorhanden
 
@Aphton: Super Idee mit deiner Assembler Funktion :) Das merk ich mir!
Ich glaube ich teste die Funktion mal gegen die Standard for-schleifen Variante.

Edit:

Int-Array-Länge: 100 000
100 000 Prüfungen auf den Wert 50 000

For-Variante: ~ 16 Sekunden
ASM-Methode: ~3 Sekunden

jfheins 19. Dez 2013 14:22

AW: Wert [Word] in Liste/Array vorhanden
 
Lineare Suche in ASM ist ja ganz nett, aber gegen ein HashSet immer noch langsam.

1 bis 100000 in ein Hashset, 10 Mio Mal nach 50000 suchen: Zwischen 130ms und 150ms.
Kommt natürlich auch ein bisschen auf die CPU drauf an, aber ich habe auch 100 Mal öfter gesucht!

Neutral General 19. Dez 2013 14:26

AW: Wert [Word] in Liste/Array vorhanden
 
Funktioniert aber auch nur wenn jeder Wert nur 1x vorkommt oder nicht?

jfheins 19. Dez 2013 15:25

AW: Wert [Word] in Liste/Array vorhanden
 
Sagen wir so: Die Anzahl wird nicht gespeichert. Es sollte aber trotzdem kein Problem sein, die Liste/das Array in ein Hashset zu stopfen und dann damit zu überprüfen ob die Zahl enthalten ist. Bei vielen tests ist das dann durchaus schneller als die lineare Suche.

Alex_ITA01 19. Dez 2013 20:23

AW: Wert [Word] in Liste/Array vorhanden
 
Stimmt, muss mal meine Delphi Version im Profil aktualisieren ;-)

Das mit dem Hashset muss ich mir mal angucken.
Die ASM Funktion sieht auch interessant aus, die muss ich aber erstmal genau verstehen ;-)

Danke auf alle Fälle für eure Anregungen, könnt natürlich gerne weiter machen ;-)

Gruß

Aphton 19. Dez 2013 22:09

AW: Wert [Word] in Liste/Array vorhanden
 
Der Threadstarter hat keine Aussagen über das Array getroffen - ist es z.B. sortiert? Falls ja, ginge es ja mit der binären Suche in Log(N) Zeit.
Ansonstnen über Hashes; oder ganz billig - linear!

Aphton 19. Dez 2013 22:54

AW: Wert [Word] in Liste/Array vorhanden
 
Zitat:

Zitat von Neutral General (Beitrag 1240386)
Funktioniert aber auch nur wenn jeder Wert nur 1x vorkommt oder nicht?

Beim Hashset werden meines Wissens nach mehrere Methoden vereint - zuerst einmal die Hashfunktion, die den Index zu einem Element liefert. An dieser Stelle im Hashset befindet sich dann evt. eine sortierte Liste (mit evt. mehreren kollidierenden Einträgen) dort wird wiederum binär gesucht!

Da eine Hashfunktion möglichst Kollisionsfrei vom Design her ist, enthalten die Listen im Hashset meistens nur wenige (eig. 1) Einträge. Gibts Kollisionsen, so ist das auch kein Problem!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.
Seite 2 von 3     12 3      

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