2009-11-07 12 views
12

Me gustaría dar las fuentes de lo que estoy diciendo, pero simplemente no las tengo, es algo que escuché.¿Cómo se compara la velocidad de Ironpython con otros lenguajes .net?

Una vez que un profesor de programación me dijo que algunos benchmarking de software hechos a .net vs Python en algunos artículos en particular dieron una relación de 5: 8 a favor de .NET. Ese fue su argumento a favor de que Python no sea mucho más lento que .NET

Aquí está la cosa, me gustaría probar IronPython ya que podría combinar el framework web que más conozco (asp.net) con el lenguaje Me gusta más (Python) y me preguntaba sobre la velocidad de los programas en asp.net en Python vs la velocidad de los programas en ASP.NET con VB.net o C#. ¿Hay algún benchmarking de software sobre esto?

Además, ¿no deberían ser similares las velocidades de IronPython en comparación con otros lenguajes .NET, ya que IronPython, a diferencia de Python, tiene que compilar con el código intermedio de .NET? ¿Alguien me puede aclarar sobre estos temas?

Saludos

+1

Cuando escribió un programa de referencia y lo ejecutó, ¿qué notó? ¿Qué características de .Net quieres usar? –

+0

No he escrito un programa de referencia para ello.Me pregunto si hay una diferencia notable en general, pero si depende demasiado de las funciones que utiliza, supongo que no las hay. Escribimos softwares administrativos generales para compañías regionales sin grandes demandas de tráfico y no estaba pensando en un proyecto en particular cuando pregunté. Es (muy) probable que no esté en el nivel técnico que tiene, pero he visto algunos puntos de referencia en Internet cuando en la mayoría de los artículos Python aparece como más lento que otros idiomas, y me pregunto si es lo mismo para Python que para IronPython en relación con .net Thxs para la respuesta – Pablo

+0

"depende demasiado de las funciones que utilice" siempre es cierto. Los puntos de referencia generales son inútiles. ¿Qué características particulares te interesan? ¿Qué le impide escribir un punto de referencia entre IPython y C# para esas características? –

Respuesta

9

Aquí hay dos enlaces interesantes con las comparaciones entre IronPython, CPython, y C# (entre otros):

  • CPython vs C# (Mono) benchmarks, basado en varios programas que se detallan en el sitio .
  • CPython vs IronPython benchmarks, basado en PyStone y PyBench, para las versiones 2.6.

Parece ser que hace lo que su profesor le dijo. Pero como sabes, depende mucho de lo que estés usando.

La diferencia se debe principalmente a la naturaleza dinámica de los objetos utilizados en Python, mientras que C# está fuertemente tipada. Entonces IronPython usa un nivel más (el DLR - Dynamic Language Runtime) además de lo que se ejecuta C# (el CLR - Common Language Runtime), para resolver esta diferencia.

normalmente odio citar los artículos de Wikipedia, pero esto es un buen punto de partida: http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

Ahora a volver a su proyecto, las actuaciones será probablemente más dependiente de sus algoritmos/heurística - ¿Cómo se consulta una base de datos, por ejemplo, que en el idioma. Si está familiarizado con un marco web y está contento con él, es una buena idea quedarse con el mismo entorno en lugar de obtener un posible porcentaje de algo que deberá dominar primero. No sería lo mismo si la aplicación fuera intensiva en CPU, por supuesto.

+1

"C# está fuertemente tipado". ¿Te refieres a "estáticamente estátipo"? O "declaraciones variables fuertemente tipadas"? El enlace de tipo de Python es bastante fuerte, pero sus variables son dinámicas. –

+0

Me refiero a declaraciones fuertemente tipadas, que por supuesto le permiten al compilador acercarse mucho más al resultado final en los ensambles que lo que Python puede lograr debido a su tipado de pato. – RedGlyph

+0

Lamentablemente, los puntos de referencia de CPython frente a IronPython se ejecutaron solo informando una ronda, o en algunos casos, definitivamente solo * ejecutando * una ronda, lo que los hace muy cuestionables. –

1

Puede habilitar el rastreo .net, que genera información de tiempo en la parte inferior de la página. Cree una aplicación en C#/.Net y una aplicación que use Python y observe las diferencias en el tiempo. Eso te dará una respuesta definitiva.

Sinceramente, creo que es mejor que solo use C#, es "más rápido" de desarrollar ya que el entorno VS está ahí para usted y se ejecutará más rápido ya que no tiene que usar el lenguaje dinámico de ejecución .

+0

Lo sé, pero lo que me atrae de Python es que permite usted para escribir menos código, además creo que no puede hacer esto en C# sin reescribir (aunque no del todo seguro) http://www.ironpythonresource.com/post/2008/08/23/IronPython-Dynamically-creating -objects-and-binding-them-to-a-form.aspx – Pablo

+0

¿Quizás en C# 4.0 con las nuevas características? – Pablo

+1

Como un lenguaje de tipado dinámico, Python generalmente es más rápido de desarrollar que C#. Si utilizas un IDE como Wing, con intellisense, etc. para Python, obtienes mucho de lo que Visual Studio tiene para ofrecer para C#. – fuzzyman

0

IronPython será considerablemente más lento que C#. Podría pensar que la comparación es muy aproximada entre CPython y C, pero con la brecha algo más pequeña.

Cuestiones relacionadas