Schnellste Möglichkeit für den Betrag einer Zahl?
-
rotfl klar dann kannst du ihm ja gleich vorschlagen einfach keine negativen zahlen zu benutzen
-
Original erstellt von Parapiler:
nein nicht auf unsigned casten weiss gar nicht ob das geht... aber wie wäre es von anfang an ihn als unsigned int zu deklarieren? somit hast du immer den BetragJo, und dann baut er noch ne Fallunterscheidung ein, falls er dann doch mal die wirkliche Zahl braucht und nicht nur ihren Betrag :p .
-
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.