Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Allgemeine Delphi Tipps (https://www.delphipraxis.net/23445-allgemeine-delphi-tipps.html)

iaby 3. Jun 2004 10:20


Allgemeine Delphi Tipps
 
hallo zusammen,

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.
sowas wie anscheinen inc(i) schneller ist als i:= i + 1
also z.B. auch welche variablentypen man vorziehen sollte (keine real, lieber das als das, ...)

könnte ja auch für die allgemeinheit ganz interessant sein, oder?

gruss,
iaby

S2B 3. Jun 2004 10:25

Re: Allgemeine Delphi Tipps
 
Zitat:

könnte ja auch für die allgemeinheit ganz interessant sein, oder?
Stimmt! Würde mich auch interessieren! :wink:

MathiasSimmack 3. Jun 2004 10:34

Re: Allgemeine Delphi Tipps
 
Das würde ich aber nicht als allgemeine Tipps bezeichnen. Das geht IMHO schon eher in die Ecke "Optimierungen". Aber trotzdem: Interessant ist es sicher.

Florian H 3. Jun 2004 10:39

Re: Allgemeine Delphi Tipps
 
ok, Tipp: wenn Inc(i); schneller als i := i+1; ist, dann ist Dec(i); auch schneller als i := i-1; :zwinker:

sowas würde mich auch mal schwer interessieren!

Bernhard Geyer 3. Jun 2004 10:40

Re: Allgemeine Delphi Tipps
 
Für Pptimierungen der Anwendung bezüglich Performance besorgt man sich (wenn es das Budget zuläßt) am besten einen Profiler wie AQTime

Mit solch einem Profiler läßt man sein Programm laufen und schaut sich anschließend die Programmteile an, die am meißten Zeit benötigen.

Ich denke für allgemeine Tipps kann man zwar 1000te Aufschreiben (Begin/EndUpdate bei Trees/Listviews verwenden), aber nach Murphy ist es immer der 1001te Tipp (den man noch nicht beachtet hat) der das Programm um 50% schneller macht.

Meflin 3. Jun 2004 10:40

Re: Allgemeine Delphi Tipps
 
und denkt daran: inc hat einen zweiten parameter!
inc(i,10)

dizzy 3. Jun 2004 10:42

Re: Allgemeine Delphi Tipps
 
...und man kann inc/dec nicht auf Felder von Objekten anwenden.

MathiasSimmack 3. Jun 2004 10:54

Re: Allgemeine Delphi Tipps
 
Aber man kann mit "inc" sehr schön ein Array von null-terminierten Strings durchlaufen. ;)
Delphi-Quellcode:
const
  bla = 'Hallo'#0'Welt!'#0'Hallo'#0'Simmi'#0#0;
var
  p  : pchar;
begin
  p := @bla[1];
  while(p[0] <> #0) do
  begin
    MessageBox(0,p,nil,0);
    inc(p,lstrlen(p) + 1);
  end;
end;

shmia 3. Jun 2004 12:27

Re: Allgemeine Delphi Tipps
 
Zitat:

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz