Thema: Delphi Allgemeine Delphi Tipps

Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Allgemeine Delphi Tipps

  Alt 3. Jun 2004, 13:27
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.
Andreas
  Mit Zitat antworten Zitat