AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Performance Inline Assembler vs. Objekt Pascal

Performance Inline Assembler vs. Objekt Pascal

Ein Thema von OLLI_T · begonnen am 19. Nov 2003 · letzter Beitrag vom 20. Nov 2003
 
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: Performance Inline Assembler vs. Objekt Pascal

  Alt 19. Nov 2003, 14:19
Zitat:
Ein Compiler kann in den meisten aller Fälle besser optimieren, als der Programmierer von Hand
Was bedeuten würde das eine Maschine intelligenter als ein Mensch wäre. Dem stimme ich also nicht zu. Ein Mensch wird IMMER besseren Code erzeugen als ein Compiler, es ist nur eine Frage des Aufwand-Nutzen Verhältnisses dem der Mensch unterlegen ist. Das Problem ist das ein Mensch der einen Compiler übertrumpfen will exakt wissen muß wo der Compiler schlecht arbeitet. Nur wenn es dann offensichtlich ist das der Compiler ineffizienten Code erzeugen muß, zB. weil er neuere CPU Befehle nicht benutzt, lohnt sich der Einsatz von manuellem Assembler.

Was ich bisher sehen konnte ist in
Delphi-Quellcode:
    mov al, Byte([esi].FColor) 1.)
    mov dl, [ebx] 2.)
    sub eax, edx

    mov Temp, eax 3.)
    fild Temp
    fmul FAC
    sub esp, $04
    fistp DWord Ptr[esp]
    fwait 4.)
    pop eax 5.)
    add [ebx], al 6.)
1.) 8 Bit und 32 Bit Befehle und Speicherzugriffe werden vermischt. Dies ist auf 32 Bit CPU's tödlich.
2.) zwei Speicherzugriffe nacheinander und sofortiges benutzen dieser Register in SUB EAX,EDX ist tödliche für die CPU Pipelines, es wird Branches und Stalls geben da das SUB EAX,EDX auf die vorherigen langsammen Speicherzugriffsbefehle warten muß.
3.) ein Register wird wieder in den Stack gespeichert
4.) fwait kann raus, unter neueren CPU's > 286 eh sinnlos.
5.) Stack wird geupdated, POP bewirkt einen Speicherzugriff + ein Inkrement von ESP. besser also eine Stackvariable mit MOV EAX,[ESP] benutzen
6.) wieder ein 8 Bit Speicherzugriff

Gruß Hagen
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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