tutorial software programing powered payton org language español docs python performance ironpython

software - python programing



¿Por qué IronPython es más rápido que el intérprete oficial de Python? (5)

El código de Python no se compila en C, Python mismo está escrito en C e interpreta el bytecode de Python. CIL se compila en código máquina, por lo que se ve un mejor rendimiento cuando se usa IronPython.

De acuerdo a esto:

http://www.codeplex.com/IronPython/Wiki/View.aspx?title=IP20VsCPy25Perf&referringTitle=IronPython%20Performance

IronPython (Python para .Net) es más rápido que el Python normal (cPython) en la misma máquina. ¿Por qué es esto? Creo que el código C compilado siempre sería más rápido que el bytecode de la CLI equivalente.


Podría explicarse por esta notación en la página a la que vinculó:

Debido al almacenamiento en caché del sitio en el Dynamic Language Runtime, IronPython funciona mejor con más pasos de PyStone que el valor predeterminado


Tienes razón, C es mucho más rápido. Es por eso que en esos resultados CPython es el doble de rápido en lo que respecta a los diccionarios, que son casi puros C. Por otro lado, el código de Python no se compila, se interpreta. Las llamadas de función en CPython son terriblemente lentas. Pero en la otra mano:

TryRaiseExcept: +4478.9%

Ahora, es donde IronPython obtiene horriblemente mal.

Y luego, está este proyecto PyPy, con uno de los objetivos siendo el compilador Just-In-Time. Incluso hay un subconjunto de Python, llamado RPython (Python reducido) que se puede compilar estáticamente. Lo que por supuesto es mucho más rápido.


No estoy seguro de cómo se llega a la conclusión de que IronPython es más rápido que CPython. El enlace que publicas parece indicar que son buenos en cosas diferentes (como excepciones como se ha señalado).


Paseando su pregunta "¿Por qué?", ​​A "Ah, ¿en serio?" El "bueno en cosas diferentes" (Jason Baker) sigue adelante. Por ejemplo, cpython supera a IronPython en el tiempo de inicio.

c:/Python26/python.exe Hello.py c:/IronPython/ipy.exe Hello.py

Cpython ejecuta un mundo hello básico casi al instante (<100ms), donde IronPython tiene una sobrecarga de inicio de 4 o 5 segundos. Esto me molesta, pero no lo suficiente como para evitar que use IronPython.