Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Optimierer gesucht


Andy77 - Mo 21.08.06 19:39
Titel: Optimierer gesucht
Hallo zusammen,

ich habe ein relativ umfangreiches Simulationstool geschrieben, was mir aber allmählich zu langsam wird.
Der Delphicompiler ist ja nicht wirklich in der Lage, bei Fließkommaberechnungen optimalen Code zu erzeugen. Wenn man Irgendwelche Berechnung auf einem Fließkomma-Array durchführt, werden z.B. mehrmals pro Zeile
mov ax,[bp+xxx]
mov dx,[bp+yy]
aufgerufen, ohne daß sich je etwas an AX oder DX ändert. Zumindest das kann man die ja wegoptimieren.

Kennt jemand einen optimierten Compiler oder vielleicht auch nur einen Patch, der die überflüssigen Befehle aus der erzeugten EXE rauskillt ?

Gruß,
Andreas


nullplan001 - Di 22.08.06 11:31

Ja, hol dir doch einfach FreePascal und lass es im Delphi-Kompatibilitätsmodus auf die Projekthauptdatei los. Und stelle vorher auf Level-3-Optimierungen und Prozessor-Spezifische Optimierungen (Bei einem Athlon K6 kann man mehr machen als bei einem 80386). Ich würde folgende Befehlszeile für Debugging empfehlen:

Quelltext
1:
ppc386 -bl -Cit -gcdghlvw -OGru3p3 -Rintel -Sdghit -Twin32 -CfSSE2 -venhiw projektdatei                    

Für Release würde ich die Debugging-Infos rausnehmen (-g..., -bl). Ach guck dir einfach fpc -? an, und du findest schon, was du suchst. Achso, 'n Link: Bitte sehr. [http://www.freepascal.org/]
Tschö,
nullplan


Andy77 - Di 22.08.06 22:59

erstmal vielen Dank für den Link.
Habs mal installiert. Der ASM-Code sieht schon einiges effizienter aus als der vom Delphi-Compiler, die letzten 5% kann man aber scheinbar doch noch von Hand holen.
Kann man mit Free Pascal eigentlich auch ein paar Units kompilieren und dann in das Gesamtprojekt unter Delphi einbinden !?


Spaceguide - Di 22.08.06 23:11

Zumindest über DLL's kannst du mit beiden programmieren, nur immer schön Standardcalls machen ;-)