• [^] # 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é à 5.

    c'est possible, et ça prend pas x50 tellement Python il est mauvais niveau perfos

    Tu verras une différence de perfo de l'ordre de x50 lorsque ta boucle python devra faire, à chaque tour, disons une dizaine d'appels à la lib C decimal, c'est à dire quand le coût de la boucle python sera devenue négligeable. Le bench qui consistait à n'exécuter qu'un appel à une lib C ne permet pas de mesurer ce qu'on souhaite mais plutôt le coût de la boucle python.

    Il y a aura eu, de toutes façons, quoique tu fasses, une multiplication par 50 des cycles nécessaires en interne pour finalement calculer les mêmes approximations dans 99.9999999999% des cas (pour 1000 milliards d'opérations sur des mantisses de 13 chiffres, en moyenne environ une seule concerne une opération exacte sur deux décimaux). C'est un gâchis énergétique pour une simple focalisation excessive sur l'une des approximations que fait, de toutes façons, la machine dans 99.9999999999% des cas.

    Etant donné que ni decimal, ni float, ne règlent le problème élémentaire 3 * 1/3 = 1, ni 7 * 1/7 = 1 ni etc..., les informaticiens ont fait le choix de la base 2, qui a l'avantage d'être parfaitement adapté aux machines classiques, donc plus efficace et moins énergivore.

    Si un jour chez Python, ils se mettaient à faire ça par défaut, il y aurait un impact majeur pour toutes les applications utilisant fortement float (traitement d'image, vidéo etc) pour lesquelles il n'y aurait aucun bénéfice sinon une division de perfs par 50 pour les plus gourmandes en calcul et par 2 ou 3 les autres. Côté client c'est donc presqu'à chaque fois totalement nul: perte de temps, d'énergie, et aucun bénéfice concret sur sa vidéo ou son image.

    Le seul cas intéressant serait pour des applications financières qui font de la virgule fixe ou quand on se sert de python comme une calculatrice. Pour cela, le module decimal python a été développé, qui gère de la base 10, c'est coûteux évidemment, mais si on a ce besoin spécifique, ça existe, dans d'autres langages aussi d'ailleurs.

    Du coup, y a aucun problème, il est urgent de ne rien toucher !

    Ensuite il te reste à comprendre la différence fondamentale qui reste entre écrire "float f=0.1" en C et "f=0.1" en Python pour finir de comprendre ce que j'essaie de dire depuis 400 posts déjà...

    Oui, j'ai effectivement besoin de comprendre (enfin de moins en moins je crois).