Einzelnen Beitrag anzeigen

Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#9

Re: Diese Funktion schneller machen?

  Alt 9. Dez 2004, 10:22
Zitat von Muetze1:
Sollte das nicht schneller gehen als auch noch die Strings in der grossen Schleife durchzugehen. Und mit Pos() klappt es auch, da ein .. nachher nicht mehr zu finden sein sollte.
Ich bezweifel das ständige Pos aufrufe schneller sind.
1. Ist ein Funktionsaufruf immer "Verhältnismäßig" langsam.
2. geht Pos immer von Anfang den String durch. Macht also viele unnütze Aktionen.
3. Bei Delete ist doch das gleiche Probleme wie viele SetLengths. Es wird jedes mal neuer Speicher angefordert und alter freigegeben. Was insgesamt sicherlich negativ auf die Performance ausschlagen wird.

Einzige Optimierung die mir noch einfallen würde ist, am Anfang alle Separatoren zu überspringen.

Delphi-Quellcode:
var
  Start: Integer;
begin
  Len:=Length(s);
Start:=1;
  while (result[Start]=c) and (Start<Len) do
    inc(Start);
for i := Start to length(s) do
(irgendwie sowas) Dadurch spart man sich das result[1] = #0 im if.

Statt Len := Len+1 benutze inc(Len);

statt immer s[i] und result[len] zu machen könntest du auch einen Pointer (PChar) verwenden, der immer erhöht wird.[/delphi]
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat