ventajas velocidad programar programacion mas lenguajes lenguaje futuro español entre desventajas con comparacion c# java .net benchmarking

velocidad - python vs c# español



Java vs C#: ¿Hay algún estudio que compare su velocidad de ejecución? (4)

Ambos idiomas están evolucionando en términos de rendimiento. Al menos en 2013, el propio Joe Duffy de Microsoft blogged :

Java está más cerca [a C ++ en rendimiento] que C # gracias al excelente trabajo en máquinas virtuales similares a HotSpot que emplean pitcheo de código y asignación de stack.

Tomando todas las advertencias obvias relacionadas con los puntos de referencia y la comparación de puntos de referencia, ¿hay algún estudio (una serie de pruebas bien documentadas e imparciales) que compare la velocidad de ejecución promedio de los dos idiomas mencionados? Gracias


Aquí hay un buen estudio reciente sobre el tema:

Rendimiento numérico en C, C # y Java

Peter Sestoft ([email protected])

IT Universidad de Copenhague Dinamarca

Versión 0.9.1 de 2010-02-19

Resumen: Comparamos el rendimiento numérico de C, C # y Java en tres casos pequeños.

...


Esto podría invitar a una guerra de llama, pero bueno, es mi opinión ...
En primer lugar, si su sitio funciona demasiado lento, necesitará un mejor hardware. O más hardware y agregue equilibrio de carga a su sitio. Si eres Google, terminarás con grandes granjas de servidores con miles de máquinas que parecerán ofrecer un rendimiento increíblemente rápido, incluso si los sitios en sí están desarrollados en un lenguaje desactualizado.
La mayoría de los idiomas se han optimizado para obtener lo mejor de su hardware y superan a cualquier otro idioma en este entorno específico con una configuración específica. Comparar idiomas no tendrá mucho sentido porque existen miles de técnicas para optimizarlos aún más. Además, ¿cómo se mide el rendimiento para empezar?
Digamos que miras la velocidad de ejecución. Language X podría realizar alguna tarea 2 veces más rápido que el idioma Y. Sin embargo, el lenguaje Y está más optimizado para ejecutar múltiples subprocesos y podría servir 10 veces más usuarios que el idioma X en la misma cantidad de tiempo. Combine esto e Y sería mucho más rápido en un entorno cliente / servidor.
Pero luego instale X en un sistema optimizado con un sistema operativo que a X le gusta mucho, con hardware adicional, un gadzillion de bytes de memoria y espacio en disco y una docena de CPU y X vencerá Y nuevamente.
Entonces, ¿cuál es el valor de saber la velocidad de ejecución de los idiomas? O incluso la comparación de idiomas? ¿Cómo sabemos que los que crearon el informe no estaban predispuestos? ¿Cómo estamos seguros de que usaron la configuración más óptima para cada idioma? ¿Incluso escribieron el código más óptimo para ser probado? ¿Y cómo se comparan los resultados finales de todos modos? Tiempo de ejecución por usuario? O el tiempo total de ejecución?
Volver a los idiomas X e Y. X ejecuta una tarea en 2 segundos, pero solo admite 10 hilos al mismo tiempo, por lo tanto 10 usuarios. Y necesita 6 segundos pero sirve hasta 50 hilos al mismo tiempo. X sería más rápido por usuario. En dos segundos, X ha procesado 10 usuarios. En 6 segundos, X ha procesado 30 usuarios. Pero Y habría procesado 50 usuarios en ese momento. Por lo tanto, Y superaría a X cuando tiene muchos usuarios, mientras que X superaría a Y con una baja cantidad de usuarios. (O hilos). Sería interesante ver informes mencionando esto, ¿verdad?


La mejor comparación de la que tengo conocimiento es The Computer Language Benchmarks Game .

Compara velocidad, uso de memoria y tamaño de código fuente para (actualmente) 11 puntos de referencia en una gran cantidad de lenguajes de programación. Las implementaciones de los puntos de referencia son enviadas por los usuarios y hay mejoras continuas, por lo que las posiciones cambian un poco.

Todas las comparaciones se realizan en Linux, por lo que se mide C # / Mono y no C # / Microsoft.NET. Pero tengo la impresión de que esos dos son comparables en velocidad hoy en día.

Actualmente, Java está ganando velocidad, pero C # / Mono gana con el uso de la memoria. , pero tenga en cuenta que, por alguna razón, las implementaciones de Java tienen múltiples subprocesos, mientras que la mayoría de las implementaciones de C # / Mono tienen un solo subproceso.