Zitat von
iaby:
ich wollte mal fragen was es denn so für tipps für die delphi programmierung gibt, damit die exe dann weniger auslastung hat und/oder schneller läuft
Besonders bei
Stringverarbeitung sind durch optimierten Code grosse Verbesserungen in der
Ausführungsgeschwindigkeit möglich.
Hier 3 Beispiele:
Delphi-Quellcode:
// dreht einen String um
// die langsame Version
function ReverseSlow(s:string):string;
var
i : Integer;
begin
Result := '';
for i := Length(s) downto 1 do
Result := Result +s[i]; // hier ist das Problem
// bei jedem Anfügen wird neuer Speicher reserviert und alt->neu kopiert
end;
// die schnelle Version
// auch die Übergabe als const-Paramter bringt eine Verbesserung
function ReverseFast(const s:string):string;
var
i, j : Integer;
begin
SetLength(Result, Length(s)); // vorab Speicher reservieren
j := 0;
for i := Length(s) downto 1 do
begin
Inc(j);
Result[j] := s[i];
end;
end;
// noch schnellere Version verwendet Zeiger
// 2 Nachteile:
// Code wird unübersichtlich und fehlerträchtig
// Schutzmechanismen von Delphi werden ausgehebelt (Rangecheck)
function ReverseUltraFast(s:string):string;
var
i : Integer;
p : PChar;
begin
SetLength(Result, Length(s));
p := PChar(Result);
for i := Length(s) downto 1 do
begin
p^ := s[i];
Inc(p);
end;
end;
Bei langen Strings sind die optimierten Varianten um Welten (~100) schneller als
die langsame Version
ReserveSlow.
PS: man sollte den Titel diese Threads vielleicht auf
Delphi Performance Tips ändern.