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.