Calcul trigo sur float

Signaler
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
j'utilise visual c++ 6.0 et je voudrais savoir si cosf est plus rapide que cos sur un float

10 réponses

Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009

C'est le même algorithme il y en un seul pour la fonction cosinus. Donc le seul truk qui pourrais ralentir c'est le nombre de virgule enfin la precision des calcules de toutes façon tu peut met juste cos(n) n peut être de tous les type car la fonction est surcharger :D bon ben voilà ils savent coder utilise math.h une lib standart :D @+
SKone le site
SK1-SKone Production-SK1
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
cos cast en double le parametre et retourne un double, pas de surcharge(suffit d'aller voir dans math.h), cosf prend un float en parametre et retourne un float, maintenant au lieu de remplacer tout mes cos par cosf j'aimerais savoir si cosf est reelement optimiser pour les float sous vc++(car le cos est couteux, env 30 cycles par appel recursif) et ca doit dependre des plate forme(processeur) et des implementation
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
cos et cosf ont strictement la meme implementation.
fld qword ptr addr
fcos
et le param reste dans le registre fpu ST(0).
pour la bonne raison que la fpu n'a qu'1 seule instruction de cosinus.
La difference de performance sera au niveau de l'attribution finale, si on ecrit sur 8 octets (double) ou sur 4 octets (float) et donc tres minime.
BruNews, ciao...
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
9 novembre 2007
1
tres minime ? le traitement d'un double prend plus de 2 fois plus de temps que le traitement d'un float.

pour repondre a ta question djl, si tu n'ecrit pas un logiciel necessitant une precision extreme, et si tu as besoin de performance, je te conseil d'utiliser cosf et de travailler avec des float.

de plus, cos cast en double, et si tu savais le temps que bouffe un cast, tu serais desagreablement surpris.
c'est pour ca que je peut te donner ce petit conseil : float f 0.0; est une erreur assez violente et float f 0.0f; est plus correcte, car sinon le compilo fait ceci : float f = (float)0.0 (car 0.0 est une valeur double) et ceci bouffe des ressources pas possible.

mais ceci reste dans le cadre d'une necessiter de performances, si tu ecrit un tableur, tout le monde s'en foutra.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
traitement d'un double, si on en passe en param exact que on empile 2 fois DWORD au lieu de 1, si c'est traitement pur au niveau de la fpu le float n'existe pas donc...
Si vous voulez fournir 2 exemples float et double, on en fera les mesures exactes.
BruNews, ciao...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
sebseb42 ==> j'ai besoin de perf , c'est pour de la 3d

en fait j'ai cru comprendre qu'a la limite autant utiliser uniquement des double tant qu'on est pas limiter par la quantite de memoire, mais je vais quand meme garder les float et utiliser cosf pour eviter les cast(je savais pas que c'etait couteux) vu que la precision me suffit

merci a tous pour m'avoir eclairci
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
9 novembre 2007
1
arf, bah en fait nan djl, et BruNews, je reconnais mon tord, j'ai fait des test et j'hallucine, multiplication et divison de float et de double, les float sont un poil plus rapide, mais quasiment pas perseptible, et sinon cosf sur float est bien plus lent que cos sur des doubles =(

donc voila, j'avais tord, mais ce que je ne comprend pas, c'est que tout les bouquins de programmation de jeux video sont formels et tout ces gents sont d'accord pour dire que les calculs sur les floats sont plus rapide... je comprend pas

par contre djl, les cast reste tres couteux
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
que dois je faire alors, je fait beaucoup de cos/sin/atan sur beaucoup de float,
il vaut mieux que je passe aux double pour eviter les cast ou rester aux float pour economiser de la place(en fait la pace je m'en fou mais si c'est plus volumineux doit y avoir de la perte en bande passante et plus d'acces aux caches, non?)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Si float te suffit en precisin tu restes en float.
BruNews, ciao...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ok merci