2009-02-08 9 views
7

Je considère l'intégration d'IronPython comme un langage de script pour une application que j'écris. Donc, pour l'essayer, j'ai téléchargé IronPython 2.0 et j'ai lancé l'interpréteur interactif. Juste commencer le truc prend environ 5 secondes sur mon Intel Quad Core avec 6 Go de mémoire. Je peux difficilement imaginer à quel point cela serait retardé pour une machine moins puissante.Performance IronPython

Basé sur these benchmarks, il semble que les performances d'IronPython ne sont pas vraiment terriblement mauvaises. Ou est-ce? Ai-je mal configuré quelque chose lors de l'installation? Ou est-ce un problème avec l'interpréteur interactif?

Répondre

13

Les performances d'IronPython sont vraiment bonnes. La pénalité liée aux performances de démarrage que vous obtenez est liée à l'exécution .NET. Les applications .NET ont généralement un temps de démarrage lent car beaucoup d'assemblys sont chargés et certains d'entre eux (au moins certaines classes) sont compilés à la volée.

Ce comportement est attendu dans .NET. Les performances d'exécution réelles sont bien meilleures. Même les performances de démarrage peuvent être améliorées en précompilant l'assembly IronPython et en en plaçant une copie dans le cache GAC: global assembly de votre machine. Cela peut être fait en utilisant le gacutil.exe.

1

Le temps de démarrage et les performances de fonctionnement ne sont pas directement liés. Les applets Java ont obtenu la plupart de leur réputation de lenteur non pas parce que l'applet fonctionnait lentement, mais parce que cela prenait le temps d'exécution pour commencer. Si vous faites une application de bureau, je m'inquiéterais des performances de démarrage. Si votre code de serveur en cours d'exécution où le temps d'exécution est toujours en hausse, ce n'est pas un problème.

4

Vous pouvez également précompiler la bibliothèque standard fournie avec IronPython pour obtenir de meilleures performances de démarrage. Il y a un exemple de pyc.py qui peut le faire.

+1

Je viens d'essayer cela et j'obtiens un peu de performance _worse_. Aucune idée pourquoi. – Cameron

2

Le nombre de noyaux ne va pas faire beaucoup de différence de démarrage perf :)

démarrage est particulièrement lente sur un système d'exploitation 64 bits en raison des différences de performance entre le 32 bits et 64 bits frousse. Si vous utilisez un système d'exploitation 64 bits, mais ne pas besoin d'un processus 64 bits, effectuez les opérations suivantes:

  1. copie ipy.exe à ipy32.exe
  2. utilisation corflags.exe du SDK de Windows à marquer ipy32.exe comme un exécutable 32 bits en disant "corflags /32bit + ipy32.exe".

La version 32 bits devrait vous donner un démarrage beaucoup mieux - bien que loin d'être aussi bon que le démarrage de CPython. Mais c'est quelque chose sur lequel nous continuons de travailler.

1

Il y a des améliorations dans le temps de démarrage de l'interpréteur dans le code IronPython sur CodePlex. Bien que je voie encore des retards par rapport à CPython, il y a une amélioration significative.