Seite 2 von 2
Verfasst: 03.01.2009 22:21
von cxAlex
Rings hat geschrieben:Kappes.
Im Asm-Output (siehe Compilerswitch /Commented )
steht ganz klar ein INC dword[ESP+X]
das heisst es kommt immer grad an wie der cache bestückt ist.
ansonsten ist die reine PB version sogar schneller da
sie mit dem Stack (ESP) arbeitet.
Könntest du ein Beispiel liefern in dem PB schneller ist? Ich hab nicht ganz so viel Ahnung von ASM, und bisher war es bei jedem mit den ASM - Macros schneller bzw. gleich schnell. Würde gerne einen Fall sehen wos anders ist.
Verfasst: 03.01.2009 23:07
von freak
Schau dir einfach mal den generierten Code an. (pbcompiler test.pb /COMMENTED)
Das kommt da raus:
Code: Alles auswählen
; IncP(char)
p.v_TestString equ esp+0
p.p_char equ esp+4
p.v_i equ esp+8
INC dword[p.p_char]
Das ist bis aufs letzte bit die gleiche Instruktion. Was auch immer du also für Unterschiede feststellst haben nichts mit den Macros zu tun. Das sind alles Effekte des CPU Caches oder des Multitasking-Verhaltens des OS. Probier einfach mal ein bischen mit dem Code rum: Die Ausführungsreihenfolge der Tests spielt eine große Rolle. Sogar die Reihenfolge wie die Prozeduren im Code stehen macht einen Unterschied.
Genau wegen diesen vielen Seiteneffekten macht es keinen Sinn so kurze Codestücke zu testen.
Verfasst: 04.01.2009 03:06
von KeyKon
Also bei mir dauerts imme etwa gleich, mal is das Normale 10ms schneller mal die Macros, von daher würde ich auch eher schätzen das es gleichschnell is und es drauf ankommt wie der Cache grad bestückt is...