fabs
-
Hallo!
Interessehalber: Ich habe einen alten C-Code nach C++ portiert. Dabei fand sich unter anderem die Zeile:
#define AbsoluteVal(a) ((a) >= 0.0 ? (a) : -(a))Ersetze ich die Zeile durch:
#define AbsoluteVal(a) fabs(a)..so läuft der Algorithmus rund 30 Prozent schneller. Das hat mich nun doch sehr erstaunt. Wie kann den fabs() so viel schneller sein?
-
abs schrieb:
..so läuft der Algorithmus rund 30 Prozent schneller. Das hat mich nun doch sehr erstaunt. Wie kann den fabs() so viel schneller sein?
Das kann zum Beispiel spezielle Instruktionen des Prozessors nutzen anstatt relativ langsamer bedingter Anweisungen. Oder Bit-Tricksereien, weil dem fabs das zugrundeliegende Fließkommazahlenformat bestens bekannt ist.
-
...oder weil der Ausdruck nur einmal statt 3mal ausgewertet wird.

-
Vielleicht löscht fabs einfach nur das Vorzeichen-Bit oder so.
-
_matze schrieb:
Vielleicht löscht fabs einfach nur das Vorzeichen-Bit oder so.
Joa, hab ich mir auch gedacht.