Ceci n’est pas un benchmark… 9


… mais quand même. Il va falloir sérieusement étudier le passage de nos sites à pypy.

$ pypy --version
Python 2.7.2 (1.8+dfsg-2, Feb 19 2012, 19:18:08)
[PyPy 1.8.0 with GCC 4.6.2]
 
$ date; pypy -c "for x in xrange(1000000000): pass"; date
mardi 9 juillet 2013, 12:30:58 (UTC+0200)
mardi 9 juillet 2013, 12:31:09 (UTC+0200)
 
$ python --version
Python 2.7.3
 
$ date; python -c "for x in xrange(1000000000): pass"; date
mardi 9 juillet 2013, 12:31:16 (UTC+0200)
mardi 9 juillet 2013, 12:32:49 (UTC+0200)

9 thoughts on “Ceci n’est pas un benchmark…

  • Recher

    Par rapport au blabla indiqué en “alt text” de l’image :

    Dans mon blog à moi, je mets les sources de toutes mes images dans le premier commentaire.

    C’est un peu chiant, faut s’y tenir, et comme l’internet change tout le temps, j’ai des liens de source qui meurt de temps en temps. C’est la seule solution que j’ai trouvé.

    Ça m’a permis de rajouter un truc bien (pour moi, pas pour les lecteurs). Le lien sur l’image elle-même mène vers la source de l’image, avec un intermédiaire publicitaire qui me rapporte quelques bouts de bitcoins.

    Dans le premier commentaire de l’article, je mets le lien direct vers la source, sans intermédiaire. Mais ce lien est non-cliquable.

    Si le lecteur ne veut pas se prendre de la pub dans la gueule, c’est possible, mais il doit faire l’effort de copier-coller le lien manuellement.

  • OPi

    Pour l’exemple de l’article, plus simple que l’usage de timeit et meilleur que l’usage de date, la commande time :

    time python -c "for x in xrange(1000000000): pass";

    Mais… cela n’est vraiment pas un benchmark !
    Outre le fait que le lancement de Python et la compilation sont incluse dans la durée du test qui par ailleurs est très petite, je me demande toujours lorsque je fais ce genre de truc la pertinence de mesurer un code qui ne fait rien. Est-ce que tout simplement Pypy ne zapperais pas la boucle, se rendant compte qu’elle est inutile ?

  • kontre

    Pypy c’est super cool, mais il y a des problèmes avec les extensions C, puisque l’api C est différente. Notamment, ça ne fonctionne pas avec numpy (mais ils y travaillent).
    Attention aussi, dans certains cas particuliers ça peut être plus lent que CPython.

    @0Pi: 13s pour sauter une boucle, c’est plutôt lent…

    @Recher:

    Si le lecteur ne veut pas se prendre de la pub dans la gueule, c’est possible, mais il doit faire l’effort de copier-coller le lien manuellement.

    Ou installer une extension firefox : https://addons.mozilla.org/fr/firefox/addon/text-link/ (entre autres)

  • Natim

    @Lujeni Je te conseille vivement de fuir gevent. C’est le mal. Si tu souhaites une alternative, passe à tornado comme ça tu pourras utiliser pypy directement.

    @kontre, un gros travail de port de certaines bibliothèque Python C a été fait notamment libxml et Imaging, mysql-python …

    Pour plus de vrai benchs : http://speed.pypy.org/

  • JohnMacLane

    “mais quand même. Il va falloir sérieusement étudier le passage de nos sites à pypy”

    Moi j’ai tout vu, je suis passé au Go, t’as les mêmes perfs qu’un Apache et tu déploies en 2 secondes et avec les go routines, les requêtes sont dispatchées sur les cores… Avec les structures et les interfaces, tu reproduis un comportement objet facilement. Il y a pas mal de libs pratiques pour le codage web (templating, routing…). Le système d’import est simplement nickel, le debug impeccable et la compilation rapide, gestion des arguments simple, gestion des logs simple…

    Quand tu relances Python, tu as l’impression que tu reviens au Basic ;) en performance…

    Mais ce qui me fait vraiment chier en Python c’est quand je dois packager…ça me dégoûte. 12 tutos différents, 12 méthodes différentes…bref le bordel, ils peuvent pas inventer un truc simple !

    Mais je crois que le pire actuellement c’est que tu as ta bite coincée entre une couille 2 et une couille 3…Résultat il te manque toujours une lib pour un projet ;) et c’est maintenant que les devs regardent ailleurs que Python…c’est ce que je remarque. Et puis quand les futurs proco auront 8, 12, 16, 32 cores, on va faire quoi avec Python ? Continuer à trouver des excuses et inventer des palliatifs pourris (gevent par exemple) ?

    Bon que ce soit clair, je suis allé vers Go car j’avais besoin de faire du pub/sub efficace, j’ai essayé du tornado, du gevent, du autobahn(twisted), du pyzmq…bref j’ai pas eu satisfaction niveau performance…j’ai essayé Go et j’ai pleuré tellement ça pousse mémé rapidement dans les orties.

    J’aime toujours Python car je l’utilise sur des projets réalisés avec Kivy (openGL) et pour générer des applications Android.

Leave a comment

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.