Hallo Reniar,
Mich interessiert folgendes:
was wird im Allgemeinen von einem gängigen AMD oder
Intel-Prozessoren schneller verarbeitet:
eine Multiplikation oder eine Division von 2 32-bit realzahlen?
Ich hab mal double mit float und mul mit div
verglichen (Zeiten in CPU-Zyklen!):
P3/750, gcc 3.3.3
--------------------------
DOUBLE: Array to Array mul/div, size 10000000 (2x sweep)
mul: 621235317 cycles,
div: 680225495 cycles (ratio:0.91)
FLOAT: Array to Array mul/div, size 10000000 (2x sweep)
mul: 634822319 cycles,
div: 688748437 cycles (ratio:0.92)
Athlon-64/3400+, gcc 3.3.3 -O3
--------------------------
DOUBLE: Array to Array mul/div, size 10000000 (2x sweep)
mul: 219601188 cycles,
div: 334698163 cycles (ratio:0.66)
FLOAT: Array to Array mul/div, size 10000000 (2x sweep)
mul: 397249837 cycles,
div: 549078298 cycles (ratio:0.72)
P3/700, MSVC6
-------------
DOUBLE Array to Array mul/div, size 10000000 (double sweep)
mul: 809090998 cycles,
div: 884465019 cycles (ratio:0.91)
Also, float ist nicht unbedingt schneller und
bei div vs. mult kommt es darauf an.
Ist es letztlich intern egal? wenn nicht kann man
rechenintensive, oft wiederholte berechnungen günstiger
gestalten.
Vor Schleifen „double quotient;“ möglichst
„double multiplikant = 1./quotient“ umwandeln
Grüße
CMБ
PS.:
#define FTYPE double
... // count = int(1.E7)
...
void div\_proc(FTYPE \*in, FTYPE \*out, FTYPE arg, int count)
{
int i;
FTYPE \*p, \*q;
for(i=0,p=in,q=out; i