Schnellste Möglichkeit für den Betrag einer Zahl?
-
das abs(wert) nicht schneller sein kann ist eigentlich klar, ich denk mal du hast im debug compiliert.
da ist das sicher nicht inline
also laandet da erst mal was auf dem Aufrufstackdann ist in dem call ja noch was zu tun
int abs(int z) { if (z>=0) { return z; } return -z; }
und das sind was mehr sachen zu machen
-
Original erstellt von b7f7:
das abs(wert) nicht schneller sein kann ist eigentlich klar, ich denk mal du hast im debug compiliert.
...
und das sind was mehr sachen zu machenja, im debug-code.
aber im release-code sehrt man auch leicht sachen wie
cwd //vorzeichen von ax nach alles 32 bits von dx tun
xor ax,dx //falls ax negativ war, 1-erkomplement von ax machen
sub ax,dx //falls negativ, 2-erkomplement machen
kann nicht glauben, daß drei so direkte assemblerbefehle lahmer sein können, also rumgespringe.
-
naja, aber das der compiler aus dem rest auch nocht optimalen code macht und das dadurch gleichwertig wird... ist doch auch moeglich, sogar anzunehmen.
deswegen denk ich da wurden im debugmode wieder nicht aussagekraeftige messungen vorgenommen.
-
Original erstellt von <b7f7>:
deswegen denk ich da wurden im debugmode wieder nicht aussagekraeftige messungen vorgenommen.jo. seh ich auch so. und da das messprogramm geheim bleibt, isses unglaubwürdig.
-
Lass dir doch mal von der msdev den Disaaaemblierten Code ausgeben. Dann wird es vielleicht aussagekräftiger.
Roland
-
code.debug!=code.release
da nuetzt es auch nich den asm zu beobachten.
-
Original erstellt von <b7f7>:
code.debug!=code.releaseStichwort: Optimierungen
-
volkard
*******
wie schauts mit dem FPU befehl FABS aus? sollte doch noch "besser" sein oder?bye
tester
-
Original erstellt von TheTester:
**volkard
wie schauts mit dem FPU befehl FABS aus? sollte doch noch "besser" sein oder?
**glaub ich auch nicht.
-
FABS ist für Fließkommazahlen.