11.10 Faut-il préférer les double aux float ?
La vitesse de traitement d'un double n'est pas forcément plus
longue qu'un float, cela dépend du compilateur (de ses options)
et du processeur. Ainsi avec l'exemple suivant, en remplaçant le
typedef par float ou double, on s'aperçoit
que sur un Pentium ou un PowerPC, le double est plus rapide
à calculer que le float tout en ayant une précision plus grande.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <stdio.h>
#include <math.h>
typedef float reel; /* float ou double */
int main(void) {
long i ;
reel d = 3.0 ;
for (i = 0; i < 100000000; i++) {
d = cos(d) ;
}
(void)printf("%f\n", d);
return 0;
} |
Le C comprend des instructions mathématiques pour traiter les float
directement au lieu de toujours passer par des double depuis la
dernière norme (C99). Par exemple il existe cosf() en plus
de cos(). En faisant des essais on s'aperçoit que dans
notre exemple, le cosf() appliqué à un float devient
aussi rapide que le cos() appliqué à un double.
En conclusion, nous pouvons dire qu'il est préférable d'utiliser des
double à la place des float, sauf lorsque la place
mémoire devient critique.
Partager