Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Code optimieren (https://www.delphipraxis.net/121699-code-optimieren.html)

SirThornberry 5. Mär 2009 09:27

Re: Code optimieren
 
Ich würde pred an der Stelle zum Beispiel nur verwenden um mir eine zeile zu sparen. wobei ich mir das pred in dem genannten Beispiel sparen würde und lieber j mit 0 initialisieren und dafür das inc in der schleife eine Zeile weiter vor holen würde.(wenn es denn der Code sein sollte)
Delphi-Quellcode:
function RemoveChars(const aString: string; Chars: TChars): string;
var i, j: Integer;
begin
  SetLength(Result,Length(aString));
  j := 0;
  for i := 1 to Length(aString) do
  begin
    if not(aString[i] in Chars) then
    begin
      Inc(j);
      Result[j] := aString[i];
    end;
  end;
  SetLength(Result,j);
end;
Und je nach dem ob der Ausgangsstring überhaupt danach noch gebraucht wird würde ich das ganze zu einer Procedure wandeln und den Ausgangsstring ändern:
Delphi-Quellcode:
procedure RemoveChars(var aString: string; Chars: TChars);
var i, j: Integer;
begin
  j := 0;
  for i := 1 to Length(aString) do
  begin
    if not(aString[i] in Chars) then
    begin
      Inc(j);
      aString[j] := aString[i];
    end;
  end;
  SetLength(aString,j);
end;

DeddyH 5. Mär 2009 09:35

Re: Code optimieren
 
Wieso sparst Du da eine Zeile?
Delphi-Quellcode:
SetLength(Result,Pred(j));
oder
Delphi-Quellcode:
SetLength(Result,j-1);
macht ja keinen Unterschied. Ich kann auch nicht wirklich begründen, wieso ich im obigen Code Pred() verwendet habe, das mache ich nach Lust und Laune und nicht aus Gründen irgendwelcher Optimierungen.

SirThornberry 5. Mär 2009 09:37

Re: Code optimieren
 
das zeile sparen war darauf bezogen wenn man j danach noch verwenden will. Aber stimmt, in genanntem Beispiel wird es nicht mehr verwendet.

Puhbaehr 5. Mär 2009 10:29

Re: Code optimieren
 
Nu Lucky hat recht.

Code:
t := i - 1;

t := pred (i);

t := i;
t := t - 1;

t := i;
dec (t);
Delphi generiert für die vier Beispiele jeweils 100 % identischen ASM-Code:

Code:
004680D4 8BF3             mov esi,ebx
004680D6 4E              dec esi
Ich bin stehts auf der Suche nach Optimierungen hinsichtlich Geschwindigkeit sowie Lesbarkeit für das Schreiben zukünftiger Codes.

Nach dem Test sehe ich für mich keinen Grund meinen Stile durch die Verwendung von pred zu verändern. Meine Frage beantwortet in diesem Falle die deutlich höhere Lesbarkeit des ersten Beispiels.

Vielen Dank für das Feedback :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Seite 2 von 2     12   

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