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.
Rien n'est moins sûr. Le modèle d'exécution de python est bien différent de celui du C.
cat << EOF > /tmp/test_dec.py> from decimal import Decimal as D> a, mul = D('1.01'), D('1.000001')> for i in range(0, 100):> EOF
cat << EOF > /tmp/test_float.py>a, mul = 1.01, 1.000001>for i in range(0, 100):>EOFfor i in `seq 10000`
> doecho" a *= mul" >> /tmp/test_dec.py
> echo" a *= mul" >> /tmp/test_float.py
> done
Là, je fais 100 boucles avec 10_000 multiplication par boucles.
time python3 -c "for i in range(0, 100): pass";time python3 /tmp/test_dec.py ;time python3 /tmp/test_float.py
real 0m0,026s
user 0m0,016s
sys 0m0,012s
real 0m0,344s
user 0m0,268s
sys 0m0,032s
real 0m0,178s
user 0m0,172s
sys 0m0,004s
Le temps de la boucle est négligeable et le facteur est toujours de 2.
[^] # Re: Petit résumé et tests dans la réalité
Posté par kantien . En réponse au journal [Humour] vers un monde différent. Évalué à 4.
Rien n'est moins sûr. Le modèle d'exécution de python est bien différent de celui du C.
Là, je fais
100boucles avec10_000multiplication par boucles.Le temps de la boucle est négligeable et le facteur est toujours de
2.Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.