skone007
Messages postés166Date d'inscriptionmercredi 24 avril 2002StatutMembreDernière intervention23 juin 2009 10 janv. 2004 à 13:09
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 @+
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 10 janv. 2004 à 13:22
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
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 janv. 2004 à 14:49
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...
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 10 janv. 2004 à 15:20
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 janv. 2004 à 15:27
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...
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 10 janv. 2004 à 15:37
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
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 10 janv. 2004 à 16:06
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
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 10 janv. 2004 à 21:40
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?)