Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schnelle Suche in Textdateien (https://www.delphipraxis.net/62168-schnelle-suche-textdateien.html)

toms 31. Jan 2006 18:33


Schnelle Suche in Textdateien
 
Hallo,

Brauche eine schnelle Routine, welche nach einen String in Textdateien sucht. (Case insensitive)
Hat jemand mal jemand von euch eine solche Funktion geschrieben (am besten asm optimiert) oder kann
mir Hinweise geben, was am Schnellsten ist. (Filestream etc...)

(Die Anzahl Zeichen in den Textdateien ist i.d.R < 1500)

Der_Unwissende 31. Jan 2006 18:45

Re: Schnelle Suche in Textdateien
 
Hi,
warum muss es denn so super schnell sein? Also klar, schnell ist immer toll, aber ich denke mit der Suche in der DP findest du schneller dein Ergebnis (ob schon jmd. ein Test gemacht hat) als mit dem Thread hier. Jedenfalls gibt es mindest einen, der schon ein schnellen Suchalgorithmus geschrieben hat, nennt sich Borland, hat gleich verschiedene Algorithmen (auch Case-Sensitive).
Also imho ist eine TStringList mit Pos zusammen nicht langsamer als eine der Alternativen Lösungen (aber deutlich weniger Aufwendig).
Aber am schnellsten dürfte ein MemoryStream sein, auf den du den Knuth-Morris-Pratt Algorithmus anwendest, der müsste einer der schnellsten bekannten Algorithmen für's String-Matching sein (denke amortisiert kannst du ausrechnen, dass der mit linearer Laufzeit auskommt).

Gruß Der Unwissende

toms 1. Feb 2006 12:23

Re: Schnelle Suche in Textdateien
 
Zitat:

Zitat von Der_Unwissende
Hi,
warum muss es denn so super schnell sein?
Gruß Der Unwissende

Weil viele Dateien durchsucht werden müssen und der User möglichst nicht lange warten möchte...

Kennt jemand vielleicht MTSearch?

http://homepages.borland.com/torry/sorters.htm#2916

bigg 1. Feb 2006 12:42

Re: Schnelle Suche in Textdateien
 
moin,

die müßtest du eigentlich kennen:
http://www.droopyeyes.com/default.as...owProduct&ID=4

Der_Unwissende 1. Feb 2006 15:39

Re: Schnelle Suche in Textdateien
 
Zitat:

Zitat von toms
Weil viele Dateien durchsucht werden müssen und der User möglichst nicht lange warten möchte...

Ok, soweit war es mir ehrlich gesagt fast klar. Aber mal ehrlich, du hast eine Menge kleiner Dateien. I.d.R < 1500 Zeichen? Was heißt das? Unter 3Kbyte, oder? (Schon mit Unicode gerechnet).
Da ist die Zeit, die dein Festplatte benötigt um diese Datei zur Verfügung zu stellen mit sehr hoher Wahrscheinlichkeit schon >> als die Zeit, die deine Suche nach einem bestimmten String angeht.
Ich denke du kannst deutlich mehr Zeit rausholen, wenn du geschickt vorlädst (soweit es nicht der Fall ist) und dort Zeit rausholst. Ich weiß nicht wie gut du da schon optimiert hast.
Natürlich kannst du danach Wörter so portionieren, dass sie Ideal in den Speicher (natürlich möglichst L1 Cache) passen und mittels linearer Programmierung und effizienten Algorithmen ein paar weitere Microsekunden rausholen, aber die Ladezeiten der Festplatte bleiben im Millisekundenbereich, von daher...

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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