2010-01-12 7 views
2

Existe-t-il quelque chose d'équivalent à Cython pour IronPython? C'est, un moyen de compiler des fonctions simples en utilisant des annotations de type pour augmenter les performances? Je sais que l'un des avantages de IronPython est la possibilité d'écrire rapidement des fonctions dans quelque chose comme C# ou F #, puis de les importer, mais cela peut être un fardeau pour les utilisateurs qui ne connaissent que Python.Cython pour IronPython

Répondre

1

Hmm .. IronPython est already way faster que le bon vieux CPython :)

Cela dit, vous pouvez créer des fichiers binaires à partir de la source avec pyc (regarder dans <IronPython 2.6 Install Dir>\Tools\Scripts\pyc.py).

Il semble qu'il existe un certain nombre d'options de sortie, y compris la création d'une DLL. Je présume qu'il est possible de créer une DLL à partir d'un programme régulier .py (je n'ai jamais essayé cela). Je ne sais vraiment pas si cela va augmenter les performances au-delà de ce que vous avez déjà avec IronPython (cela améliore probablement le temps de démarrage).


Mise à jour:

Je viens de faire un peu de tests, et la conversion en exe me donne une vitesse de 3 à 5% vraiment marginal amélioration, et ne permet pas le temps de démarrage. Cela semblait être une bonne idée: |

+3

Je ne parle pas de CPython, je parle de Cython. Cython est compilé C traduit du code Pythonesque. Cela peut entraîner une augmentation de la vitesse de 500x sur CPython ou Ironpython pour le code numérique. Deuxièmement, il n'est tout simplement pas vrai que IronPython soit bien plus rapide que CPython: il est compétitif, parfois plus lent, parfois plus rapide. Le benchmark de Richards sur cette page est deux fois plus lent par exemple. – Tristan

+0

Désolé, je relis ma réponse et je peux voir à quel point ce serait un peu déroutant. Mon point était que IronPython est déjà compilé dynamiquement dans le code machine; Si vous convertissez en EXE, vous obtiendrez une image binaire DLR qui sera automatiquement compilée en code machine. Je ne peux pas imaginer que vous pouvez obtenir plus rapidement que cela (peut-être écrire une DLL en C# et en appelant cela serait plus rapide, mais vous écririez C#). Aussi - D'après mon expérience (avec mes programmes), IronPython est plus rapide que CPython si vous excluez le temps de démarrage (ce qui est beaucoup à exclure). – Seth

+0

Si vous voulez améliorer le temps de démarrage, vous devriez AOT bibliothèques IronPython. –