Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.669 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: String kopieren, was ist schneller?

  Alt 8. Jan 2015, 11:04
Ich habe jetzt gerade kein XE verfügbar, aber unter XE2 entspricht das Copy im Wesentlichen einem Move-Befehl. Eine Kopie des RiesenString kann ich im erzeugten Code auch nicht finden.

Du verwendest doch hoffentlich das PosEx aus AnsiStrings und nicht das aus StrUtils?

Warum nutzt du eigentlich nicht den dritten Parameter von PosEx für die Startposition der Suche? Wie es jetzt ist, beginnt die Suche immer am Anfang des RiesenString. Deshalb musst du auch den Marker ausblenden. Abgesehen davon ist das von der Performance her eher ungünstig. So wäre es deutlich geschickter:

Delphi-Quellcode:
p:=PosEx(Marker,RiesenString, 1);
repeat
 Teilstring:=copy(Riesenstring,p,1800);
  // Annahme: der nächste Marker kann erst nach dem Teilstring kommen
 p:=PosEx(Marker,RiesenString, p + 1800);
 //..Mache was mit dem Teilstring.. (3x weitere copy mit anderen Markern)
until p=0;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat