AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schnelle Suche in Textdateien

Ein Thema von toms · begonnen am 31. Jan 2006 · letzter Beitrag vom 1. Feb 2006
Antwort Antwort
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#1

Schnelle Suche in Textdateien

  Alt 31. Jan 2006, 19:33
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)
Thomas
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Schnelle Suche in Textdateien

  Alt 31. Jan 2006, 19:45
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Schnelle Suche in Textdateien

  Alt 1. Feb 2006, 13:23
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
Thomas
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#4

Re: Schnelle Suche in Textdateien

  Alt 1. Feb 2006, 13:42
moin,

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

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Schnelle Suche in Textdateien

  Alt 1. Feb 2006, 16:39
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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