• [^] # Re: Petit résumé et tests dans la réalité

    Posté par (site web personnel) . En réponse au journal [Humour] vers un monde différent. Évalué à 1.

    Et si tu lis cette conversation, tu verras que l'implementation Decimal (cdecimal) devient plus raisonnable pour un passage à default.

    Bof, on perd des dizaines de facteurs de performance (cf https://linuxfr.org/nodes/113338/comments/1725062 pour comparer un float*float et un decimal*decimal )
    Quand on noie le tout dans du python ça se voit un peu moins, mais c'est inutilement énergivore (souvent aux alentours de 50 fois plus de cycles) et ça n'a qu'un intérêt ultra limité vu que l'exactitude n'est effective que dans la proportion d'une opération sur 1000 milliards (pour une mantisse sur 13 chiffres).

    Les manipulations arithmétiques nécessaires pour traiter les décimaux sont beaucoup plus coûteuses en décimal qu'en binaire.
    Par exemple, les calculs nécessitent en permanence des multiplications et divisions par 10. En base 2, multiplier/diviser par 2 correspond à un seul shift (1 cycle d'horloge). Par contre, multiplier par 10 c'est le coût d'une vraie multiplication (6 cycles) et diviser par 10 coûte environ 12 cycles (grâce à la division magique par une constante connue du compilateur https://stackoverflow.com/questions/30790184/perform-integer-division-using-multiplication )