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

    Posté par . En réponse au journal [Humour] vers un monde différent. Évalué à 4.

    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):
    >EOF
    for i in `seq 10000`
    > do echo " 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.

    Python 3.5.3 (default, Jan 19 2017, 14:11:04) 
    [GCC 6.3.0 20170118] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> (0.344 - 0.026) / (0.178 - 0.026)
    2.0921052631578942

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.