AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Suchen + Ersetzten in großen Dateien: Optimieren/Verbessern
Thema durchsuchen
Ansicht
Themen-Optionen

Suchen + Ersetzten in großen Dateien: Optimieren/Verbessern

Ein Thema von Dunedain · begonnen am 28. Feb 2007
Antwort Antwort
Dunedain
(Gast)

n/a Beiträge
 
#1

Suchen + Ersetzten in großen Dateien: Optimieren/Verbessern

  Alt 28. Feb 2007, 10:37
Morgen^^

hab mir vor einiger Zeit mal en Prog geschrieben, mit dem ich in mehreren Dateien nach bestimmen Begriffen aus einer Liste suche, und diese durch Begriffe aus einer anderen Liste ersetzte; Oder aber nur einen, dafür aber mehrzeiligen Begriff.

Habs mir dabei sehr leicht gemacht:
  • Datei (vollständig) in den Speicher laden
  • Suchen und ersetzten
  • Neue Daten zurückschreiben
Leider ist die exe irgendwie beschädigt worden, Source find ich auch nicht mehr
Neuschreiben. Aber besser

Meine Ansatzpunkte für die Verbesserung bzw. die Optimierung sind "Speicherschonung", d.h.: Blockweises lesen und schreiben, die Verwendung eines speziellen Suchalgorithmus, sowie die Bearbeitung der Dateien durch Threads...
So weit auch kein Problem (dachte ich zumindest)

Ich glaube, der Boyer-Moore-Horspol Algorithmus zur Suche deckt meine Bedürfnisse hier ab. Aber dass ist nicht die eigentliche Problemstellung. Die kommt nämlich durch das Blockweise auslesen "zu Stande".

<Beispiel> Datei (Punkte trennen die Blöcke, also 4 Zeichen pro Block)
abcd . efgh . ij\r\n .
klmn . opqr . stuv

<Beispiel> Suchbegriff
ghij\r\nkl

Wie man sieht, "erstreckt" sich der Suchbegriff über drei Blöcke, d.h. ich kann den Algorithmus in diesem Fall nicht anwenden, weil der Suchbegriff nicht vollständig in einem Block enthalten ist (Was ja durchaus vorkommen kann).


Gibt es für die von mir angestrebte Vorgehensweise vielleicht schon eine Algorithmus Definition, die ich implementieren könnte?

Oder "optimiere" ich an der falschen Stelle? Bei beispielsweise einer Blockgröße von 4096 Byte wird der Unterschied zwischen boyer-moore-horspol und den einfachen String-Pos Funktionen warscheinlich nicht sehr deutlich ausfallen...?


Bin für jede Art von Feedback, egal ob Kritik, Lösungsansätze, Ideen oder Verweise auf Informationen sehr dankbar
  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 17:48 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