what traducidos son qué programacion los lenguajes lenguaje interprete interpretados interpretado entre diferencia compilados compilador compilado python jvm jython

python - traducidos - qué son los lenguajes compilados y los lenguajes interpretados



¿Por qué es Jython mucho más lento que CPython, a pesar de los avances de la JVM? (1)

Tenga en cuenta que IronPython fue iniciado por uno de los desarrolladores originales de Jython (Jim Huginin) en un intento de demostrar que .NET CLR era una plataforma deficiente para lenguajes dinámicos. Terminó demostrando que estaba equivocado y el núcleo de IronPython finalmente se convirtió en .NET Dynamic Language Runtime (lo que hace que otras implementaciones de lenguaje dinámico en .NET, como IronRuby, sean significativamente más fáciles de construir).

Entonces hay dos puntos principales de diferencia allí:

  • los desarrolladores .NET CLR originales se beneficiaron de la experiencia VM adicional de la industria en relación con las primeras versiones de la JVM, lo que les permite evitar problemas conocidos sin problemas de compatibilidad con versiones anteriores
  • lo mismo aplica para Jim al saber qué trampas evitar según su experiencia con Jython

Agregue una simple falta de recursos de desarrollo dedicados a Jython en relación con CPython e IronPython, y las prioridades de desarrollo de Jython que se enfocaron en llevarlo a paridad de características con versiones recientes de Python más que en optimizaciones de velocidad y es bastante comprensible que Jython se demore cuando llegó a la velocidad.

Dicho esto, Jython es similar tanto a CPython como a IronPython, ya que el uso de mejores algoritmos a menudo supera el peor rendimiento en microbenchmarks. La JVM / CLR también significa que bajar a Java o C # para componentes particulares es más fácil que bajar a una extensión C para CPython (aunque herramientas como Cython intentan cerrar esa brecha un poco).

No hay guerras de llama por favor. Es cierto que no soy partidario de Java, pero considero que la JVM es una máquina virtual bastante decente y bien optimizada. Está habilitado para JIT y muy cerca del denominador común de las arquitecturas de CPU predominantes. Supongo que el tiempo de ejecución CPython estaría más alejado del metal que el correspondiente tiempo de ejecución basado en JVM.

Si mis suposiciones son correctas, ¿podría alguien explicarme por qué Jython sufre una pérdida tan importante en el rendimiento en comparación con CPython? Mi suposición inicial fue que la JVM simplemente estaba diseñada para lenguajes estáticos, y era difícil darle una dinámica. Sin embargo, Clojure parece ser un contraejemplo para esa línea de argumentación.

Por otro lado, IronPython parece estar bien. Creo que el desarrollador principal de ambos proyectos era / son lo mismo, por lo que el argumento de que el diseño e implementación del código en uno es significativamente mejor que el otro no parece probable.

No puedo entender cuál es la razón exacta; cualquier ayuda será apreciada