Telimektar's World

Aller au contenu | Aller au menu | Aller à la recherche

lundi, août 4 2008

De l'utilisation de Psyco

Si comme moi vous aimez faire du Python, vous avez sans doute remarqué que niveau vitesse, et en particulier niveau calcul pur, c'est loin d'être le pied.

Pour Danuve j'ai été amené à faire quelques recherches sur l'encapsulation de code C au sein de Python. Et là je croise ce qui est aujourd'hui devenu l'amour de ma vie :

Psyco, aucun rapport avec de l'encapsulation au final.

Psyco a pour but d'accélérer massivement la vitesse d'exécution d'un code Python.

Alors rajoutons quelques lignes après les import de notre main :

 try:
    import psyco
    psyco.full()
 except:
    pass

On essaie ici d'utiliser le module psyco, si celui ci ne peut pas être importé on passe comme si de rien n'était.

Et alors là...Un miracle, tout simplement THE miracle.

Danuve utilise actuellement deux algorithmes, Euler et Runge-Kutta 4, RK4 est plus précis mais plus gourmand niveau calcul.

Comparons sur 3 configurations :

  • Un seul oscillateur :
Algorithme utiliséC PythonC Python + PsycoGain de performance
Euler1.580.891.77
Runge-Kutta 43.361.532.19
  • Dix oscillateurs identiques
Algorithme utiliséC PythonC Python + PsycoGain de performance
Euler8.454.162.03
Runge-Kutta 419.836.203.19
  • Vingt oscillateurs identiques
Algorithme utiliséC PythonC Python + PsycoGain de performance
Euler16.007.892.03
Runge-Kutta 440.1910.993.65

Je vous laisse juger par vous même...

Avec un tel gain de performances, le projet d'implémentation du coeur de danuve en C risque de tomber à l'eau.

dimanche, avril 27 2008

Easter egg Python

En farfouillant dans python.org on trouve des choses amusantes, par exemple l'éxécution de ce petit morceau de code :

 $ python -c "import this"

Vous donnera quelques bons petits conseils :)

Bonne soirée à tous !