Cython Boost de Vitesse vs Convivialité

Je viens de Cython, alors que j'étais à la recherche de moyens pour optimiser le code Python. J'ai lu plusieurs posts sur stackoverflow, le python wiki et lire l'article "les Règles Générales pour l'Optimisation".

Cython est quelque chose qui saisit mon intérêt le plus; au lieu d'écrire du code C pour vous-même, vous pouvez choisir d'avoir d'autres types de données dans votre code python lui-même.

Ici est un idiot test, j'ai essayé,

#!/usr/bin/python
# test.pyx
def test(value):
    for i in xrange(value):
    i**2
    if(i==1000000):
        print i

test(10000001)

$ l'heure python test.custode

real    0m16.774s 
user    0m16.745s
sys     0m0.024s

$ temps cython test.custode

real    0m0.513s 
user    0m0.196s 
sys     0m0.052s

Maintenant, honnêtement, je suis abasourdi. Le code que j'ai utilisé ici est pur code python, et tout ce que j'ai changé, c'est l'interprète. Dans ce cas, si cython est-ce une bonne, alors pourquoi les gens utilisent encore le traditionnel de l'interpréteur Python? Existe-il des problèmes de fiabilité pour Cython?

  • Vous êtes en mesure de l'exécution d'un script Python vs le moment de la compilation de certains Cython code. Cela n'a pas de sens.
  • Quant à votre dernière remarque: c'est en gros ce que Julia est en train de faire: faire une optimisation de bas niveau code traducteur dans un ensemble cohérent de haut niveau en langage machine, et en montrant clairement cette intention depuis le début, de sorte qu'il est de mieux en mieux la traction, même si cela signifie que certaines haut niveau de fonctionnalités sont perdus dans la manière comme le typage dynamique.
  • N'est-ce pas un test de Python interpréter vs Cython copile et de l'exécution? Si cela a du sens.
InformationsquelleAutor | 2010-04-23