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