Increment, Decrement

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag 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.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

Schau dir einfach mal den generierten Code an. (pbcompiler test.pb /COMMENTED)

Das kommt da raus:

Code: Alles auswählen

; *Char + 1
  INC    dword [esp+4]

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.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...
(\/) (°,,,°) (\/)
Antworten