Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat
nrm := 1 div Wert;
Ergebnis := (A*x + B*Y + C*Z) * nrm;
Ergebnis2 := (A*x2 + B*Y2 + C*Z2) * nrm;
Ergebnis3 := (A*x3 + B*Y3 + C*Z3) * nrm;
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Zitat
10000
123456789
Asm: 12345 in 4976 ms
Float: 12345.7 in 0 ms
Double: 12345.7 in 0 ms
Normal: 12345 in 0 ms
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
int Inverse; int DoCalcAsm(int test) { int res; __asm { mov eax,[test] mul [Inverse] mov [res],edx }; return res; } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
int DoCalcNormal(int test, int wert) { int res; return test / wert; } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
float fpInv; float DoCalcFloat(float test) { return test*fpInv; } |
Zitat
Asm: 12345 in 3666
Float: 12345.7 in 3650
Double: 12345.7 in 3432
Normal: 12345 in 4649
Zitat
Asm: 12345 in 1108
Float: 12345.7 in 13541
Double: 12345.7 in 13494
Normal: 12345 in 12573
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (30.05.2011, 20:25)
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 |
int DoCalcAsm(int test) { int res; __asm { mov eax,[test] mul [Inverse] mov [res],edx }; return res; } |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Memnarch« (31.05.2011, 00:22)
Aber ja, float ginge sicher auch, ist vermutlich aber doch 'nen ganzen Tick langsamer.
Glaub ich eben nicht. Floating-Point sollte auf einer halbwegs aktuellen CPU nicht wirklich langsamer sein als Integer-Arithmetik. Die Instruction Latencies waren jedenfalls noch gleich als ich das letzte Mal nachgeschaut hab, d.h. Unterschiede kommen wenn dann vielleicht von der Möglichkeit zur out of order Execution.
Ein Thread bekommt auch bei mir im Taskmanager nie mehr als 50%(+-4) o.O.
Quellcode |
|
1 |
while( true ) ; |
Werbeanzeige