![]() |
Optimierter code?
gibt es eigentlich wo ne übersicht, wie man auch in delphi code optimieren kann?
habe ja öfters mal wo folgendes
Delphi-Quellcode:
und dann mal auf speed getestet und da ist nun mal
function TDBFormRuntime.GetCopyID : integer;
begin Result := -1; if assigned(fCopyData) then Result := fCopyData.GetCopyID; end;
Delphi-Quellcode:
schneller als
function test2(value : Boolean) : integer;
begin Result := 12; if value then Result := 11; end;
Delphi-Quellcode:
(zwar nicht um viel statt 3042ms braucht er 2262ms - bei ca 1000000000 aufrufe)
function test3(value : Boolean) : integer;
begin if value then Result := 11 else Result := 12; end; 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
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Es geht um Delphi. ;) |
Re: Optimierter code?
Diese Seite scheint Informationen über Code-Optimierung bezüglich Delphi zu enthalten.
![]() |
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?) |
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