• [^] # Re: Pour les perfs il y a aussi Psyco

    Posté par . En réponse au journal pypy de plus en plus rapide ?. Évalué à 4.

    Cela dit Psyco a été mis à jour post 2006 pour supporter Python 2.6. Il y a une même une branche initiée pour le support de 2.7 [1]. Dans le temps [2], il semblait obtenir de très bons résultats : trois fois plus rapide sans pour autant consommer davantage de mémoire. Malheureusement limité, comme vous le dîtes, à la plateforme x86.

    Unladen [3] semble bien ralenti malheureusement. Le dernier changement de code date d'août et la dernière sortie est intervenue fin 2009. Néanmoins, les auteurs ont rédigé en janvier une PEP [4] pour demander l'inclusion dans CPython. A ce propos, je vois que son statut est à accepted. Après recherche, il semblerait que les auteurs visent la fusion avec CPython 3.3 [5]. La sortie 2009Q3 promettait une CPython accéléré de l'ordre de x1.5 dans les tests pour une consommation mémoire un peu plus importante [6].

    Stackless [7] est un peu à part car il implémente le concept de tasklets, destiné à la concurrence. De fait, j'imagine qu'il faut des morceaux de code spécialement écrits avec / pour. Par ailleurs, pour ceux que cela intéresse, Greenlets [8] est un module Python standard qui permet d'utiliser les tasklets sans Stackless.

    Cython [9] me parait l'un des plus intéressants de la liste si l'on cherche les performances. Il permet, en employant le sous-langage typé, qui limite un peu le Python classique mais reste tout de même proche, au moins dans sa syntaxe, de concevoir des modules traduits en C. Ceux-ci apporteraient des gains très importants. Notons aussi Shedskin [10], un compilateur Python -> C++ dont les résultats sont tout aussi impressionnants (de 2 à 2000 fois plus rapide que CPython il parait). Là aussi, le but est de générer des modules Python avec du statiquement typé (de manière implicite) voire des exécutables indépendants.

    Bref, comme vous le disiez, les pistes ne manquent pas pour enlarge your Python.

    1 : [http://psyco.sourceforge.net/]
    2 : [http://shootout.alioth.debian.org/gp4/benchmark.php?test=all(...)]
    3 : [http://code.google.com/p/unladen-swallow/]
    4 : [http://www.python.org/dev/peps/pep-3146/]
    5 : [http://groups.google.com/group/unladen-swallow/msg/b966b7d5e(...)]
    6 : [http://code.google.com/p/unladen-swallow/wiki/Release2009Q3]
    7 : [http://www.stackless.com/]
    8 : [http://bitbucket.org/ambroff/greenlet]
    9 : [http://www.cython.org/]
    10: [http://code.google.com/p/shedskin/]