• # optims de base

    Posté par . En réponse au journal Optimisation de code C. Évalué à 3.

    deja pour les calculs :

    les calculs a virgules fixes sont excessivement plus rapide que les virgules flottantes.


    apres au niveau de l'archi :

    sur les archis MMXisante, le MMX permet de paralleliser en prime des operations a virgules fixes la ou il n'y a qu'une operation a virgule flottante

    il peut etre interessant d'utiliser certaines propriétés des pentium ( non MMX aussi ) qui ont une deuxieme UAL plus restreinte pour paralleliser les operations.

    je ne connais pas les specificités des Athlon, je ne peux donc en parler.

    et enfin reste une version MP du calcul.


    au niveau du code :

    un jmp réinitie le bus une partie du processeur ( pipeline de traitement des instructions ) donc il faut etaler les boucles.

    les conditions sont couteuses.

    un shift ( multiplication ou division par deux ) est bien moins couteux en cycle qu'un mul sur des entiers

    un and est mieux qu'un div pour obtenir le reste ( s'arranger avec 2^x-1 )

    avoir une approche differentielle du calcul permet dans une certaine mesure de se passer aussi des multiplication et division

    si tout cela est impossible, selon la precision demander une logarithme bien choisi peut aussi facilité les calculs

    faut aussi penser à aligner les données en memoire


    avec ca, tu peux avoir des gains assez phenomenaux ... mais il faut faire du benchmark et surtout une analyse sinon cela peut ne servir a rien.