HCJarod
Messages postés221Date d'inscriptionmardi 12 août 2003StatutMembreDernière intervention11 décembre 2008
-
11 févr. 2005 à 08:40
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 2009
-
13 févr. 2005 à 10:08
Slt, programmant actuellement sur une cible embarqué avec quelque
contrainte temps réel et accès concurents, je me demandai si quelqu'un
(ou quelqu'une pas de discrimination) connait des technique
d'optimisation de la division.
Je m'explique, je sais déja que si l'on divise pas une constante, mieux
vaux multiplier par l'inverse (multiplication env 20 cycles division 40
cycles). Pour les division par puissance de 2 c'est le décalage qui
interviens. Mais si je ne me trompe pas, il me semble me souvenir de
technique pour les autres cas (notaments pour les divisions par 2^n -1
).
Les factorisations pour diminuer le nombre de division c'est pas mal (ex bete : 2/5 +3/5 => (2+3)/5 )
Un lien ou n'importe quel info es la bien venues.
Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 11 févr. 2005 à 18:59
Ben apparemment tu connais déjà qq trucs.
Ya autre chose que tu as dit implicitement avec ta factorisation.
C'est qu'il faut tjs essayé de mettre la division à la fin d'une opération, ce qui revient à mettre toute une fraction ou équation au même dénominateur.
Ca permet ainsi d'éviter un cumul d'erreurs trop important, dû aux arrondis.
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 12 févr. 2005 à 00:17
tu peux également utiliser la fonction div (déclarée dans stdlib.h) qui
permet d'avoir le quotient et le reste en appelant qu'une fois
l'instruction div du cpu (qui calcul naturellement les deux). Peut êter
que le compilateur fais lui même cette optimisation dans certains cas
(appels succesifs de / et %).
TRES IMPORTANT: regarde dans la documentation du processeur cible, ce genre d'optimisations sont généralement énumèrées.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 13 févr. 2005 à 10:08
steve_clamage > C justement ce que HCJarod veut eviter, car je rappelle que l'instruction 'div' est tres couteuse en terme de cycles (56-70 cycles sur un pentium 4 !). Je te conseille, si tu connais un peu l'asm, d'apprendre les instructions de la FPU, et pis de te faire une fonction de division !