Forum: Sonstige Fragen zu Delphi
Delphi
by shmia,
16. Feb 2010
Der Performance Killer ist die Indizierung durch den Array-Index.
Wenn da z.B. steht: s , dann wird intern der Zeiger s genommen, dann wird i dazuaddiert, dies ergibt dann den Zeiger auf das zu lesende oder schreibende Zeichen.
Bei einem 4MB-String wären das 8 Millionen unnötige Additionen.
Hier die komplett getunte Funktion:
function StrReplaceChar(const S: Ansistring; const Source,...
Forum: Sonstige Fragen zu Delphi
Delphi
by shmia,
16. Feb 2010
Das scheint nur so.
"Professionel" ist wenn der Sourcecode einfach strukturiert und und quasi selbsterklärend ist:
function StrReplaceChar(const S: Ansistring; const Source, Replace: AnsiChar): string;
var
I: Integer;
begin
Result := S;
// hier besteht noch Optimierungsmöglichkeit durch Verwendung eines Zeigers
for I := 1 to Length(S) do
if Result = Source then
Forum: Sonstige Fragen zu Delphi
Delphi
by shmia,
16. Feb 2010
Wenn man mit Zeigern arbeitet, dann sollte das Ratz-Fatz gehen (nur Assembler wäre schneller):
var
p : PChar;
i : integer;
begin
UniqueString(S);
p := PChar(S);
for i := 1 to length(S) do
begin
If p^ = #0 then