Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#4

AW: Suchen/Ersetzen in grossen Dateien

  Alt 31. Mai 2012, 12:23
Es kommt drauf an, wie ersetzt wird.
Wird jedes Stück einzeln ersetzt und immer wieder alles nachfolgende verschoben, dann muß es zwangsläufig langsam sein.

Wenn man alles in eine andere Datei / einen anderen speicherblock kopiert, dessen Größe (beim Speicherblock) vorher berechnet wurde und dann wird nur noch das unveränderte rüberkopiert, und dazwischen das zu Ersetzende eingefügt, dann geht es schneller.
Bei einer Datei könnte man z.B. vorher alles suchen, sich die Positionen merken und
- wenn der Ersatztext länger ist, dann fängt man von hinten an einzufügen (vorher die Datei-/Blockgröße anpassen)
- wenn Er kürzer ist, dann eben von vorne (nachher die Datei-/Blockgröße anpassen).
(Gleiches gilt für eine Inplace-Ersetung im Speicherblock/RAM)


Für StringReplace hatte ich vor langem mal einen kleinen Code veröffentlicht, welcher das etwas optimiert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat