Autor Beitrag
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Do 08.12.05 12:42 
Hi, habe gerade was ausprobiert und da ist mir folgendes aufgefallen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Bla(i: integer);
{$O-}
 var j : integer;
begin
  j := i;
end;
{$O+}


Diese Prozedur wird doppelt so schnell, wenn man die Optimierung ausschaltet.

Bei Optimierung werden diese Zeilen weggekürzt:

mov eax,[ebp-$04]
mov [ebp-$08],eax

Warum wird das dann langsamer?
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 08.12.05 13:42 
Bei mir ist die optimierte Variante 52% schneller (D7).


Zuletzt bearbeitet von delfiphan am Do 08.12.05 13:59, insgesamt 1-mal bearbeitet
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Do 08.12.05 13:45 
Hi,
welche Delphiversion verwendest du?

_________________
Stellen Sie sich bitte Zirkusmusik vor.
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Do 08.12.05 14:50 
Ich benutze auch D7. Vielleicht liegts an der CPU (hier Athlon MP)?
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Do 08.12.05 15:37 
Hallo,

bei so kurzen Code-abschnitten spielt zuviel eine Rolle.
Welchen Zustand hatten die Register vor dem Aufruf, kommt die Cpu besser damit zurecht, wenn zwischendurch irgendwas sinnloses passiert um mit dem out-of-order und Registerrenaming fertig zu werden. liegen die Adressen fuer den Code und die Daten guenstiger.
Bei meinem Ahtlon64 939 ist das sortieren von 8-Byte grossen Felder teilweise schneller als mit 4 Byte , mancher Code wird schneller wenn zwischendrin einfach was nutzloses steht nur um zeit fuer die laufende Verarbeitung zu gewinnen, damit die anschliessende Arbeit nicht mehr stockt.
Bei einem Programm mit der Fpu kam ich bis auf doppelte Taktrate bei der Bestimmung des unnormalisierten Normalenvektors (40 Befehle 20 Takte) FPU und CPU Befehle gut gemischt.
Athlon reagiert auch pingelig auf Sprungadressen alignment.
lies mal 22007.pdf von AMD

Gruss Horst
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 08.12.05 18:34 
Hi, meine 52%-Messung stammt natürlich nicht von einem einmaligen Ausführen; das ist ein Mittelwert aus einigen Milliarden Durchläufen. Für beide Funktionen habe ich soweit möglich die gleiche Bedingung geschafft.
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Do 08.12.05 19:14 
Baue ich bei der optimierten Variante ein

ausblenden Delphi-Quelltext
1:
2:
3:
asm
 nop
end;


ein, so ist es 3 mal so schnell wie ohne :-/. Ich glaube der Delphi-Compiler mag keine Athlons (die Effekte habe ich auf meinem Centrino nicht).
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Do 08.12.05 19:32 
Hallo,

das kann man wohl sagen.
Bei Fastcode project gibt es auch eine Tabelle ueber die rel. Laufzeitunterschiede.
dennishomepage.gugs-...argetAlignInvest.htm
Nur mal die Durchschnittswerte bei CharPos sind es 40% jenachdem wo der Code steht, da sieht der P4 schon viel besser aus,auch wenn wenn bei den Projekten oft der Athlon weit bis ganz vorne ist
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
      Average
P3      21,4
P4       5,1
P4E      5,7
XP      22,2
Opteron 25,4
PM B    13,8


Gruss Horst