Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Optimierter code? (https://www.delphipraxis.net/90380-optimierter-code.html)

Gruber_Hans_12345 16. Apr 2007 13:54


Optimierter code?
 
gibt es eigentlich wo ne übersicht, wie man auch in delphi code optimieren kann?

habe ja öfters mal wo folgendes
Delphi-Quellcode:
function TDBFormRuntime.GetCopyID : integer;
begin
    Result := -1;
    if assigned(fCopyData) then
        Result := fCopyData.GetCopyID;
end;
und dann mal auf speed getestet und da ist nun mal
Delphi-Quellcode:
function test2(value : Boolean) : integer;
begin
    Result := 12;
    if value then
        Result := 11;
end;
schneller als
Delphi-Quellcode:
function test3(value : Boolean) : integer;
begin
    if value then
        Result := 11
    else
        Result := 12;
end;
(zwar nicht um viel statt 3042ms braucht er 2262ms - bei ca 1000000000 aufrufe)

und bringt natürlich nur dann was, wenn value true ist, dann ist er in der ersten funktion schneller (vermute mal aufgrund vom pipelining der cpu) ... gibt es sonst noch code optimierungen, die man schnell wo einbauen kann?

oder ist das gar ein ganz anderer effekt hier?

DP-Maintenance 16. Apr 2007 14:43

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Es geht um Delphi. ;)

Christian V. 16. Apr 2007 15:33

Re: Optimierter code?
 
Diese Seite scheint Informationen über Code-Optimierung bezüglich Delphi zu enthalten.
http://www.pascalgamedevelopment.com/library/hpd_ob/

shmia 16. Apr 2007 16:35

Re: Optimierter code?
 
Ich versuche (wenn es möglich ist) den Wert Result so spät als möglich zu setzen
um dem Compiler das Register AX freizuhalten.
Das bringt natürlich nur etwas, wenn auch Code vorhanden ist, der Nutzen aus dem
freien Register ziehen kann.
Ausserdem muss dann auch die Optimierung angeschaltet sein. (wie war die Einstellung bei deinen Tests?)

Gruber_Hans_12345 16. Apr 2007 16:49

Re: Optimierter code?
 
Optimierung eingeschaltet

also vom assembler code her müsste eigentlich test3 schneller sein

kann man irgendwie den code aus dem CPU Fenster kopieren?

Code:
test2:
005EC598 BA0C000000       mov edx,$0000000c
005EC59D 84C0             test al,al
005EC59F 7505             jnz +$05
005EC5A1 BA0B000000       mov edx,$0000000b
005EC5A6 8BC2             mov eax,edx
005EC5A8 C3               ret
005EC5A9 8D4000           lea eax,[eax+$00]     << was sollte das machen (ist das ein Align auf 4 Byte?)
test3:
005EC5AC 84C0             test al,al
005EC5AE 7406             jz +$06
005EC5B0 B80B000000       mov eax,$0000000b
005EC5B5 C3               ret
005EC5B6 B80C000000       mov eax,$0000000c
005EC5BB C3               ret


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.

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