Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.064 Beiträge
 
Delphi XE2 Professional
 
#13

Re: brauche kleine Hilfe in ASM, Flaschenhals

  Alt 22. Jun 2006, 17:25
Zitat:
Auch wenn ich noch nicht wirklich verstehe, was Du da machst
Die unterschiedlichen Scales werden durch die Bits 29-30 bestimmt.
Um 29 Bits nach rechts verschoben ergeben sich (wenn Bit 31=0 ist) also 4 mögliche Werte, nämlich 0..3.
Da Bit 31 aber auch 1 sein könnte, ergibt die Verschiebung um 29 Bits 8 mögliche Werte, wobei die Werte 4..7 den Werten 0..3 entsprechen.
Das Array scale[0..7] enthält diese 2*4 möglichen Scales und mit
scale[CodZahl shr 29] hole ich den passenden Scale aus dem Array.

Zitat:
und warum das schneller ist
Weil der Zugriff auf ein Array, zudem eines, dessen Felder 8 Bytes lang (double=64 Bit) sind, deutlich schneller ist, als den Scale in einer Case-Struktur zu ermitteln.

Zitat:
Bei Deiner Messfunktion kommt bei mir 32 zu 20 raus und nicht 88 zu 53 wie bei Dir
Bei mir werkelt eine Intel P4 CPU.
AMD-CPUs schaffen wohl mehr in einem CPU-Takt, arbeiten aber (glaube ich, weiß ich aber nicht) mit niedrigeren Taktraten, als Intel-CPUs.
Zitat:
Hat das was mit der CPU Geschwindigkeit zu tun
Nein, sondern mit der unterschiedlichen Prozessor-Architektur.
Vorausgesetzt du benutzt gleiche Prozessor-Architekturen, sollten die benötigten CPU-Ticks auch bei unterschiedlichen CPU-Taktfrequenzen übereinstimmen. (meine Meinung....).

Zitat:
Ist Dein rdtsc gleichbedeutend mit : queryperformancecounter ? Damit messe ich immer.
Nein!
QueryPerformanceCounter tickt mit (bei mir) knapp 3.6 MHz.
RDTSC tickt mit dem CPU-Takt (bei mir) knapp 2.7 GHz, also um den Faktor 750 schneller. Bei AMD liegt dieser Faktor vermutlich niedriger.
Um sehr kleine Performance-Unterschiede zu messen, ist (meine Meinung) RDTSC besser geeignet.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat