AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi (sehr) große Datei SCHNELL nach mehreren Strings durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

(sehr) große Datei SCHNELL nach mehreren Strings durchsuchen

Offene Frage von "wth"
Ein Thema von wth · begonnen am 17. Nov 2008 · letzter Beitrag vom 17. Nov 2008
 
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#1

(sehr) große Datei SCHNELL nach mehreren Strings durchsuchen

  Alt 17. Nov 2008, 19:30
Hallo,

Ich habe eine große Datei (2 GB oder größer) und versuche gerade diese nach mehreren Zeichenketten zu durchsuchen.
Das ganze muss möglichst schnell sein.

So mache ich es bisher:

1. Lese ich einen Block aus der Datei. (~20000 Zeichen oder mehr; "BlockRead()")
2. Splitte/Explode ich diesen Block in ein String-Array mit dem Delimiter CRLF.
3. Sortiere ich das Array. ("Quicksort()")
4. Suche ich die Zeichenketten mittels einer Binären-Suche, da das Array ja sortiert ist. (das geht auch noch recht schnell)

Das Auslesen und das Suchen geht recht schnell, nur das Aufsplitten und das Sortieren des Arrays verbrauchen viel zu viel Zeit. (hauptsächlich wohl das Splitten)
Ich habe schon versucht den Block mit Pos() zu durchsuchen und die Datei zeilenweise auszulesen und zu vergleichen, ist aber beides einfach zu (viel) langsam.
Die Datei ist ganz einfach aufgebaut, jede Zeile eine Zeichenkette getrennt durch CRLF's.
Ich habe schon mehrere Split/Explode Varianten ausprobiert, auch die optimierte Version hier aus dem Forum.
Man kann die Datei auch nicht komplett in den Speicher laden, dafür ist sie zu groß.
Bisher lese ich die Datei mit den Pascal-Dateiroutinen, habe es aber auch schon mit FileStream versucht, ist aber genauso langsam.

Hat jemand noch ne Idee, wie das vielleicht schneller gehen könnte?

Danke schonmal.
  Mit Zitat antworten Zitat
 


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 08:58 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