La division !

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 - 11 févr. 2005 à 08:40
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 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+

3 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
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.

J'espère avoir répondu à ta question.

YOYO, @+.
YOYO
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
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.
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
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 !

Voila, ++

+2(p - n)
0
Rejoignez-nous